Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Devops architecture


Published on

Sample Devops Architecture Design

Published in: Engineering

Devops architecture

  1. 1. Devops Architecture By Ojasvi Jagtap
  2. 2. Agenda • Devops Introduction • Devops Infrastructure • Automation • Devops Workflow with CI-CD-CD • Devops Architecture • Cost based analysis
  3. 3. Devops Introduction
  4. 4. Devops • What is DevOps? Devops = Automation + Continuous Improvement + Co-ordination • Devops key work areas are, - Infrastructure creation and management. - Automation - Workflow creation and maintenance - Co-ordination between teams.
  5. 5. Continuous Improvement with Devops Communicate/Co- ordinate with teams Discover bottlenecks/ improvement areas / Optimization areas / refinement scope Fix and automate discovered areas Test automation Integrate with Devops workflow
  6. 6. Infrastructure
  7. 7. Devops Infrastructure Organizations Infrastructure can be categorize into below three high level categories. IT Infrastructure • VCS (Git/Stash) • JIRA • Code review Tool (Gerrit) • Repository Manager(Artifactory) • Authentication Management server(LDAP) • Database • …….. Build Infrastructure • Platform build servers • Servers to run code coverage/ test frameworks which needs access to source code. • …… Test Infrastructure • Deployment test • Acceptance test • Sanity test • Functional test • …..
  8. 8. GIT Jira Code Review Tool Production staging area Artifactory I T I N F R A An IT Infrastructure should have  High Security ( Has sensitive data – > Source code + org data)  100% Uptime  High availability  High Performance  More robust An IT Infrastructure is recommended to be hosted (Considering high data sensitivity)  On Premise ( Procure/lease H/W) virtualized machines.  On Private Cloud On premise Infra Setup
  9. 9. Build Servers Test servers having source code B U I L D I N F R A Build Infrastructure should have  High Security (It host source code)  High Performance  Easily Reproducible  Highly available  High uptime  More robust  Less complex Build Infrastructure can be  Created run time dynamically (Devops says “Treat your infrastructure as a code”)  Or Assigned Dedicated VMs (Traditional Approach - Fixed infa) On Premise + Private Cloud containerized Infra Setup Build Infrastructure recommended to host  On Premise ( Procure/lease H/W) virtualized machines.  On Private Cloud  And use containerization Configuration management tools
  10. 10. Test Servers (Sanity/Functional, Acceptance etc ) Test deployment platform T E S T I N F R A Test Infrastructure has  Less security issue (does not host source code)  High Performance  Easily Reproducible  Highly available  High uptime  More robust  Less complex Test Infrastructure can be  Created run time dynamically (On Demand infra, infrastructure as a code)  Assigned Dedicated VMs (Fixed infa) On Cloud containerized Infra Setup Test Infrastructure recommended to host  On Public Cloud  Use containerization  Use cloud platforms Configuration management tools
  11. 11. Infrastructure Hosting
  12. 12. On Premise Infrastructure (Virtualization) Hypervisors like VMware, HyperV, KVM, Xen etc. Market Share • Magic Quadrant • Figure 1. Magic Quadrant for x86 Server Virtualization Infrastructure • Source: Gartner (August 2016)
  13. 13. Cloud Services (IaaS) Cloud Providers like Amazon Web Services (AWS), Windows Azure, Google Compute Engine, Rackspace Open Cloud, and IBM SmartCloud Enterprise etc Market Share • Magic Quadrant • Figure 1. Magic Quadrant for Cloud Infrastructure as a Service, Worldwide • Source: Gartner (August 2016) Costing Sample
  14. 14. Automation
  15. 15. Automation Success rate of Devops is highly depend on the automation percentage. More you automate, more you go close to Devops…. 1) Automated Infrastructure management. 2) Automated Builds. 3) Automated Tests. (Unit test, Coverage test, Functional test, Sanity tests etc) 4) Automated Deployment.
  16. 16. Workflow
  17. 17. Devops Workflows Continuous Integration Continuous Delivery Continuous Deployment
  18. 18. Continuous Integration (CI)
  19. 19. What is Continuous Integration “Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible “ -Martin Fowler
  20. 20. Why Continuous Integration? • Make the whole process from check-in to release more efficient • Automate more, shorten development cycle, release faster! • Quickly identify check-ins that break builds or cause unit test failures • Find more defects early in the software cycle • Finding and fixing defects early and quickly is inexpensive in the long run • Debugging and investigating defects later on takes time and resources that could otherwise be used on new development
  21. 21. Why Jenkins ?  Its free open source system.  Jenkins is a highly configurable.  Supported by over 400 plugins - SCM, Testing, Notifications, Reporting, Artifact Saving, Triggers, External Integration, Jenkins administration.  There is a large support community and thorough documentation.  There are additional development communities which are providing more support and flexibility to Jenkins.  It’s easy to write plugins  You can fix, if you find anything wrong with Jenkins.  Jenkins work very well with build tools like Ant, Maven, and Gradle etc.  Using different means you can communicate with Jenkins. Web based GUI Command line interface Rest API  You can also get help from third-party vendors to run your Jenkins. They offers extra features to manage your Jenkins. They also provides cloud-based solutions to run a Jenkins instance Cloudbees - ShiningPanda - CI Tools • Jenkins • Teamcity • Travis • Bamboo • Circle CI
  22. 22. Continuous Delivery (CD)
  23. 23. What is Continuous Delivery • Continuous Delivery (CD) is the natural extension of Continuous Integration: an approach in which teams ensure that every change to the system is releasable. In CD teams keep producing valuable software in short cycles and ensure that the software can be reliably released at any time. It is used in software development to automate and improve the process of software delivery. • Continuous Delivery doesn't mean every change is deployed to production all the time, It means that every change is proven to be deployable and of releasable quality at any time.
  24. 24. Core Tools of CI/CD • Use of Source / Version Control • CI Tool like Jenkins • Configuration management tools like Ansible, Vagrant etc • Build and Test Infrastructure • Automated Build • Automated Tests • Automated Deployment
  25. 25. Common CI/CD Workflow
  26. 26. Continuous Deployment (CD)
  27. 27. What is Continuous Deployment • Continuous deployment is the next extension of continuous delivery, every change that passes the automated tests is deployed to production automatically. Continuous deployment should be the goal of most companies that are not constrained by regulatory or other requirements. • Continuous Deployment is a software development practice in which every code change goes through the entire pipeline and is put into production, automatically, resulting in many production deployments every day. • With Continuous Delivery your software is always release-ready, yet the timing of when to push it into production is a business decision, and so the final deployment is a manual step. With Continuous Deployment, any updated working version of the application is automatically pushed to production. Continuous Deployment mandates Continuous Delivery, but the opposite is not required.
  28. 28. Continuous Delivery Vs Deployment  You need to decide scope of your Devops workflow automation.  Continuous deployment is more suitable for the web based application release cycles where it requires to deploy new version as soon as it is available.  For products which does not require frequent deployment, and release time is more than a month, in that case you can automate deploy but can trigger deployment manually.
  29. 29. Architecture Design
  30. 30. Continuous Delivery Pipeline Architecture
  31. 31. Continuous Deployment Pipeline Architecture
  32. 32. Cost Based Tool Analysis
  33. 33. Sample 1 Low Cost Setup using Open source / free Tools Infrastructure • OpenStack / Trial versions of AWS/Azur / google cloud • Dockers, Kubernetes • Vagrant, Ansible • Version Control – GITHub • Code Review – Gerrit • Bug Tracker – MantisBT • Repository management tool – Artifactory trial version, docker hub • Web server – Nginix • Monitoring tools – Elasticsearch, Logstash, and Kibana (ELK stack) , Nagios Build • Build Tools – Make, Ant, Maven • CI Tool – Jenkins • Configuration management tools – Ansible, Vagrant Test • Static Analysis(code quality) - SonarQube • Unit test framework – Junit • Java Code Coverage – JaCoCo • Acceptance test framework(BDD) - Cucumber • Test framework for web applications – Selenium • PaaS for Deployment Testing – Cloud foundry
  34. 34. Sample 2 Medium cost setup combining Open source / free Tools + Proprietary Tools Infrastructure • lease/procure hardware •VMWare,HyperV,KVM,XEN •AWS, Azur, Google – licensed version •Dockers, Kubernetes •Vagrant, Ansible •Version Control – Setup Git server •Code Review – Gerrit •Bug Tracker – Jira •Repository management tool – Artifactory licensed version •Web server – Nginix •Monitoring tools – Elasticsearch, Logstash, and Kibana (ELK stack) , Nagios, splunk Build •Build Tools – Make, Ant, Maven •CI Tool – Jenkins/ CloudBee Jenkins •Configuration management tools – Ansible, Puppet, Chef •Provisioning tool- Vagrant Test •Static Analysis(code quality) - SonarQube •Unit test framework – Junit •Java Code Coverage – JaCoCo, clover •Acceptance test framework(BDD) - Cucumber •Test framework for web applications – Selenium •PaaS for Deployment Testing – Cloud foundry
  35. 35. Thank You