Rocking the enterprise with Ruby - RubyKaigi 2010

Rocking the Enterprise with 
Ruby 
Sudhindra Rao 
Munjal Budhabhatti 
© ThoughtWorks, 2010
Ruby in the Enterprise 
“Enterprise software is a system that is used to support a 
business and its growth.” 
© ThoughtWorks, 2010 2
Ruby in Enterprise 
• Domain 
• Technology and Delivery 
• Architecture 
• Integration with the Enterprise 
• OSS 
© ThoughtWorks, 2010 3
Understanding the problem domain 
• Server and network 
management 
• Location and Power 
management 
• Address management 
• Monitoring and Diagnosis 
• Customer Support 
• Back Office Support 
© ThoughtWorks, 2010 4
IP Automation 
• Limited address space with IPv4 
• IP Blocks management 
• Governing body compliance 
• Public, Private IPs 
• Public, Private Networks 
• IPv6 support 
© ThoughtWorks, 2010 5
DNS Automation 
• Huge database 
• Security concerns over routing 
• Legal implications 
• Accuracy 
• Systems support 
• Always on 
© ThoughtWorks, 2010 6
Network Device Manager 
• ruby DSL for network devices 
• Commission new devices 
• Intelligent command chains 
• Enhanced logging for debug support 
© ThoughtWorks, 2010 7
Technology 
© ThoughtWorks, 2010 8 
• Ruby 
– ease of use and refactoring 
– natural language syntax to support varied applications 
– allows iterative addition to features 
– expertise - ThoughtWorks and Rackspace 
– Rails - naturally built for web applications 
• Fast ramp-up for developers 
• Spike for first small project - achieved goal at 40% cost of 
off-the-shelf product
Delivering Continuously 
© ThoughtWorks, 2010 9 
• Discipline 
– Identify focused user base 
– Strict control on features 
– Delivering frequently - 2 weeks 
– Small testable features 
– Consistent code coverage 
• Feedback 
– Adapt architecture 
– RESTful interface
Architecture 
• Remodelling to adapt to usage changes 
© ThoughtWorks, 2010 10 
– Physical Space Project 
• Combined concepts of Physical and Virtual world 
• Data collection, usage, and consistency issues 
– Redesign 
• Identify User groups and Patterns 
• Split the domain 
• Changing Domain abstractions 
• Distributed transactions 
• Pluginization to reuse functionality
Design 
• REST Engine 
• Web based UI - Consumer 
• Rails templates and 
resource_full 
• Distributed testing 
• Selenium suite 
Consumers 
App App 
Engine Engine Engine 
© ThoughtWorks, 2010 11
Pluginized Models 
© ThoughtWorks, 2010 12 
def setup_load_paths 
extra_paths = Dir.glob(plugin_root + "/app/*/") 
ActiveSupport::Dependencies.load_paths.unshift(*extra_paths) 
$:.unshift(*extra_paths) 
end 
if should_enhance_rake_tasks? 
Rake::Task["db:drop"].enhance(["#{plugin_name}:db:drop"]) 
Rake::Task["db:create"].enhance(["#{plugin_name}:db:create"]) 
end 
Rake::Task["db:migrate"].enhance(["#{plugin_name}:db:migrate"]) 
App
Integrating with the Enterprise 
• Comprehensive reporting 
• Repurpose with API 
• Workflow engine 
• Enterprise Message System 
Core api - Integration Layer 
IP NDM ENV NET DNS 
© ThoughtWorks, 2010 13
Workflow Engine 
• Ruote - DSL based workflow engine 
• RESTful services orchestration and Rich abstractions 
• Example 
Ruote Engine 
IP NDM LOC NET DNS 
© ThoughtWorks, 2010 14
Enterprise Message System 
• RabbitMQ - a highly reliable, available, and scalable 
EMS 
• Decoupling when Integrating with external systems 
• Distributed transactions 
IP NDM LOC NET DNS 
© ThoughtWorks, 2010 15
OpenSource 
© ThoughtWorks, 2010 16 
• resource_full 
• distributed testing 
• cc monitor
resource_full 
• Fully compliant ActiveResource Built on ActionController 
• RESTful parameter queryability, paging, etc. 
• template for making engines REST easy 
• template for REST consumers 
• Typical functionality Out of the box 
• Extend to return different stream types - json, xml 
• http://github.com/bguthrie/resource_full 
© ThoughtWorks, 2010 17
resource_full 
class UsersController < ResourceFull::Base 
identified_by :username, :unless => lambda { |id| id =~ /^[0-9]+$/ } 
queryable_with :city, :state, :from => :address 
queryable_with :name, :columns => [:first_name, :last_name] 
queryable_with :email_address, :fuzzy => true 
queryable_with :is_active, :scope => :active 
orderable_by :city, :from => :address 
responds_to :html 
responds_to :xml, :only => [:read, :update] 
© ThoughtWorks, 2010 18 
end 
class AddressesController < ResourceFull::Base 
nests_within :users 
queryable_with :city, :state 
end
Distributed Testing 
Server start/stop, run tests, collect reports 
© ThoughtWorks, 2010 19 
Consumer 
application 
Service 
engine 
Service 
engine 
Service 
engine
Distributed Testing 
#Plugin code 
require rails_root("/vendor/plugins/integration/lib/integration/helper") 
include Blackbox::Integration::Helper 
start_dependencies( :app1, :engine1, :location_engine ) 
#spec across engine and application 
it "should find all data_centers" do 
data_center1, data_center2 = engine_drb.setup(<<-DATA, __FILE__, __LINE__) 
data_center1, data_center2 = create! :data_center, :quantity => 2 
[data_center1, data_center2] 
DATA 
DataCenter.find(:all).should == [ data_center1, data_center2 ] 
© ThoughtWorks, 2010 20 
end
Distributed Testing 
• DRb based integration testing 
• Integrating multiple engines to run a test that spans the 
domain 
• Unit tests/functional tests to ensure quality of each engine 
• Domain level testing 
• Functional testing 
• Transaction testing 
© ThoughtWorks, 2010 21
CC Monitor 
© ThoughtWorks, 2010 22 
• Simple dashboard 
for all your builds 
• Ramaze 
application 
• Instant Feedback 
• Cruise, Bamboo, 
http://github.com/betarelease/cc_monitor
Secrets of Success 
• Continuous testing and refactoring 
• Managed Scope and timeline 
• Ruby 
• Enterprise Ready?? 
© ThoughtWorks, 2010 23
Photo Courtesy 
• http://royal.pingdom.com/2008/01/24/when-data-center-cabling-• http://www.flickr.com/photos/chrisdag/865724585/ 
• http://www.flickr.com/photos/digitalslurp/208731724/ 
• http://www.flickr.com/photos/tim_d/184018928/ 
© ThoughtWorks, 2010 24
Questions? 
© ThoughtWorks, 2010 25
ありがとうございます。 
sudhindra.rao@thoughtworks.com 
munjal@thoughtworks.com 
@sudhindraRao 
@munjal 
© ThoughtWorks, 2010
1 of 26

Recommended

Build A Website on AWS for Your First 10 Million Users by
Build A Website on AWS for Your First 10 Million UsersBuild A Website on AWS for Your First 10 Million Users
Build A Website on AWS for Your First 10 Million UsersAmazon Web Services
6.5K views74 slides
Amazon EC2:Masterclass by
Amazon EC2:MasterclassAmazon EC2:Masterclass
Amazon EC2:MasterclassAmazon Web Services
4.2K views97 slides
(DVO401) Deep Dive into Blue/Green Deployments on AWS by
(DVO401) Deep Dive into Blue/Green Deployments on AWS(DVO401) Deep Dive into Blue/Green Deployments on AWS
(DVO401) Deep Dive into Blue/Green Deployments on AWSAmazon Web Services
54.4K views79 slides
DevOps on AWS: Deep Dive on Infrastructure as Code - Toronto by
DevOps on AWS: Deep Dive on Infrastructure as Code - TorontoDevOps on AWS: Deep Dive on Infrastructure as Code - Toronto
DevOps on AWS: Deep Dive on Infrastructure as Code - TorontoAmazon Web Services
3.9K views75 slides
AWS APAC Webinar Week - AWS MySQL Relational Database Services Best Practices... by
AWS APAC Webinar Week - AWS MySQL Relational Database Services Best Practices...AWS APAC Webinar Week - AWS MySQL Relational Database Services Best Practices...
AWS APAC Webinar Week - AWS MySQL Relational Database Services Best Practices...Amazon Web Services
3.5K views55 slides
Deep Dive on Amazon S3 (May 2016) by
Deep Dive on Amazon S3 (May 2016)Deep Dive on Amazon S3 (May 2016)
Deep Dive on Amazon S3 (May 2016)Julien SIMON
668 views52 slides

More Related Content

What's hot

AWS CloudFormation Best Practices by
AWS CloudFormation Best PracticesAWS CloudFormation Best Practices
AWS CloudFormation Best PracticesAmazon Web Services
27.9K views49 slides
ENT313 Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum E... by
ENT313 Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum E...ENT313 Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum E...
ENT313 Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum E...Amazon Web Services
511 views86 slides
Automating Management of Amazon EC2 Instances with Auto Scaling - March 2017 ... by
Automating Management of Amazon EC2 Instances with Auto Scaling - March 2017 ...Automating Management of Amazon EC2 Instances with Auto Scaling - March 2017 ...
Automating Management of Amazon EC2 Instances with Auto Scaling - March 2017 ...Amazon Web Services
5.5K views69 slides
AWS April 2016 Webinar Series - S3 Best Practices - A Decade of Field Experience by
AWS April 2016 Webinar Series - S3 Best Practices - A Decade of Field ExperienceAWS April 2016 Webinar Series - S3 Best Practices - A Decade of Field Experience
AWS April 2016 Webinar Series - S3 Best Practices - A Decade of Field ExperienceAmazon Web Services
1.8K views54 slides
Deployment and Management on AWS:
 A Deep Dive on Options and Tools by
Deployment and Management on AWS:
 A Deep Dive on Options and ToolsDeployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and ToolsDanilo Poccia
1.7K views69 slides
(WEB302) Best Practices for Running WordPress on AWS | AWS re:Invent 2014 by
(WEB302) Best Practices for Running WordPress on AWS | AWS re:Invent 2014(WEB302) Best Practices for Running WordPress on AWS | AWS re:Invent 2014
(WEB302) Best Practices for Running WordPress on AWS | AWS re:Invent 2014Amazon Web Services
14.2K views55 slides

What's hot(20)

ENT313 Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum E... by Amazon Web Services
ENT313 Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum E...ENT313 Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum E...
ENT313 Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum E...
Automating Management of Amazon EC2 Instances with Auto Scaling - March 2017 ... by Amazon Web Services
Automating Management of Amazon EC2 Instances with Auto Scaling - March 2017 ...Automating Management of Amazon EC2 Instances with Auto Scaling - March 2017 ...
Automating Management of Amazon EC2 Instances with Auto Scaling - March 2017 ...
Amazon Web Services5.5K views
AWS April 2016 Webinar Series - S3 Best Practices - A Decade of Field Experience by Amazon Web Services
AWS April 2016 Webinar Series - S3 Best Practices - A Decade of Field ExperienceAWS April 2016 Webinar Series - S3 Best Practices - A Decade of Field Experience
AWS April 2016 Webinar Series - S3 Best Practices - A Decade of Field Experience
Amazon Web Services1.8K views
Deployment and Management on AWS:
 A Deep Dive on Options and Tools by Danilo Poccia
Deployment and Management on AWS:
 A Deep Dive on Options and ToolsDeployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Danilo Poccia1.7K views
(WEB302) Best Practices for Running WordPress on AWS | AWS re:Invent 2014 by Amazon Web Services
(WEB302) Best Practices for Running WordPress on AWS | AWS re:Invent 2014(WEB302) Best Practices for Running WordPress on AWS | AWS re:Invent 2014
(WEB302) Best Practices for Running WordPress on AWS | AWS re:Invent 2014
Amazon Web Services14.2K views
Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW... by Amazon Web Services
Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW...Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW...
Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW...
Amazon Web Services5.2K views
Stack Mastery: Create and Optimize Advanced AWS CloudFormation Templates - DE... by Amazon Web Services
Stack Mastery: Create and Optimize Advanced AWS CloudFormation Templates - DE...Stack Mastery: Create and Optimize Advanced AWS CloudFormation Templates - DE...
Stack Mastery: Create and Optimize Advanced AWS CloudFormation Templates - DE...
Amazon Web Services1.4K views
Agile Deployment using Git and AWS Elastic Beanstalk by Amazon Web Services
Agile Deployment using Git and AWS Elastic BeanstalkAgile Deployment using Git and AWS Elastic Beanstalk
Agile Deployment using Git and AWS Elastic Beanstalk
Amazon Web Services2.3K views
(BAC404) Deploying High Availability and Disaster Recovery Architectures with... by Amazon Web Services
(BAC404) Deploying High Availability and Disaster Recovery Architectures with...(BAC404) Deploying High Availability and Disaster Recovery Architectures with...
(BAC404) Deploying High Availability and Disaster Recovery Architectures with...
(ARC302) Running Lean Architectures: Optimizing for Cost Efficiency by Amazon Web Services
(ARC302) Running Lean Architectures: Optimizing for Cost Efficiency(ARC302) Running Lean Architectures: Optimizing for Cost Efficiency
(ARC302) Running Lean Architectures: Optimizing for Cost Efficiency
Amazon Web Services5.1K views
Enterprise summit – architecting microservices on aws final v2 by Amazon Web Services
Enterprise summit – architecting microservices on aws   final v2Enterprise summit – architecting microservices on aws   final v2
Enterprise summit – architecting microservices on aws final v2
Amazon Web Services4.3K views
Creating Your Virtual Data Center: VPC Fundamentals and Connectivity Options by Amazon Web Services
Creating Your Virtual Data Center: VPC Fundamentals and Connectivity OptionsCreating Your Virtual Data Center: VPC Fundamentals and Connectivity Options
Creating Your Virtual Data Center: VPC Fundamentals and Connectivity Options
Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum Efficiency by Amazon Web Services
Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum EfficiencyDeploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum Efficiency
Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum Efficiency
Amazon Web Services2.9K views
Monitoring Containers at Scale - September Webinar Series by Amazon Web Services
Monitoring Containers at Scale - September Webinar SeriesMonitoring Containers at Scale - September Webinar Series
Monitoring Containers at Scale - September Webinar Series
Amazon Web Services3.6K views

Similar to Rocking the enterprise with Ruby - RubyKaigi 2010

2014.07.11 biginsights data2014 by
2014.07.11 biginsights data20142014.07.11 biginsights data2014
2014.07.11 biginsights data2014Wilfried Hoge
2.2K views21 slides
Stay productive_while_slicing_up_the_monolith by
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithMarkus Eisele
592 views38 slides
Optimize with Open Source by
Optimize with Open SourceOptimize with Open Source
Optimize with Open SourceEDB
933 views26 slides
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ... by
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...IndicThreads
683 views33 slides
Optymalizacja środowiska Open Source w celu zwiększenia oszczędności i kontroli by
Optymalizacja środowiska Open Source w celu zwiększenia oszczędności i kontroliOptymalizacja środowiska Open Source w celu zwiększenia oszczędności i kontroli
Optymalizacja środowiska Open Source w celu zwiększenia oszczędności i kontroliEDB
1K views43 slides
MySQL & Oracle Linux Keynote at Open Source India 2014 by
MySQL & Oracle Linux Keynote at Open Source India 2014MySQL & Oracle Linux Keynote at Open Source India 2014
MySQL & Oracle Linux Keynote at Open Source India 2014Sanjay Manwani
1.2K views50 slides

Similar to Rocking the enterprise with Ruby - RubyKaigi 2010(20)

2014.07.11 biginsights data2014 by Wilfried Hoge
2014.07.11 biginsights data20142014.07.11 biginsights data2014
2014.07.11 biginsights data2014
Wilfried Hoge2.2K views
Stay productive_while_slicing_up_the_monolith by Markus Eisele
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
Markus Eisele592 views
Optimize with Open Source by EDB
Optimize with Open SourceOptimize with Open Source
Optimize with Open Source
EDB933 views
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ... by IndicThreads
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...
IndicThreads683 views
Optymalizacja środowiska Open Source w celu zwiększenia oszczędności i kontroli by EDB
Optymalizacja środowiska Open Source w celu zwiększenia oszczędności i kontroliOptymalizacja środowiska Open Source w celu zwiększenia oszczędności i kontroli
Optymalizacja środowiska Open Source w celu zwiększenia oszczędności i kontroli
EDB1K views
MySQL & Oracle Linux Keynote at Open Source India 2014 by Sanjay Manwani
MySQL & Oracle Linux Keynote at Open Source India 2014MySQL & Oracle Linux Keynote at Open Source India 2014
MySQL & Oracle Linux Keynote at Open Source India 2014
Sanjay Manwani1.2K views
Open shift and docker - october,2014 by Hojoong Kim
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
Hojoong Kim10K views
Docker for the enterprise by Bert Poller
Docker for the enterpriseDocker for the enterprise
Docker for the enterprise
Bert Poller798 views
Postgres for the Future by EDB
Postgres for the FuturePostgres for the Future
Postgres for the Future
EDB1.5K views
Effective admin and development in iib by m16k
Effective admin and development in iibEffective admin and development in iib
Effective admin and development in iib
m16k1K views
Introduction to Apache Mesos and DC/OS by Steve Wong
Introduction to Apache Mesos and DC/OSIntroduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OS
Steve Wong339 views
The Fastest Way to Redis on Pivotal Cloud Foundry by VMware Tanzu
The Fastest Way to Redis on Pivotal Cloud FoundryThe Fastest Way to Redis on Pivotal Cloud Foundry
The Fastest Way to Redis on Pivotal Cloud Foundry
VMware Tanzu3.4K views
Lessons From Deploying Redis On Azure For Enterprise Customers: Carl Dacosta,... by Redis Labs
Lessons From Deploying Redis On Azure For Enterprise Customers: Carl Dacosta,...Lessons From Deploying Redis On Azure For Enterprise Customers: Carl Dacosta,...
Lessons From Deploying Redis On Azure For Enterprise Customers: Carl Dacosta,...
Redis Labs248 views
Optimizing Open Source for Greater Database Savings & Control by EDB
Optimizing Open Source for Greater Database Savings & ControlOptimizing Open Source for Greater Database Savings & Control
Optimizing Open Source for Greater Database Savings & Control
EDB949 views
Connecting to Data from Windows Phone 8 VSLive! Redmond 2013 by Woodruff Solutions LLC
Connecting to Data from Windows Phone 8 VSLive! Redmond 2013Connecting to Data from Windows Phone 8 VSLive! Redmond 2013
Connecting to Data from Windows Phone 8 VSLive! Redmond 2013
在小學有效運用雲端電腦以促進電子學習(第一節筆記) by Tsz Wing Chu
在小學有效運用雲端電腦以促進電子學習(第一節筆記)在小學有效運用雲端電腦以促進電子學習(第一節筆記)
在小學有效運用雲端電腦以促進電子學習(第一節筆記)
Tsz Wing Chu505 views
.NET Cloud-Native Bootcamp- Los Angeles by VMware Tanzu
.NET Cloud-Native Bootcamp- Los Angeles.NET Cloud-Native Bootcamp- Los Angeles
.NET Cloud-Native Bootcamp- Los Angeles
VMware Tanzu450 views
OpenStack at the speed of business with SolidFire & Red Hat by NetApp
OpenStack at the speed of business with SolidFire & Red Hat OpenStack at the speed of business with SolidFire & Red Hat
OpenStack at the speed of business with SolidFire & Red Hat
NetApp1.7K views

Recently uploaded

iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...Bernd Ruecker
50 views69 slides
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Safe Software
373 views86 slides
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPool by
Extending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPoolExtending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPool
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPoolShapeBlue
56 views10 slides
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... by
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...ShapeBlue
114 views12 slides
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R... by
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...ShapeBlue
105 views15 slides
Data Integrity for Banking and Financial Services by
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial ServicesPrecisely
76 views26 slides

Recently uploaded(20)

iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by Bernd Ruecker
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker50 views
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by Safe Software
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Safe Software373 views
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPool by ShapeBlue
Extending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPoolExtending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPool
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPool
ShapeBlue56 views
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... by ShapeBlue
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
ShapeBlue114 views
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R... by ShapeBlue
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
ShapeBlue105 views
Data Integrity for Banking and Financial Services by Precisely
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial Services
Precisely76 views
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti... by ShapeBlue
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
ShapeBlue69 views
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P... by ShapeBlue
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
ShapeBlue120 views
DRBD Deep Dive - Philipp Reisner - LINBIT by ShapeBlue
DRBD Deep Dive - Philipp Reisner - LINBITDRBD Deep Dive - Philipp Reisner - LINBIT
DRBD Deep Dive - Philipp Reisner - LINBIT
ShapeBlue110 views
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ... by ShapeBlue
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
ShapeBlue121 views
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive by Network Automation Forum
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLiveAutomating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... by James Anderson
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
James Anderson142 views
Business Analyst Series 2023 - Week 4 Session 7 by DianaGray10
Business Analyst Series 2023 -  Week 4 Session 7Business Analyst Series 2023 -  Week 4 Session 7
Business Analyst Series 2023 - Week 4 Session 7
DianaGray10110 views
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue68 views
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online by ShapeBlue
KVM Security Groups Under the Hood - Wido den Hollander - Your.OnlineKVM Security Groups Under the Hood - Wido den Hollander - Your.Online
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online
ShapeBlue154 views
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by Priyanka Aash
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOs
Priyanka Aash103 views
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue by ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueCloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
ShapeBlue63 views
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue by ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueElevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
ShapeBlue149 views

Rocking the enterprise with Ruby - RubyKaigi 2010

  • 1. Rocking the Enterprise with Ruby Sudhindra Rao Munjal Budhabhatti © ThoughtWorks, 2010
  • 2. Ruby in the Enterprise “Enterprise software is a system that is used to support a business and its growth.” © ThoughtWorks, 2010 2
  • 3. Ruby in Enterprise • Domain • Technology and Delivery • Architecture • Integration with the Enterprise • OSS © ThoughtWorks, 2010 3
  • 4. Understanding the problem domain • Server and network management • Location and Power management • Address management • Monitoring and Diagnosis • Customer Support • Back Office Support © ThoughtWorks, 2010 4
  • 5. IP Automation • Limited address space with IPv4 • IP Blocks management • Governing body compliance • Public, Private IPs • Public, Private Networks • IPv6 support © ThoughtWorks, 2010 5
  • 6. DNS Automation • Huge database • Security concerns over routing • Legal implications • Accuracy • Systems support • Always on © ThoughtWorks, 2010 6
  • 7. Network Device Manager • ruby DSL for network devices • Commission new devices • Intelligent command chains • Enhanced logging for debug support © ThoughtWorks, 2010 7
  • 8. Technology © ThoughtWorks, 2010 8 • Ruby – ease of use and refactoring – natural language syntax to support varied applications – allows iterative addition to features – expertise - ThoughtWorks and Rackspace – Rails - naturally built for web applications • Fast ramp-up for developers • Spike for first small project - achieved goal at 40% cost of off-the-shelf product
  • 9. Delivering Continuously © ThoughtWorks, 2010 9 • Discipline – Identify focused user base – Strict control on features – Delivering frequently - 2 weeks – Small testable features – Consistent code coverage • Feedback – Adapt architecture – RESTful interface
  • 10. Architecture • Remodelling to adapt to usage changes © ThoughtWorks, 2010 10 – Physical Space Project • Combined concepts of Physical and Virtual world • Data collection, usage, and consistency issues – Redesign • Identify User groups and Patterns • Split the domain • Changing Domain abstractions • Distributed transactions • Pluginization to reuse functionality
  • 11. Design • REST Engine • Web based UI - Consumer • Rails templates and resource_full • Distributed testing • Selenium suite Consumers App App Engine Engine Engine © ThoughtWorks, 2010 11
  • 12. Pluginized Models © ThoughtWorks, 2010 12 def setup_load_paths extra_paths = Dir.glob(plugin_root + "/app/*/") ActiveSupport::Dependencies.load_paths.unshift(*extra_paths) $:.unshift(*extra_paths) end if should_enhance_rake_tasks? Rake::Task["db:drop"].enhance(["#{plugin_name}:db:drop"]) Rake::Task["db:create"].enhance(["#{plugin_name}:db:create"]) end Rake::Task["db:migrate"].enhance(["#{plugin_name}:db:migrate"]) App
  • 13. Integrating with the Enterprise • Comprehensive reporting • Repurpose with API • Workflow engine • Enterprise Message System Core api - Integration Layer IP NDM ENV NET DNS © ThoughtWorks, 2010 13
  • 14. Workflow Engine • Ruote - DSL based workflow engine • RESTful services orchestration and Rich abstractions • Example Ruote Engine IP NDM LOC NET DNS © ThoughtWorks, 2010 14
  • 15. Enterprise Message System • RabbitMQ - a highly reliable, available, and scalable EMS • Decoupling when Integrating with external systems • Distributed transactions IP NDM LOC NET DNS © ThoughtWorks, 2010 15
  • 16. OpenSource © ThoughtWorks, 2010 16 • resource_full • distributed testing • cc monitor
  • 17. resource_full • Fully compliant ActiveResource Built on ActionController • RESTful parameter queryability, paging, etc. • template for making engines REST easy • template for REST consumers • Typical functionality Out of the box • Extend to return different stream types - json, xml • http://github.com/bguthrie/resource_full © ThoughtWorks, 2010 17
  • 18. resource_full class UsersController < ResourceFull::Base identified_by :username, :unless => lambda { |id| id =~ /^[0-9]+$/ } queryable_with :city, :state, :from => :address queryable_with :name, :columns => [:first_name, :last_name] queryable_with :email_address, :fuzzy => true queryable_with :is_active, :scope => :active orderable_by :city, :from => :address responds_to :html responds_to :xml, :only => [:read, :update] © ThoughtWorks, 2010 18 end class AddressesController < ResourceFull::Base nests_within :users queryable_with :city, :state end
  • 19. Distributed Testing Server start/stop, run tests, collect reports © ThoughtWorks, 2010 19 Consumer application Service engine Service engine Service engine
  • 20. Distributed Testing #Plugin code require rails_root("/vendor/plugins/integration/lib/integration/helper") include Blackbox::Integration::Helper start_dependencies( :app1, :engine1, :location_engine ) #spec across engine and application it "should find all data_centers" do data_center1, data_center2 = engine_drb.setup(<<-DATA, __FILE__, __LINE__) data_center1, data_center2 = create! :data_center, :quantity => 2 [data_center1, data_center2] DATA DataCenter.find(:all).should == [ data_center1, data_center2 ] © ThoughtWorks, 2010 20 end
  • 21. Distributed Testing • DRb based integration testing • Integrating multiple engines to run a test that spans the domain • Unit tests/functional tests to ensure quality of each engine • Domain level testing • Functional testing • Transaction testing © ThoughtWorks, 2010 21
  • 22. CC Monitor © ThoughtWorks, 2010 22 • Simple dashboard for all your builds • Ramaze application • Instant Feedback • Cruise, Bamboo, http://github.com/betarelease/cc_monitor
  • 23. Secrets of Success • Continuous testing and refactoring • Managed Scope and timeline • Ruby • Enterprise Ready?? © ThoughtWorks, 2010 23
  • 24. Photo Courtesy • http://royal.pingdom.com/2008/01/24/when-data-center-cabling-• http://www.flickr.com/photos/chrisdag/865724585/ • http://www.flickr.com/photos/digitalslurp/208731724/ • http://www.flickr.com/photos/tim_d/184018928/ © ThoughtWorks, 2010 24

Editor's Notes

  1. Munjal Different stakeholders - inventory, sales, marketing
  2. Sudhindra
  3. Munjal What does a data center contain? How do you find the sever in a data center? Rackspace is know for it’s support. How do you find what is wrong in it? You don’t want your best support How to charge your bandwidth To addresses these concerns we will talk about three key applications and we will leave out the obvious such as Location and Power Management
  4. Munjal Complicated algorithm cause ip has limited address space with 32 bit addressing IP Block management - Migrating customers for expansion A customer might use different networks: private, public, backup Supporting complications of ipv6 - mysql doesn’t directly support a datatype for ipv6. hence ipv6 translation
  5. Sudhindra
  6. data scraping and custom script execution conditional and for loops Configure, Diagnose, Status Intelligent command chains - Configurable to build command structures to support various hardware and OS combinations
  7. Sudhindra allows iterative addition to features: LDAP/edir example
  8. Munjal Faster feedback by frequent delivery History of more than 90% code coverage. We are not stuck on a number but it definitely helps. Evolve architecture. Migrating from a monolith huge application to smaller REST enabled apps.
  9. Sudhindra
  10. Sudhindra
  11. Sudhindra
  12. Munjal Reporting to other departments and data ware house Orchestration of RESTful services for rich behavior We will look at WE and EMS
  13. Munjal What is one click? Instead of set of commands in different applications and keeping a note in a piece of paper, have one click do a task. 4.5 days to 18 minutes
  14. Munjal Decoupling with external systems such as Core, Cloud Distributed Trx
  15. allowed twisting and splitting applications allowed merging domain concepts via modularization allowed for simple design - thus making it amenable to change availability of libraries to support enterprise needs
  16. ardei ga-toe gozaimasu