In simple words, it is a combination of development (dev) and operations (ops). It is a method through which a team aims to integrate software development and operations to deliver applications and services at high velocity.
DevOps has 4 key principles, listed as
-
Automation of the software development lifecycle
-
Collaboration and communication
-
Continuous improvement and minimization of waste
-
Hyperfocus on user needs with short feedback loops
The main goal of DevOps is to establish an environment where delivering applications and services becomes faster and can occur more frequently.
DevOps is a set of agile practices to improve collaboration between development and operation teams, so it eliminates traditional silos among them which we can say is an important goal of DevOps.
-
It provides continuous delivery of software.
-
It enables better collaboration between teams.
-
DevOps make deployment easy.
-
It provides better scalability and efficiency.
-
It provides more security and error fixation at an early stage.
-
Through DevOps tools, human intervention got minimized, less chance of error.
DevOps lifecycle is divided into six phases which provides us with more clarity
-
Management of Source Code - In this phase owners and the development team discuss project goals and makes a plan, then code for the project is made.
-
Continuous Build and Test - This phase deals with making tools, then arranging and combining codes from different sources or repositories to build complete application. Then the application gets tested with selenium or other testing tools to check product quality.
-
Continuous Integration - when the build and test phase is complete then new features get integrated automatically into the existing codebase.
-
Continuous Deployment - In this phase, software or product is packaged and deployed from the development server to production server, once deployed to production server then operations start performing their task such as provisioning and configuring servers.
-
Monitoring - This phase deals with the identification of issues in specific releases and understanding their impact on users.
-
Product/Software Release - Through passing all the above phases and business requirements, it gets released in the market.
-
Build Tools - Build tools are commonly known as programs that automate the process of building an executable application from source code. This building process includes activities like compiling, linking and packaging the code into an executable form. Build automation involves scripting or automating a wide range of tasks that software developers perform in their daily activities.
Ex- Terraform, Gradle, Maven, Scala-oriented Build Tool (SBT) etc.
-
Version Control Tool - It is the practice of tracking and managing changes to software code.
Ex- GitLab, GitHub, BitBucket etc...
-
Continuous Integration and Deployment Tool- (discussed in DevOps lifecycle section)
Ex- Jenkins, TeamCity, GitLab, and CircleCI are among the popular CI/CD tools.
-
Configuration Management Tool - Configuration Management is a method of ensuring that systems perform in a manner consistent with expectations over time.
Ex- Chef, Puppet etc.
-
Containerization Tool - containerization is a software deployment process that bundles an application's code with all the files and libraries it needs to run on any infrastructure
Ex- Docker.