Upload
anirudh-bhatnagar
View
332
Download
1
Embed Size (px)
Citation preview
Path to Continuous Delivery
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
Forrester Research survey
A recent Forrester Research survey of Fortune 1000 companies indicates that 58% of IT leaders in their companies place faster delivery of IT services in their top 3 priorities. Yet, only 12% can deliver high quality results fast enough.
Introducing Continuous Delivery
From Idea to Product
Definition of done ● Quality Code Compiled and Unit Tested. ● Deployed on an environment IDENTICAL to
actual environment as much as possible. ● Meeting ALL the Acceptance Criterias and
functionalities. ● Good to Go Live in ONE CLICK!
Every change starts from the first step
- Clean Code - Refactoring - OO Design Principles
Code Quality Check points Code Quality - SONAR, PMD, FindBugs,etc.
Unit Testing , TDD ,BDD
Mocking
Source Control Management
Branching strategy and tools
Continuous Integration
Managing Data Automated Process: -Inmemory databases -Rollback Scripts -Backups
Automated testing Automated Functional and acceptance Testing.
Early feedback Environments Need replica of Production Environments early in the sprint, to deploy and test
Dependency on External Systems Assume everything will fail
end to end automation
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
Automated Deployment
Blue Green Deployments
Taking it to the next level !
Provisioning and On demand Infrastructure
Infrastructure
Configuration Management
● How soon can you write this script? ● How maintainable is it? ● Can the cross functional teams understand them? ● Can you have versioning? ● Can you have reusability? ● Risk???? ● Idempotency
Infrastructure as 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
The Division Wall!
The Dev world Write Code Write Unit Test Cases
The Ops World Installation of server hardware and OS Configuration of servers, networks, storage, etc… Monitoring of servers Respond to outages IT security Managing network Change control Backup and disaster recovery planning
Developer vs IT Operations
Bridging the gap- devOps!
its a cultural change 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!
picture courtesy : xebiaLabs
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 Mule Deployed on : EC2 and Cloud hub Build tools: Jenkins, Maven, JGit plugin, SCM : Git Artifact repository : Nexus Logging : Elastic search , LogStash with Kibana System Monitoring : Icinga. Test Automation: -Functional Testing : JBehave + Selenium -Performance /Load Testing : JMeter Configuration Management : Puppet
Team Structure 1 Architect 3 developers 2 devOps 1 Automation QA 1 BA / Product Owner 1 Scrum Master 1 person from business acting as BA / PO
Delivery Components
Repositories and Release Management
Configuration Management ( Puppet)
Jenkins : Build Pipelines
Logging and Dashboard: Logstash, ElasticSearch with Kibana
Build Radiators
System Monitoring : Icinga
Questions and Feedback?
Thanks!