DevOps Explained
DevOps is a culture! DevOps is a way of life! DevOps is not a tool nor a technique. It’s cultural change!
DevOps is when you combine different cultural philosophies, practices, and different tools to increase your organization’s ability to deliver applications and services at high velocity: evolve and improve products at a faster pace
For a long time, development and operations were isolated modules. Developers wrote code; the system administrators were responsible for its deployment and integration. As there was limited communication between these two silos, specialists worked mostly separately and has distinct controls over their activities project.
DevOps bridges the gap between development teams (Devs) and server admins/IT operations teams (Ops). DevOps aims to enhance the relationship between them and improves collaboration.
When you start implementing DevOps, you allow your sys admins to become involved with your development team, and vice versa. In essence, you’re breaking down the two silos.
The key element of DevOps are collaboration, communication, and integration.
DevOps stands for development and operations. It’s a practice that aims at merging development, quality assurance, and operations into a single, continuous set of processes.
DevOps Practices
Below are some of the DevOps best practices that all organizations must embrace :
- Continuous Integration : Continuous integration is the practice of merging all developers’ working copies to a shared mainline several times a day. It is a development practice that requires developers to integrate code into a shared repository like github , bitbucket e.t.c several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. By integrating regularly, errors are detected quickly and located more easily
- Continuous Delivery: Continuous delivery is a practice where code changes are automatically built, tested, and prepared for a release to production.
- Continuous Deployment: automatically deploying code to production after each codecommit and build is what is termed continuous deployment. It is the process of automatically deploying software updates to the production environment, once code is checked into the software repository by development team. While in continuous delivery, the deployment follows an on-demand model; here it is pushed automatically every time.
- Infrastructure as Code: is a practice in which infrastructure is provisioned and managed using code. In its simplest form , Infrastructure as code (IaC) means to manage your IT infrastructure using configuration files. Because they are defined by code, infrastructure and servers can quickly be deployed using standardized patterns, or duplicated in repeatable ways. Tools like Terraform and AWS Cloudformation can be used
- Containerization: Containerization is the process of packaging an application along with its required libraries, frameworks, and configuration files together so that it can be run in various computing environments efficiently. In simpler terms, containerization is the encapsulation of an application and its required environment. By the very nature of the containers and Docker technology, developers can share their software and dependencies easily with IT operations and production environments while eliminating the typical “it works on my machine” excuse. Containers solve application conflicts between different environments.
- Monitoring and Logging: Monitoring provides visibility into the performance, uptime, and overall health of applications . Application monitoring is very important as well as infrastructure monitoring .Its the practice of monitoring and logging solutions real-time once they are in production. This gives us performance metrics that improve the reliability and stability of the solution and to also prevent failures.
- Communication and Collaboration: DevOps keeps all stakeholders related to development, operation, and deployment in the loop- Communication is a must. It’s important to keep everyone on the same page. All the tooling and automation in the world are useless unless development and IT/Ops professionals work together
DevOps Tools
In order for an organization to implement DevOps best practices , some devops tools been developed to automate and facilitate different DevOps processes.
Below are some of the tools that can help an organization to embrace devops culture .
This is not an exhaustive list but it shows some of the tools I have worked with as a DevOps Engineer and I believe every organization need this tool to be able to achieve a DevOps culture.
- Source code control : Git ,Github , Gitlab , Bitbucket
- DevOps CICD tools : Jenkins, Semaphore,CircleCI, TravisCI, bitbucket-pipelines, TeamCity
- Configuration Management tools: Chef, Puppet, Ansible, Saltstack
- Containerization tools:Google Kubernetes Engine-GKE , Docker, AWS-Managed Kubernetes Service(EKS), AWS Elastic Container Service(ECS)
- Cloud Computing : Amazon Web Services(AWS) , Google Cloud Compute, Azure, Digital Ocean, Openshift
- Monitoring and logging : Prometheus, Operations (formerly Stackdriver), New Relic, Stackify, Papertrail, Kibana, Elasticsearch
Thanks for reading to the end, I hope you have been able to understand some basics of DevOps. Please feel free to drop your questions or comments in the comment box below .