continuous delivery in enterprise agile ncr 2014 new delhi
TRANSCRIPT
Continuous Delivery in Enterprise
anirudh bhatnagar@anirudh_bh
Amazon’s web infrastructure guru James Hamilton uses Facebook’s recently released energy data to make an educated guess for how many servers
Facebook now has: potentially 180,000. That’s up from an estimated 30,000 in the winter of 2009, and 60,000 by the Summer of 2010.
google has more than one million servers
10 releases per day!
● 3 engineers● over 14 million users● no hardware● +100 instances on Amazon EC2
- competition - Reduce Time to Market - Increasing users and traffic. - Huge amount of servers on cloud. - Zero downtime. - Huge data - Cost!More Servers, More Releases, More Data!
Need of the hour!
FASTER, EFFICIENT, ERROR-FREE, AUTOMATED DELIVERY OF
SOFTWARE
Introducing Continuous Delivery
From Idea to Product
agile methodologies
From the beginning!
Clean testable code.Use of tools like ant, maven.Unit test coverage.Code Quality.
Source Control Management
Branching strategy and tools
Continuous Integration
Automated testing
Automated Functional and acceptance Testing.
But what about Release?
Definition of done
Committed and Compiled Unit TestedDeployed on QA/UATAutomated Functional Test for acceptance testing
Early Feedback
Introduce Dev/QA/UAT environment early in the project
Automated Deployment
Build pipelines
t makes every part of the process of building, deploying, testing, and releasing software visible to everybody involved, aiding collaboration.
Increases visibility of each step.Early feedback.Automate deploy and release any version to any environment.
Sample Jenkins Build pipeline
Provisioning and On demand Infrastructure
Configuration Management
● How soon can you write this script?● How maintainable is it?● Can you write test cases for it?● Can you have versioning?● Can you have reusability?● Risk????● Idempotency
Infrastructure as codeEvolving from Scripts to code
"a flexible model for reuse by enabling users to model infrastructure as code to easily and consistently configure and deploy infrastructure across any platform.
Create a blueprint of your infrastructure that enables you to build or rebuild, automatically in minutes or hours – not weeks or months."
Tools of the game
What is Chef?
Chef is a configuration management tool.Using its cookbooks and recipes we can provisions VMs, environments.
Community maintained code, almost everything is prebuilt (cookbooks and recipes), need not reinvent the wheel, just modify as per the need.
Cloud Support : EC2$ knife ec2 server create "role[Demo] -N "demo.example.net" -i ami -3e02f257
Production
Deployment tool
Impediments
Silos, departments and Corporates
1 : Inside the team
The Division Wall!
The Dev world
Write CodeWrite Unit Test Cases
The Ops WorldIT buyingInstallation of server hardware and OSConfiguration of servers, networks, storage, etc…Monitoring of serversRespond to outagesIT securityManaging phone systems, networkChange controlBackup and disaster recovery planningManage active directoryAsset tracking
Software deploymentsApplication support
Developer vs IT Operations
Bridging the gap- devOps!
its a culture... its a movement.. Started as devOps days in Belgium in 2009.
Developers interested in cloud, clusters, servers, deployments, databases learn to write code to maintain them.
Ops people evolve and start developing the code to maintain infrastructure.
And they are all in one same dev team trying to achieve one goal!
Collaboration -> Best practices
Ops learn from developers - > Coding principles,managed code, versioning.
Dev learn from Ops -> Insights of environment and deployments, their problems.
Introducing Mr. DevOps
Mr. Sacha Noam Baron CohenDesignation : Senior DevOps Engineer
2. Outside the team
But, the Management?
The boss is always right!
The long wait for approvals...
Open source vs Proprietary!
Business Involvement
Case Study : Implementing Continuous Delivery for a big Retail Company
Building a PAAS solution for service orchestration for services like Payment,Fraud Check,Fulfillment.
Technology : ESB MuleDeployed on : EC2 and Cloud hubBuild tools: Jenkins, Maven, JGit plugin,SCM : GitArtifact repository : NexusLogging : Elastic search , LogStash with Kibana System Monitoring : Icinga.Test Automation: -Functional Testing : JBehave + Selenium -Performance /Load Testing : JMeterConfiguration Management : Puppet
Team Structure1 Architect3 developers2 devOps1 Automation QA1 BA / Product Owner1 Scrum Master1 person from business acting as BA/support
Delivery Components
Repositories and Release Management
Configuration Management ( Puppet)
Jenkins : Build Pipelines
Logging and Dashboard: Logstash, ElasticSearch with Kibana
Build Radiators
System Monitoring : Icinga
Continuous Delivery Maturity Model
picture courtesy : xebiaLabs
Thanks!