The document provides an introduction to DevOps, which promotes collaboration between development and operations teams. It discusses models used before DevOps, including the waterfall model and agile methodology. While agile methodology improved on waterfall by allowing for continuous development and testing, a lack of collaboration between teams remained an issue. DevOps aims to address this by having development and operations engineers work together throughout the entire lifecycle from design to deployment. This is intended to result in faster delivery of features to customers while also improving stability. The document outlines the DevOps lifecycle from continuous development to continuous monitoring.
2. Introduction to DevOps
DevOps is the offspring of agile software development.
DevOps is a culture which promotes collaboration between
Development and Operations.
DevOps = Development + Operations
3. Models before DevOps
Waterfall Model
Agile Methodology
DevOps grows out of the agile software development movement
4. Before DevOps - Waterfall
Long planning phases
Sequential
Top-down approach
Linear
A lot of time to produce the product
The working software was delivered only after the final
phase
Suitable for projects with stable requirements.
(Requirement will no change by the time)
6. Before DevOps - Agile Methodology
Continuous Iteration of development and testing
Development and testing are concurrent
Lack of collaboration between developers and operations
8. Before DevOps - Development Team
Gathering business requirements for a software program
and writing codes.
Ship as many features as possible.(Speed)
9. Before DevOps - Quality Assurance Team
Test the program in an isolated environment.
Find as many bugs as possible.
10. Before DevOps - Operations Team
Stability of Application
Deploying
Networking
Database operations
11. Before DevOps - Problems
Dev is unaware of QA and Ops roadblocks, that prevent the
program from working as anticipated.
QA and Ops are typically working across many features and
have little context of business purpose and value of
software.
Each group has opposing goals that can lead to
inefficiency and finger pointing when something goes
wrong. (each team is a black box for the other team)
14. DevOps Goals
Fast Time To Market
Few production failures
Immediate recovery from failures
Development & Operations
Speed & Stability
15. With DevOps
Happier Teams
Tech employees tend to be happier doing devops than doing traditional
silos
More time to innovating
Devs dont feel like they have to fight to get their work out there
Operation people dont have to fight devs for stability
Happier Customers
Give customers the features they want quickly
Use more stable Applications
16. What is DevOps?
DevOps is the practice of operations and development
engineers participating together in the entire service
lifecycle, from design through development process to
production support.
18. When to adopt DevOps?
It should be used for large distributed applications:
eCommerce sites
Applications hosted on a cloud platform
19. When not to adopt DevOps?
It should not be used in a mission-critical application,
which it need strict access controls on production
environments:
Bank
Power
Sensitive data sites
21. DevOps Life Cycle: Continuous Development
Planning
Understanding the vision of project
Envisioning a software based on perceptions
Software Coding
Developing the source code
Maintaining the code (SCM)
Version Control tools: Subversion, Git
Packaging
Producing .exe, jar, war files
Using Maven, Gradle
22. DevOps Life Cycle: Continuous Integration
The core of entire life cycle.
Frequently merging code changes done by developers.
Developers run tools for unit testing, code review,
integration testing.
Early reflection of end-users to the updated code.
Tool for procuring the updated source code and
constructing to the build formate: Jenkins
23. DevOps Life Cycle: Continuous Testing
Continuously testing of developed software for bugs.
Automation testing Tools: Selenium, JUnit, TestNG
Using Docker containers to simulate the test environment.
Automation testing saves the time.
24. DevOps Life Cycle: Continuous Deployment
Here Code is deployed to the production server.
Configuration Management: Precise deployment of code on
all servers
Tools used: Ansible, Puppet, Chef
Code is released to servers, Updates are scheduled for
servers
Containerization Tool: Maintaining consistency across the
environment where the application deployed.
Tools used: Docker, Vagrant
25. DevOps Life Cycle: Continuous Monitoring
Continuously monitor the performance and stability of
application
Vital information about the use of software like
Memory usage (low memory error)
Cpu
Disk I/O
Application log
Network traffic
Other resources over time
Increasing the productivity and reliability of the system
Tools: Sensu, ELK stack, New Relic
26. Continuous Monitoring: Why do Monitoring?
Fast Recovery
The sooner a problem detected, the sooner it can be fixed
Better root cause analysis
The more data you have, the easier it is to determine the causes
Visibility across the teams
Give useful data to both developers and production people about the
performance of code in production.
Automated response
Monitoring data used alongside orchestration to provide automatic
responses to events and recovery from failures