SlideShare ist ein Scribd-Unternehmen logo
1 von 26
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

Weitere ähnliche Inhalte

Was ist angesagt?

AWS CloudFormation Best Practices
AWS CloudFormation Best PracticesAWS CloudFormation Best Practices
AWS CloudFormation Best PracticesAmazon 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...
ENT313 Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum E...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 ...
Automating Management of Amazon EC2 Instances with Auto Scaling - March 2017 ...Amazon Web Services
 
AWS April 2016 Webinar Series - S3 Best Practices - A Decade of Field Experience
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
 
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
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
 
(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
(WEB302) Best Practices for Running WordPress on AWS | AWS re:Invent 2014Amazon 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...
Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW...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...
Stack Mastery: Create and Optimize Advanced AWS CloudFormation Templates - DE...Amazon Web Services
 
Agile Deployment using Git and AWS Elastic Beanstalk
Agile Deployment using Git and AWS Elastic BeanstalkAgile Deployment using Git and AWS Elastic Beanstalk
Agile Deployment using Git and AWS Elastic BeanstalkAmazon 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...
(BAC404) Deploying High Availability and Disaster Recovery Architectures with...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
(ARC302) Running Lean Architectures: Optimizing for Cost EfficiencyAmazon Web Services
 
Masterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormationMasterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormationAmazon Web Services
 
Enterprise summit – architecting microservices on aws final v2
Enterprise summit – architecting microservices on aws   final v2Enterprise summit – architecting microservices on aws   final v2
Enterprise summit – architecting microservices on aws final v2Amazon Web Services
 
Creating Your Virtual Data Center: VPC Fundamentals and Connectivity Options
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 OptionsAmazon Web Services
 
Storage with Amazon S3 and Amazon Glacier
Storage with Amazon S3 and Amazon GlacierStorage with Amazon S3 and Amazon Glacier
Storage with Amazon S3 and Amazon GlacierAmazon Web Services
 
Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum Efficiency
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 EfficiencyAmazon Web Services
 
Real-time Data Processing Using AWS Lambda
Real-time Data Processing Using AWS LambdaReal-time Data Processing Using AWS Lambda
Real-time Data Processing Using AWS LambdaAmazon Web Services
 
Monitoring Containers at Scale - September Webinar Series
Monitoring Containers at Scale - September Webinar SeriesMonitoring Containers at Scale - September Webinar Series
Monitoring Containers at Scale - September Webinar SeriesAmazon Web Services
 

Was ist angesagt? (20)

AWS CloudFormation Best Practices
AWS CloudFormation Best PracticesAWS CloudFormation Best Practices
AWS CloudFormation Best Practices
 
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...
ENT313 Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum E...
 
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 ...
Automating Management of Amazon EC2 Instances with Auto Scaling - March 2017 ...
 
AWS April 2016 Webinar Series - S3 Best Practices - A Decade of Field Experience
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
 
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
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
 
(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
(WEB302) Best Practices for Running WordPress on AWS | AWS re:Invent 2014
 
Amazon EC2 Masterclass
Amazon EC2 MasterclassAmazon EC2 Masterclass
Amazon EC2 Masterclass
 
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...
Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW...
 
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...
Stack Mastery: Create and Optimize Advanced AWS CloudFormation Templates - DE...
 
Agile Deployment using Git and AWS Elastic Beanstalk
Agile Deployment using Git and AWS Elastic BeanstalkAgile Deployment using Git and AWS Elastic Beanstalk
Agile Deployment using Git and AWS Elastic Beanstalk
 
(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...
(BAC404) Deploying High Availability and Disaster Recovery Architectures with...
 
(ARC302) Running Lean Architectures: Optimizing for Cost Efficiency
(ARC302) Running Lean Architectures: Optimizing for Cost Efficiency(ARC302) Running Lean Architectures: Optimizing for Cost Efficiency
(ARC302) Running Lean Architectures: Optimizing for Cost Efficiency
 
Masterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormationMasterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormation
 
Enterprise summit – architecting microservices on aws final v2
Enterprise summit – architecting microservices on aws   final v2Enterprise summit – architecting microservices on aws   final v2
Enterprise summit – architecting microservices on aws final v2
 
Creating Your Virtual Data Center: VPC Fundamentals and Connectivity Options
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
 
Storage with Amazon S3 and Amazon Glacier
Storage with Amazon S3 and Amazon GlacierStorage with Amazon S3 and Amazon Glacier
Storage with Amazon S3 and Amazon Glacier
 
Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum Efficiency
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
 
Real-time Data Processing Using AWS Lambda
Real-time Data Processing Using AWS LambdaReal-time Data Processing Using AWS Lambda
Real-time Data Processing Using AWS Lambda
 
Monitoring Containers at Scale - September Webinar Series
Monitoring Containers at Scale - September Webinar SeriesMonitoring Containers at Scale - September Webinar Series
Monitoring Containers at Scale - September Webinar Series
 
AWSome Day Leeds
AWSome Day Leeds AWSome Day Leeds
AWSome Day Leeds
 

Ähnlich wie Rocking the enterprise with Ruby - RubyKaigi 2010

2014.07.11 biginsights data2014
2014.07.11 biginsights data20142014.07.11 biginsights data2014
2014.07.11 biginsights data2014Wilfried Hoge
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithMarkus Eisele
 
Optimize with Open Source
Optimize with Open SourceOptimize with Open Source
Optimize with Open SourceEDB
 
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 ...
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...IndicThreads
 
Optymalizacja środowiska Open Source w celu zwiększenia oszczędności i kontroli
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
 
MySQL & Oracle Linux Keynote at Open Source India 2014
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
 
Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8Woodruff Solutions LLC
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014Hojoong Kim
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterpriseBert Poller
 
Postgres for the Future
Postgres for the FuturePostgres for the Future
Postgres for the FutureEDB
 
Effective admin and development in iib
Effective admin and development in iibEffective admin and development in iib
Effective admin and development in iibm16k
 
Introduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OSIntroduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OSSteve Wong
 
The Fastest Way to Redis on Pivotal Cloud Foundry
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 FoundryVMware Tanzu
 
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,...
Lessons From Deploying Redis On Azure For Enterprise Customers: Carl Dacosta,...Redis Labs
 
Optimizing Open Source for Greater Database Savings & Control
Optimizing Open Source for Greater Database Savings & ControlOptimizing Open Source for Greater Database Savings & Control
Optimizing Open Source for Greater Database Savings & ControlEDB
 
Connecting to Data from Windows Phone 8 VSLive! Redmond 2013
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 2013Woodruff Solutions LLC
 
DevOps and Cloud at NI
DevOps and Cloud at NIDevOps and Cloud at NI
DevOps and Cloud at NIErnest Mueller
 
在小學有效運用雲端電腦以促進電子學習(第一節筆記)
在小學有效運用雲端電腦以促進電子學習(第一節筆記)在小學有效運用雲端電腦以促進電子學習(第一節筆記)
在小學有效運用雲端電腦以促進電子學習(第一節筆記)Tsz Wing Chu
 
.NET Cloud-Native Bootcamp- Los Angeles
.NET Cloud-Native Bootcamp- Los Angeles.NET Cloud-Native Bootcamp- Los Angeles
.NET Cloud-Native Bootcamp- Los AngelesVMware Tanzu
 
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
OpenStack at the speed of business with SolidFire & Red Hat NetApp
 

Ähnlich wie Rocking the enterprise with Ruby - RubyKaigi 2010 (20)

2014.07.11 biginsights data2014
2014.07.11 biginsights data20142014.07.11 biginsights data2014
2014.07.11 biginsights data2014
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
 
Optimize with Open Source
Optimize with Open SourceOptimize with Open Source
Optimize with Open Source
 
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 ...
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...
 
Optymalizacja środowiska Open Source w celu zwiększenia oszczędności i kontroli
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
 
MySQL & Oracle Linux Keynote at Open Source India 2014
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
 
Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterprise
 
Postgres for the Future
Postgres for the FuturePostgres for the Future
Postgres for the Future
 
Effective admin and development in iib
Effective admin and development in iibEffective admin and development in iib
Effective admin and development in iib
 
Introduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OSIntroduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OS
 
The Fastest Way to Redis on Pivotal Cloud Foundry
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
 
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,...
Lessons From Deploying Redis On Azure For Enterprise Customers: Carl Dacosta,...
 
Optimizing Open Source for Greater Database Savings & Control
Optimizing Open Source for Greater Database Savings & ControlOptimizing Open Source for Greater Database Savings & Control
Optimizing Open Source for Greater Database Savings & Control
 
Connecting to Data from Windows Phone 8 VSLive! Redmond 2013
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
 
DevOps and Cloud at NI
DevOps and Cloud at NIDevOps and Cloud at NI
DevOps and Cloud at NI
 
在小學有效運用雲端電腦以促進電子學習(第一節筆記)
在小學有效運用雲端電腦以促進電子學習(第一節筆記)在小學有效運用雲端電腦以促進電子學習(第一節筆記)
在小學有效運用雲端電腦以促進電子學習(第一節筆記)
 
.NET Cloud-Native Bootcamp- Los Angeles
.NET Cloud-Native Bootcamp- Los Angeles.NET Cloud-Native Bootcamp- Los Angeles
.NET Cloud-Native Bootcamp- Los Angeles
 
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
OpenStack at the speed of business with SolidFire & Red Hat
 

Kürzlich hochgeladen

Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 

Kürzlich hochgeladen (20)

Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 

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

Hinweis der Redaktion

  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