The DevOps methodology is a concept that may seem vague. In this article, we define DevOps and explain how it is applied daily by Padok. We, therefore, address the following questions: what is DevOps, how to apply this methodology in your teams, and what are the tools to use in your software development projects.
Imagine a real situation, it's the sales' first day and you're on the favorite brand's website. You spot the t-shirt you've been desiring for several months. You put it in your basket and there, it is a tragedy... the site no longer responds. A few hours later, you return to the site but the t-shirt is no longer available in your size. If the developer team and the operational team had communicated better, this problem would probably not have occurred.
Where did DevOps come from? It is the contraction of Developer (Dev) and Operational (Ops). This term appeared in 2008 at the Shafter conference and spread widely in 2013 thanks to the book "The Phoenix Project". Historically, developer teams and operational teams have antagonistic objectives, we name that the "wall of confusion". Developers must produce new functionalities and the Ops ensure the reliability of the software or application.
The DevOps methodology, therefore, consists in having developers and Ops communicate and collaborate on your projects to:
To see those results on your business, you have to follow the DevOps process.
What is exactly the DevOps process, you are wondering? Well, the DevOps is based on 6 principles:
To apply those DevOps principles you have to follow 7 steps for each new deployments:
Continuous integration is part of the DevOps process and is a way to reduce risk and launch new features faster. This is a good way to make Developers and Ops complementary, thus breaking the silos between them.
Continuous integration (CI) is key in the DevOps methodology. CI is a set of practices that automatically tests each code change before it is released for production. In other words, when a developer revises his code, he is automatically tested. If an error is detected, he/she is notified and if there is no error, the code is automatically put into production. The automatic production release stage is commonly referred to as continuous deployment (CD).
Fun fact: Padok's name parallels the Formula 1 paddock, which allows drivers to focus on driving without thinking about the state of the vehicle.
The goal of continuous integration (CI) is simple: guarantee a quality code quickly. Development teams have immediate feedback, no need to wait several weeks to identify errors and correct them. This has a positive impact on the satisfaction of end-users, who see new features coming out regularly while maintaining the same fluidity of navigation.
The Agile methodology is growing in companies. But is the agile methodology compatible with the DevOps culture?
The main goal of the agile methodology is to shorten the duration of development cycles and therefore, the frequency between different production releases.
As a reminder, the DevOps culture consists of smoothing the relationships between developer teams and Ops to make faster and better quality production releases.
At this stage, the two methodologies seem to meet since they have a common goal. However, there is a difference. The agile methodology is by definition agile, flexible. It allows the priorities of developments to be adapted to unexpected circumstances or changes in direction. However, in the DevOps methodology, unforeseen events are not easy to bring into the traditional scheme of prioritizing tasks.
So how to adapt the Agile methodology to DevOps? The answer is simple: you have to take into account the issues related to the development and Ops businesses. This involves three actions:
To align your developers and Ops and adopt the agile methodology, communication is essential, but you will also need tools to set everything up.
DevOps is, therefore, a culture of collaboration and process automation between development and operational teams. To collaborate and automate you will need tools and there are many of them. Padok gives you its selection to help you. If you would like to have a more complete list of DevOps tools, consult this article.
Source code management tools are part of the development's fundamentals. It is important to extend those tools and share them with operational teams for better communication. This makes it possible to know the different modifications of the code and the authors of these modifications. Git and Github allow you to create a history for source code files.
You will then need a continuous integration and continuous deployment (CI/CD) tool. As explained above, these tools automate testing of source code revisions and automatically launch the deployment of test environments and even production environments. At Padok, we use GitlabCI but there are many of them, such as Jenkins (open source), Google, AWS, etc.
To avoid unpleasant surprises during the deployment in production, we recommend the use of containers. You will be able to isolate an application with all the elements it needs to work. The two main tools are Docker and RKT. To simplify the deployment and management of containers, we recommend using a container orchestrator such as Kubernetes.
To monitor Kubernetes clusters, Prometheus (open-source tool) and Grafana are effective. And for log and aggregation analysis, the ELK suite (Elasticsearch, Logstash, and Kibana) is popular.
Communication is crucial in DevOps, so you need a project management tool either of the agile type like Jira or of the generalist type like Trello.
There are no perfect tools in DevOps, depending on your projects. It is best to test them to see if they meet your needs. Especially since all the tools mentioned above are easily available and can be integrated into the cloud for testing and production purposes.
We hear more and more about Cloud but what does it change for DevOps and who are the Cloud providers on the market? Cloud providers are remote hosting solutions, meaning that data and tools are stored in data centers outside the company.
Cloud and DevOps are independent but are complementary strategies, because to remain competitive in the market, companies must review their approach of work. Production cycles must be reduced to make constant improvements for end-users. The Cloud directly addresses this need for agility. To picture it, if the cloud was an instrument, DevOps would be the musician who plays it. As with the Formula 1 paddock, the Ops can focus on bringing new features into production instead of thinking about shutting down physical servers. Indeed, load balancing and redundancy issues, for example, are natively taken into account in this context.
There are three main cloud providers on the market: Google Cloud Platform (GCP), Azure and AWS. They offer all the tools mentioned above and many others.
Hybrid Cloud is a mixture of a public cloud and a private cloud. It means that you have both public and private clouds, but they operate independently communicating through an encrypted connection.
Hybrid Cloud is useful to store sensitive data while maintaining the ability to scale your infrastructure when demand fluctuates. The Hybrid Cloud has 3 advantages: security, flexibility, and cost.
Since DevOps and Cloud are complementary strategies, if you want to implement DevOps culture in your company but you have security issues because of sensitive data storage, Hybrid Cloud is made for you. Here we are giving you the keys to implementing Hybrid Cloud in your company, all the points of vigilance and steps to follow.
You now have all the keys to understand what DevOps is, how to apply it, what tools to use. You have covered all the bases of DevOps, you are ready to change your organization. Do not hesitate to contact us if you have any questions, our team is here to help you.