Before driving into DevOps detailedly, you (if you are a beginner) should first know what DevOps stands for. The term DevOps is a short form of Development and Operations.
DevOps = Dev (Development) + Ops (Operations)
Different people define DevOps in a variety of ways.
What actually is DevOps?
DevOps is a cultural movement and it is a culture of collaboration between developers and operations people. Here, developers are the ones who develop the application by programming it and operations people are the ones who maintain servers and the software applications up and running by scaling efficiently and keeping the applications live and accessible to everyone all the time.
This culture has given rise to a set of practices which we call them as the DevOps Practices.
This is what Wikipedia says about DevOps:
“DevOps is a software engineering culture and practice that aims at unifying software development (Dev) and software operations (Ops).
DevOps aims at shorter development cycles, increased deployment frequency, more dependable releases, in close alignment with business objectives.”
The culture of collaboration between Developers and Operations.
If DevOps was to setup in a picture, then it would look like an infinite loop as shown above in the cover picture.
This again goes hand in hand with the Software Development Life Cycle – Agile Methodology. I have explained about the SDLC and Agile in my previous posts. You can click on the links to get more information.
Now lets elaborate what the Dev and Ops phases do in order to properly run, maintain and update software applications.
It all starts with Planning requirements and building the architecture by proper analysis. Then development takes place which is coding using a variety of programming languages and frameworks. The programming language and frameworks can be anything, may be of an individual’s interest or expertise or depending on what the applications needs for better performance and availability. Once the application is built, this will be set to build processes following up with testing of the application in various stages (such as staging, development, testing, production).
After the testing phase is done and if everything looks good in all the environments, it will then be set to release into production by using different deployment techniques using various tools and infrastructure setups. Cloud platforms take a huge part in deployments as most of the applications are being deployed into AWS, Azure, Google Cloud GCP, etc. This will now be monitored to keep the application up and running properly and efficiently and setup automation for auto scaling and load balancing. The logging and monitoring is done using various tools such as Prometheus, Grafana, CloudWatch, etc. Autoscaling is possible with containers and orchestration such as Docker containers and Kubernetes for orchestration. These tools and technologies are good for microservice architectures.
The cycle repeats as the maintenance phase by continuous monitoring, autoscaling, load balancing, by developing the code again with new requirement, updates and patches followed by build, test and release into production and monitoring again which creates an infinite loop.
There are certain DevOps practices which support the goals of DevOps culture.
1. Source Code Management
2. Configurations Management
3. Continuous Integration
4. Continuous Deployment
6. Server Orchestration
8. Cloud Service Platforms
9. Build Automation
There are a huge number of tools that help implement DevOps practices. Some of them include Jenkins, Git, Gitlab, Chef, Ansible, Docker, Kubernetes, AWS, Azure, GCP, Prometheus, Grafana, ELK Stack, CircleCI, etc. We shall discuss in details in future posts regarding each and every tool, technology, use case, best practices and procedures.
DevOps and the Cloud:
There is a close relationship between DevOps and the Cloud. Most of today’s applications are being hosted on cloud platforms like Amazon Web Services, Microsoft Azure, Google Cloud Platform, etc. There are many cloud service providers out there and all of them provide pay-as-you-go basis which makes the development of the application easier to develop, host and initiate will no huge investment on infrastructure setups and security.
Again, “DevOps is not tools, but tools are essential to the success in DevOps.”
DevOps is not a standard nor a product nor a job title. DevOps is a cultural movement for a better collaboration between Developers and Operations teams!
My future posts will explain the tools and technologies used in DevOps practices both theoretical and technical, the roadmap to DevOps careers, best practices, and so on. Every post that I post will be interconnected to DevOps, so keep following my frequent posts for development and operations of software applications.