DevOps and Software Development Life Cycle

The DevOps Lifecycle Looks Like This:

Check in code
Pull code changes for build
Run tests (continuous integration server to generate builds & arrange releases): Test individual models, run integration tests, and run user acceptance tests.
Store artefacts and build repository (repository for storing artefacts, results & releases)
Deploy and release (release automation product to deploy apps)
Configure environment
Update databases
Update apps
Push to users – who receive tested app updates frequently and without interruption
Application & Network Performance Monitoring (preventive safeguard)
Rinse and repeat
The above process is also called a Code Delivery Pipeline.

Tools for DevOps Lifecycle

We have discussed earlier that everything starts from communication and collaboration between Dev and Ops. Once we understand the culture and process of the project/product we can start working with everyone in designing Code Delivery Pipeline. We must decide what automation tools to use to create entire pipeline. We need to decide where our infrastructure would be hosted? On the cloud, virtual machines or physical machines? In today’s world we have lot of automation tools, but first we need to understand their categories what tools is used for what purpose? If we don’t understand that then we won’t be able to decide where to use them in our code delivery pipeline.
Version Control Systems:
Is used to store the source code, a central place to keep all the code and tracks its version.
For Example:
Git
SVN
Mercurial
TFS

Build tools:

Build process is where we take the raw source code, test it and build it into a software. This process is automated by build tools.
For Example:
Maven
ANT
MSBuild
Gradle
NANT

Continuous Integration Tools:

For Example:
Jenkins
Circle CI
Hudson
Bamboo
Teamcity

Configuration Management tools:

Also known as automation tools, can be used to automate system related tasks like software installation, service setup, file push/pull etc. Also used to automate cloud and virtual infrastructure.
For Example:
Ansible
Chef
Puppet
Saltstack

Cloud computing:

Well this is not any tool but a service accessed by users through internet. A service that provides us with compute resource to create virtual servers, virtual storage, networks etc. There are few providers in the market who gives us public cloud computing services.
For Example:
AWS
Azure
Google Cloud
Rackspace

Monitoring tools:

Is used to monitor our infrastructure and application health. It sends us notifications and reports through email or other means.
For Example:
Nagios
Sensu
Icinga
Zenoss
Monit

Containers & Microservices:

Well to be very frank this cannot be described to you right now. Its described in detail in separate chapter. We need to have lot of Infra & Development knowledge to understand this category of tool.
For Example:
Docker
RKT
Kubernetes


DevOps Lifecycle with images of devops tools.


Devops Online Training


Devops Life Cycle

Summary:

DevOps cannot be defined in one sentence. DevOps is the culture and also the implementation of automation tools. It depends from which area you are defining it. 
Majority of the Software development is happening with Agile model and that churns out code changes incrementally and frequently. 
Operations does not gel well with the Agile team as both have differences in their principles. 
Agile team wants quick change, Ops wants to keep system stable by not making frequent changes. 
DevOps helps in creating communication, collaboration and integration between Dev and Ops and culture, practices and tools level. 
DevOps Engineer must understand DevOps lifecycle and implement right tool of automation at right place. 
Learning automation at every level in the lifecycle is highly important if you want to make a carrier in DevOps domain. You should understand Infrastructure, Development & Automation.Later in the book we will dig more in detail into tools and learn them. We will also understand CI & CD from tools point of view.

Comments