Path to continuous delivery

Post on 14-Apr-2017

331 views 1 download

Transcript of Path to continuous delivery

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!