Introduction to Devops

·

4 min read

Introduction to Devops

DEVOPS

DevOps is a methodology which Involves practices to bridge the gap of Dev and ops team by using Open source automation build tools.

Formal defination

"DevOps is the union of people, process, and products to enable continuous delivery of value to our end users."

Goal of DevOps

The main goal of DEVOPS is to shorten cycle time. Start with the release pipeline. How long does it take to deploy a change of one line of code or configuration.


Automation

AUTOMATING EVERYTHING is the fundamental principle of DevOps.

Automation is minimizing manual work and digitizing the work and tasks with the help of tools. It boosts speed, consistency and reliability increasing the number of deliveries. It increases the speed of the team from code integration to application deployment.


Scaling

Scaling is the ability of the systems to continue to function properly when changed in size and volume or when there is any increase or decrease in inflow of the traffic. One can opt for Upscaling or downscaling depending on the resource usage. Scalability helps in utilizing the resources efficiently which in turn reduces per-user cost.


Infrasture

Infrastructure refers to hardware, software, networks and services. DevOps introduces Infrastructure As Code(IaC) means that there is no need to manually provision and manage infrastructure. This approach allows for consistent, repeatable and easily reproducible infrastructure deployments.


Why DevOps is Important

The usage of DevOps improves the SDLC to fasten the delivery to the customer. It increases efficiency and the team can be encouraged to innovate. Automation increases efficiency where previously the tasks that were time-consuming and repetitive, are now to be used with other important tasks that require attention.

With Iac and IaaS in action, the whole infrastructure can be managed as code. Continuous testing and integration which ensures faster development cycles ensure high reliability and scalability. Since DevOps has a customer-centric approach regular feedback and shortened time to market leads to fulfilling outcomes.


DevOps Lifecycle

DevOps Lifecycle can be defined as the phases that involve the stages from planning to deploying and monitoring software.

DevOps lifecycle includes Continuous Development, Continuous Testing, Continuous Integration, Continuous Deployment and Continuous Monitoring.

Continuous Development: This phase involves the Planning and Coding of the software. No tools are required for planning, whereas there are several tools for maintaining the code such as Git, SVN etc. For packaging the code into executable file tools like Ant, Maven and Gradle are used.

Continuous Testing: The previously developed software is continuously tested for bugs. Automation testing tools like Selenium and TestNG are used for this phase of the lifecycle.

Continuous Integration: The most important phase of the lifecycle, where every new commit/change to the code is continuously integrated with existing code with the help of tools like Jenkins, Circle CI etc.

Continuous Deployment: The code is deployed to the production servers in this phase. Configuration Management(tools like Puppet, and Ansible) and Containerisation tools(tools like Docker and Vagrant) help in achieving CD.

Continuous Monitoring: In this phase, continuous monitoring of the performance of the application happens. If any errors are there with performance, the root cause is determined and helps in fixing the issue as soon as possible with the help of tools like Splunk, Nagios etc.


The key aspects or principles behind DevOps

  • Infrastructure as a Code

  • Continuous Integration

  • Continuous Deployment

  • Automation

  • Continuous Monitoring

  • Security


  • Jenkins: An open-source automation server used for continuous integration and continuous delivery (CI/CD) processes.

  • Docker: A platform for building, packaging, and distributing applications in lightweight containers.

  • Kubernetes: An open-source container orchestration system for automating the deployment, scaling, and management of containerized applications.

  • Ansible: A simple yet powerful automation tool used for configuration management, application deployment, and task automation.

  • Git: A distributed version control system for tracking changes in source code during software development.

  • Terraform: An infrastructure-as-code tool used for provisioning and managing cloud infrastructure resources.

  • Grafana: A visualization and analytics platform used for creating and monitoring real-time dashboards for various metrics.