Series 1, Topic 1 — What is DevOps?
Welcome to the first topic in the DevOps →All You Need to Know series where we will go through what DevOps is, its tools, and its principles.
What is DevOps?
DevOps is a set of practices(methodology) that combines software development (Dev) and IT operations (Ops), aiming to shorten the system development life cycle and deliver high-quality software continuously.
At its simplest, DevOps is about removing the barriers between two traditionally siloed teams, development and operations.
The DevOps movement began around 2007 when the software development and IT operations communities raised concerns about the traditional software development model, where developers who wrote code worked apart from operations who deployed and supported the code. The term DevOps, a combination of the words development and operations, reflects the process of integrating these disciplines into one, continuous process.
Using DevOps as a combination of cultural philosophies, practices, and tools automatically leads to the increase of an organization’s ability to deliver applications and services at high velocity.
How Does DevOps Work?
DevOps being a set of methodologies follows a lifecycle. The DevOps lifecycle is a continuous process that involves a series of stages aimed at automating and improving the collaboration between development and operations teams. This lifecycle ensures that software is developed, tested, deployed, and monitored efficiently and effectively.
Let’s break the lifecycle down!
- Plan -In this phase, the team collaborates with the business stakeholders to define the requirements for the project and identify the features that will be delivered. The goal is to clearly understand the needs and expectations of the stakeholders by creating a roadmap, defining milestones, and setting project goals. An example of this phase in action could be a team using a project management tool like Jira to create a backlog of user stories and tasks.
- Code — In this phase, the development team creates the code for the application. This involves using best practices to write high-quality, maintainable code that can be easily tested. The team may use a version control system like Git to manage the codebase. An example of this phase in action could be a team using an integrated development environment (IDE) like Visual Studio Code to write and debug code.
- Build — In this phase, the code is compiled and built into executable binaries or packages. This phase includes tasks such as compiling code, running unit tests, and packaging the application. An example of this phase in action could be a team using a tool like Jenkins or GitLab to automate the build process, ensuring that code changes are integrated and tested regularly.
- Test — In this phase, the application is tested to ensure that it meets the quality standards and requirements. This includes testing at various levels, such as unit tests, integration tests, and security tests. An example of this phase in action could be a team using tools/platforms like SonarQube, TestSigma, Selenium, or JUnit.
- Release — In this phase, the application code undergoes a final check for production readiness. An example of this phase in action could be a team using Jenkins or Bamboo that automates the entire release process.
- Deploy — In this phase, the application is deployed to the desired environment which can be stage, UAT, or production environment. This involves setting up the infrastructure, configuring the environment, and deploying the application code. An example of this phase in action could be a team using a deployment automation tool like Ansible or Chef to deploy the application across different environments. Additionally, tools like Kubernetes and Docker are used to establish Continuous deployment pipelines for containerization and orchestration
- Operate — In this phase, we ensure the smooth running of the application in the production environment. Operations teams monitor the application’s performance, availability, and security, and respond to any incidents or issues that arise. Operation tools like Ansible, Puppet, Chef, Kubernetes, and Jira for reporting.
- Monitor — In this phase, the application is monitored and maintained in the production environment. This includes tasks such as monitoring performance, tracking user behavior, and troubleshooting issues. Monitoring tools like Grafana, Prometheus, Datadog, and ELK stack (Elasticsearch, Logstash, Kibana) provide visualizations, alerts, and dashboards for proactive monitoring and troubleshooting.
DevOps Tools
There are more tools apart from the above, including Prometheus, SonarQube, Trivy, ZAP, Puppet, VSCode, Terraform, and Pulumi just to name a few.
We shall cover most of these tools in the coming series, so stay alert!
Before we start on the tools let’s know more about the practices, the 3 P’s , advantages and disadvantages of DevOps
What are the Key Principles or Practices?
- Continuous Integration — This is the practice of automating the integration of code changes into a software project. It allows developers to frequently merge code changes into a central repository where builds and tests are executed.
- Continuous Delivery — This is the practice of deploying code changes to a testing/production environment. It follows a continuous delivery pipeline, where automated builds, tests, and deployments are orchestrated as one release workflow.
- Continuous Testing — This is the practice of testing the developed code for bugs and errors that may have made their way into the code. This is where quality analysis (QA) plays a major role in checking the usability of the developed software.
- Continuous deployment — This is the practice of ensuring the code is deployed precisely on all available servers during this phase. This process eliminates the need for scheduled releases and accelerates the feedback mechanism, allowing developers to address issues more quickly and with greater accuracy.
- Continuous monitoring — This is the practice of monitoring the performance of a software product. Through continuous monitoring, developers can identify general patterns and gray areas in the app where more effort is required. Continuous monitoring is an operational phase where the objective is to enhance the overall efficiency of the software application.
What are the 3 P’s of DevOps?
The 3 P’s of DevOps are People, Processes, and Tools.
- People foster collaboration and a cultural shift.
- Processes streamline workflows and automate tasks.
- Tools enable automation and efficiency in the DevOps pipeline, collectively driving success.
What are the advantages?
- Faster Time to Market.
- Improved Collaboration.
- Enhanced Reliability and Stability.
- Efficient Resource Utilization.
- Better Security.
- Monitored quality and reliability.
What are the disadvantages?
- Cultural Shift.
- Skill Set Requirements.
- Tool Overload.
- Initial Investment.
- Dependency on Automation.
- Overemphasis on Speed.
Always Remember DevOps is an agreement between the people writing software and the people moving the software to end-users.
With this, you should now have a solid base and understanding of what DevOps is and what are its building blocks.
Great, so let’s proceed! — — — -Over to Series 1, Topic 2(Still writing)— — —
Author: Collins Munene
Portfolio: Collins .H. Munene
Profession: Founder | Software Engineer | DevOps | Security Analyst | AI & VR enthusiast | Mentor
Sponsored by: Yelbridges and Devligence Limited