54
Path to Continuous Delivery anirudh bhatnagar @anirudh_bh

Path to continuous delivery

Embed Size (px)

Citation preview

Page 1: Path to continuous delivery

Path to Continuous Delivery

anirudh bhatnagar @anirudh_bh

Page 2: Path to continuous delivery

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

Page 3: Path to continuous delivery

- 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!

Page 4: Path to continuous delivery

Need of the hour!

FASTER, EFFICIENT, ERROR-FREE, AUTOMATED DELIVERY OF

SOFTWARE

Page 5: Path to continuous delivery

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.

Page 6: Path to continuous delivery

Introducing Continuous Delivery

Page 7: Path to continuous delivery

From Idea to Product

Page 8: Path to continuous delivery

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!

Page 9: Path to continuous delivery

Every change starts from the first step

- Clean Code - Refactoring - OO Design Principles

Page 10: Path to continuous delivery

Code Quality Check points Code Quality - SONAR, PMD, FindBugs,etc.

Page 11: Path to continuous delivery

Unit Testing , TDD ,BDD

Page 12: Path to continuous delivery

Mocking

Page 13: Path to continuous delivery

Source Control Management

Branching strategy and tools

Page 14: Path to continuous delivery

Continuous Integration

Page 15: Path to continuous delivery

Managing Data Automated Process: -Inmemory databases -Rollback Scripts -Backups

Page 16: Path to continuous delivery

Automated testing Automated Functional and acceptance Testing.

Page 17: Path to continuous delivery

Early feedback Environments Need replica of Production Environments early in the sprint, to deploy and test

Page 18: Path to continuous delivery

Dependency on External Systems Assume everything will fail

Page 19: Path to continuous delivery

end to end automation

Page 20: Path to continuous delivery

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.

Page 21: Path to continuous delivery

Sample Jenkins Build pipeline

Page 22: Path to continuous delivery

Automated Deployment

Page 23: Path to continuous delivery

Blue Green Deployments

Page 24: Path to continuous delivery

Taking it to the next level !

Page 25: Path to continuous delivery

Provisioning and On demand Infrastructure

Page 26: Path to continuous delivery

Infrastructure

Page 27: Path to continuous delivery

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

Page 28: Path to continuous delivery

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."

Page 29: Path to continuous delivery

Tools of the game

Page 30: Path to continuous delivery

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.

Page 31: Path to continuous delivery

Cloud Support : EC2 $ knife ec2 server create "role[Demo] -N "demo.example.net" -i ami -3e02f257

Page 32: Path to continuous delivery

Production

Deployment tool

Page 33: Path to continuous delivery

Impediments

Page 34: Path to continuous delivery

Silos, departments and Corporates

Page 35: Path to continuous delivery

The Division Wall!

Page 36: Path to continuous delivery

The Dev world Write Code Write Unit Test Cases

Page 37: Path to continuous delivery

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

Page 38: Path to continuous delivery

Developer vs IT Operations

Page 39: Path to continuous delivery

Bridging the gap- devOps!

Page 40: Path to continuous delivery

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!

Page 41: Path to continuous delivery
Page 42: Path to continuous delivery

picture courtesy : xebiaLabs

Page 43: Path to continuous delivery

Case Study : Implementing Continuous Delivery for a big Retail Company

Page 44: Path to continuous delivery

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

Page 45: Path to continuous delivery

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

Page 46: Path to continuous delivery

Delivery Components

Page 47: Path to continuous delivery

Repositories and Release Management

Page 48: Path to continuous delivery

Configuration Management ( Puppet)

Page 49: Path to continuous delivery

Jenkins : Build Pipelines

Page 50: Path to continuous delivery

Logging and Dashboard: Logstash, ElasticSearch with Kibana

Page 51: Path to continuous delivery

Build Radiators

Page 52: Path to continuous delivery

System Monitoring : Icinga

Page 53: Path to continuous delivery

Questions and Feedback?

Page 54: Path to continuous delivery

Thanks!