4. Approaches of S/W development process cont.
Waterfall cont.
It is called Waterfall and because it moves software down from stage to stage.
● First you get all the requirements completely done and documented
● Then process moved to development, who codes the requirements.
● Then process moved to QA who tests
● then process moved to whoever does release engineering
● then process moved to operations to deploy and maintain the environment.
6. Approaches of S/W development process cont.
Agile cont.
In Agile development the process is deliberately more iterative.
Agile leverage the collaboration between both workers and customers around frequent
deliverables of working software. This can quickly generate solutions that better address
customer needs with fewer quality problems.
Agile manifesto didn’t mention anything about the operation process!
Agile talks about working software but it wasn't customary to bring system administrators into
the product team. - Also the manifesto doesn't mention anything about the last part of the
software delivery pipeline, where infrastructure is built and the apps are deployed and
maintained in production.
7. How far DevOps relates to Agile?
DevOps should be implemented as an extension of Agile since Dev Ops has such strong
roots in Agile.
DevOps manifesto capture the heart of the Agile manifesto, Replace software with systems
and add operations to the list of stakeholders.
8. What is DevOps?
● The practice of Operations and Development engineers collaborating together in the
entire service lifecycle, from design through development process to production
deployment and support to deliver a better quality software at high speed to
users/clients.
● DevOps incorporate many ideas from agile S/W methodologies.
“DevOps is the application of agile methodology to system administration”
- Thomas Limoncelli | Site Reliability Engineer at stackoverflow
9. DevOps Culture
DevOps replaces the days where we have a team that writes the code, another team to test
it yet another team to deploy it and another team to operate it.
DevOps is characterized by operation staff making use of many of the same techniques as
developers for their systems to work.
In DevOps, system engineers works just like a development workflow, all the assets, all the
assets are checked in a source control and have tests associated with them.
10. DevOps Methodologies
In Agile, there are defined methodologies like SCRUM and Extreme Programming that
provide a playbook for implementing Agile in an organization.
In DevOps, there aren't as many that are well established, but some common methodologies
have emerged.
These methodologies can help in starting the process of implementing DevOps
11. DevOps Methodologies cont.
● People over process over tools
In short, it recommends identifying who's responsible for a job function first. Then
defining the process that needs to happen around them. And then selecting and
implementing the tool to perform that process.
12. DevOps Methodologies cont.
● Lean Management
○ Work in small patches
○ Work in progress limit
○ Feedback loops
○ Visualization
It's been shown in studies that lean management practices led to both better organizational
outputs, including system throughput and stability and less burn out and greater employee
satisfaction at the personal level.
13. DevOps Methodologies cont.
● Infrastructure as code
IAC is a completely programmatic approach to infrastructure that allows us to leverage
development practices for our systems.
○ Systems can and should be treated like code.
○ System’s specifications should be checked into source control.
○ Review system’s codes and Run unit, integration tests as part of CI pipeline, deploy them.
○ Systems have to be managed (create, update, configure and delete systems) programatelly.
Tools exist to configure servers from the bare metal up completely automatically, and with
virtual servers, cloud servers or containers, everything can be created, changed and
destroyed programmatically.
15. DevOps Methodologies cont.
Benefits of IAC:
● It brings confidence that your Dev, staging and production environments are identical
because they were created from the same specification.
● Get away from setting anything up manually.
● Define your infrastructure in a model or drive it via code that exercises a rest API.
● Now we can put it in source control, run it through a CI pipeline to test it and then
deploy it.
16. IAC Practices : Configuration Management
Configuration Management use cases:
● Provisioning: the process of making a server ready for operation. Including hardware,
OS,system services, and network connectivity.
● Deployment: the process of automatically deploying and upgrading applications on a
server.
● Orchestration: the process of performing coordinated operations across multiple
systems.
17. IAC Practices : Orchestrated Deployment
Orchestrated deployment techniques
● Canary deployment
○ Where you upgrade one server in a fleet, and see how it works before upgrading the rest.
18. IAC Practices : Orchestrated deployment cont.
● Blue Green deployment
○ Where you have two identical environments. One of which is production, and one of which is
staging. New code is put under the staging environments. And then the two environments are
swapped.
19. IAC Practices : Configuration management cont.
● Immutable deployments
○ Where you never upgrade software in production at all. You discard old virtual systems and
put new ones in place.
21. IAC Toolchain cont.
● IAC Tools cont.
For container-based infrastructure and environment, Containers generally don't
use the regular CM tools like Chef or Puppet as their configuration is generally
handled with a simple text file called the Docker file.
● Orchestration Tools for container-based environments
○ Kubernetes
○ Docker Swarm
○ Apache Mesos
These tools allows the running of container workloads across multiple hosts, they
handle the deployment, orchestration and scaling.
22. DevOps Methodologies cont.
● Continuous Integration / Continuous Deployment
○ It's the practice of coding, testing, and releasing software frequently, in really small batches so
that you can improve the overall quality and velocity.
○ Every code commit is build automatically.
○ Unit tests are run, and the application is deployed into a production like environment.
○ Automated acceptance tests are run, and the change either passes or fails testing minutes
after it's checked in.
24. DevOps Methodologies cont. CI/CD definitions
● Continuous Integration
○ is the practice of automatically building and unit testing the entire application frequently. Ideally
on every source code check in.
● Continuous Delivery
○ is the additional practice of deploying every change to a production like environment, and
performing automated integration and acceptance testing.
● Continuous Deployment
○ extends the Continuous Delivery, to where every change goes through full automated testing
That it's deployed automatically to production.
26. DevOps Methodologies cont. CI/CD Pipeline
The idea of a pipeline is a series of phases each backed by a specific tool.
● The CI/CD Key phases
a. Version Control (GitHub, GitLab, Bitbucket,.. )
b. CI System (Jenkins, GitLabCI, Atlassian Bamboo,.. )
c. Build (language specific tools like: Make,Rake,Maven,.. )
d. Test (Cucumber, Apache Bench, Jmeter,.. )
e. Artifact Repository (Artifactory, Nexus, Docker Hub, AWS S3,.. )
f. Deployment (CM Tools, Rundeck,.. )