What is DevOps? “In Simple English”
Modern Software Development Method
So first of all, when you hear terms like Waterfall, SCRUM, Sprint, Agile, Continuous Integration, Continuous Delivery, Continuous Deployment, DevOps, DevSecOps, etc; think of those terms as a way of doing something, not a skill set.
There are “no 12 steps” to successful DevOps implementation or Agile, etc. it’s pretty much just using those concepts and applying them to create a workflow that works better for your team or organization.
What is DevOps?
“Dev” refers to software application development, and “Ops” refers to IT operations. Defining what DevOps engineers do is still in flux because DevOps is not a framework or a workflow. It’s a culture that is overtaking the business world.
DevOps is a concept with different interpretations and definitions, but when you get down to it, it’s all about developers and operations teams breaking down silos and working together to innovate faster. For many companies, the ability to innovate at a rapid pace — responding to market conditions and customer feedback is a key factor for success.
Let’s take a company whose success is contingent on its ability to offer products to its online customers faster than competitors. The company developers team writes code for new products, features, security updates, and bug fixes. In a traditional software development life-cycle process, it takes weeks for the Dev team’s work to be placed into production.
When the Dev team’s code is finally deployed into the Production Environment, occasionally unexpected errors or problems occur. This mostly happens because the Dev team is focused on writing code for its Development Environment and it’s not identical to the Production Environment.
The Operations team (System Administrator) is responsible for maintaining the uptime of the Production Environment. The tools that the Ops team uses to manage or administer servers might not be effective or efficient when the number of servers increases largely within the company.
This challenge affects how new code is deployed in the Production Environment which is why the Ops team usually requires code deployments to be scheduled and are allowed only once a month in most cases. Once the code is deployed into the Production Environment, the Ops team is responsible for error diagnoses or problems caused by the changes.
Adopting DevOps philosophy requires a new mindset, tools, and skills. DevOps integrates development and operation teams in order to improve collaboration and productivity by automating infrastructure, workflow, pipeline and continuously measuring application performance.
There are four fundamental core values in DevOps: Culture, Automation, Measurement, and Sharing.
There are five levels of DevOps practice: values, principles, methods, practices, and tools.
DevOps can be implemented in 3 phases:
- Phase 1: Automated Testing
- Phase 2: Continuous Integration
- Phase 3: Continuous Delivery
1. Automated Testing
Agile method and automated testing are the foundation of DevOps competency. This involved writing tests within the code so that every change in the code can be evaluated by whether the test failed or not.
2. Continuous Integration
Once we have effective code coverage for testing, The entire testing process is then automated. Jenkins is one of the most popular tools used to implement continuous integration. The concept is based on having a number of servers in the background testing the code and running it through every iteration possible in order to find out if it can create any bug in an automated way. Jenkins will then generate a report at the end of that process ( such as what is the code coverage, whether testing failed or passed, etc.)
3. Continuous delivery
This phase is where we get the real business value. The base consists of writing code in small chunks (new features, bug fixes, etc.) that are integrated, tested, monitored, and deployed.
Continuous Delivery/Deployment pipeline and tools for each organization are different. The idea of a pipeline is a series of phases each backed by a specific tool. Let’s look at the six key phases of continuous delivery and the tooling that’s associated with it.
The key areas are: Version Control, Continuous Integration Systems, Build, Test, you’ll need an Artifact repository such as (AWS S3, CloudRepo, Nexus, Artifactory, Docker Hub) and Deployment. Using version control (example: Git, SVN, etc.) and source code management (example: GitHub, Bitbucket, Subversion, Mercurial, CodeCommit, etc.), we commit code changes and can view the entire history of all changes ever made.
- Plan & write code: the Dev team plan and write code using version control and source code management tools.
- Build & Test: while writing the code we can build and test with a tool like Jenkins.
- Release & Deploy: they are tools ( such as Jenkins, GitHub Actions, Travis CI, Drone CI, etc.) in junction with configuration management and provisioning tools such as. (Chef, Ansible, Puppet, Terraform, etc.) that help automates the process of delivering that code to a web server, backend server, or any hosting resource on a cloud environment ( such as AWS, Heroku, GCP, Azure, etc.)
Serverless architecture is the newest computing approach in creating systems into the cloud or third parties services instead of depending on servers. Docker is an example of serverless architecture. Docker works in conjunction with Puppet to make the code more portable which can be stored in multi-cloud for a better disaster recovery plan (AWS cloud is currently the most popular).
- Operate & Monitor: tools such as New Relic can be used to monitor everything.
Continuous Deployment describes when the software is deployed quickly into production since the team members make sure the application goes through complete automated testing.
How does a DevOps team accomplish all the above?
- CI and testing Tools that allow the team to test, build, and deploy new code while continuously integrating every change (monitor the execution of repeated jobs and integrate project changes more easily and access output for quickly identifying problems)
- Tools for source control that allow the team to manage, track, and document all the changes to the application code — (version control system for tracking changes in computer files and coordinating workflows among multiple teams and used for management in software development)
- Tools for configuration management and provisioning that allow the team to create an infrastructure where the application code is going to be hosted and delivered in an automated fashion maybe across several servers in different locations.
Configuration management defines how things should be built such as web services, hardware specs, operating systems, software packages, installation scripts, etc. It’s like the blueprint of Infrastructure and architecture. Provisioning is the process of building an infrastructure based on your configuration management settings.
- Development (Developers)
- Quality Assurance (QA): test the code to assure it is stable and meet the software requirements
- Operations (Production support, System Admin)
- DevOps Engineer
· Increase the rate of software delivery and faster time to market
· Maintain better business focus by automating the infrastructure
· Higher software quality and efficiency
· Fewer Bugs
· Lower cost to deliver
If you enjoyed this article, please give it a few claps for support. You might also like “What is Docker? In simple english”