May DevOps Empower You: Speed Up Releases with Competence
A DevOps Engineer and a Data Scientist occupied two first lines in the list of 50 best jobs in 2018 in the USA according to Glassdoor.
Nowadays, the DevOps concept is in great demand as under the global digitalization and rapid market changes the business expects such IT solutions that will help to produce and launch a product faster. And not the product only, but the user experience as well in accordance with the high UX standards set by the market leaders.
Banks are aware that they should introduce to the market user-friendly apps as a remote service option, otherwise, their clients may simply turn to those tech companies which are literally closer, in a client’s mobile phone. Media enterprises are looking for any new opportunities to come to know their users in order to offer them the individual-oriented content. Retailers are improving the communication channels to make a buyer think about what to buy rather than how to buy it.
Falling behind the strong rivals in the race is hardly a good prospect, isn’t it? To avoid this, the business needs to implement new IT solutions to start producing results “yesterday”. And DevOps practices do deliver the acceleration required.
What is DevOps?
DevOps as a concept defines an approach to a development process that has evolved in response to the fast-changing market, technology, and IT ecosystem. DevOps practices cover the automation and virtualization of the development processes and are designed to coordinate the flow of information between people involved in a project. This is the IT department staff who can take on their implementation, but judging by our experience a dedicated DevOps position in the team results in numerous advantages.
We still have in mind the times of the early DevOps, when the developers of our team managed the development and deployment procedures by themselves without any problems. Each coder knew the complete procedure and could follow it. But as the company moved forward, the scope of work extended, new employees joined the team and they needed time to master the processes. The idea to assign a dedicated specialist for this purpose seemed to be reasonable and promising.
The expectations and forecasts were verified. A DevOps engineer took his place in Umbrella IT team: releases fly smoothly rather than flow, there is nothing to draw away the team members from their core tasks, the automation saves time, everyone involved in the project receives accurate project progress information and our clients return to us with new ideas and projects.
No magic or DevOps practices as part of team work
According to our experience, the most effective transformations and improvements are achieved when the complete team works for one common goal.
Be any Jack or Joe super-brilliant, this is not only an individual talent that drives the project to success but the properly-tuned team processes and well-organized communication as well.
The same is true of the DevOps engineers: their contribution to the project progress starts with the configuration of the development environments for coders and QA and all the initial settings required.
Here We Go
The DevOps engineer is in charge of setting up the environment so that developers and QA specialists can stick entirely to coding and testing. This covers the code collaboration tool, the development (where the developers actually code), staging (where the app is pre-tested) and production environments (where the ready-made application runs) and autotests.
The next step includes the processes to be adjusted:
- Continuous Integration: the merger of the working branches into the main one within one repository. As a result, any change is regularly transferred from the working branches to the main branch being subject to app building and autotests;
- Continuous Delivery: continuous delivery of the running product updates so that the tests performed have no effect upon the existing features;
- Continuous Deployment: continuous automatic deployment of the new app features and changes.
For the teamwork, the properly configured and maintained working environment provides the following benefits.
1. The automated and standardized processes contribute to reducing the overall product development time. The processes are always performed identically independent of a doer. Such repeatability allows ensuring the stable quality of the product delivered.
2. Due to short iterations any errors and bugs are early detected, but not at the stage of the half ready product. This results in saving time and improving the finished product quality.
3. The team’s internal resources are treated in a more efficient way, and the time saved can be allocated to solving any eventual extra tasks. Such tasks are hard to be completely avoided, but their impact on the core processes can be significantly reduced.
4. Undoubtedly, smooth communication is the next factor of positive effect. The event notification (errors, failures, successful tests) is adjusted to ensure that all interested parties receive timely and identical information.
5. The properly arranged and configured system can be easily scaled. This means, your decision to expand will not result in unraveling the network of complicated interrelations. You will simply continue developing based upon the clear initial structure.
Following this stage on, the DevOps engineer continues to monitor the adjustments and any extra settings, depending on the project progress.
When the time comes for the release, the DevOps engineer is busy with monitoring, summarizing and bringing the product to the proper finished form.
The scope of the DevOps engineer’s duties covers:
- choice and set up of the monitoring and notification systems: server (Zabbix, Grafana, Prometheus) and apps (New Relic);
- choice and set up of the logging system (ELK);
- security: vulnerability assessment, Qualys, static code analysis;
- deployment/CI: Bamboo, Jenkins, GitLab, travis ci, teamcity;
- backup and recovery: AWS (built-in mechanism), Acronis, Bacula;
- timely software update: update of application dependencies, weekly review, and update of system programs, automatic updates of for security system
It’s an obvious point that the DevOps engineer lives with the application through the entire story of its development and subsequent operation. He follows the updates, monitors changes, and assists with the extension. To stay on top any application cannot but develop. And this is the DevOps engineer who supports any new features and prevents any eventual problems.
Benefits Due to DevOps Practices Integration
Successful implementation of DevOps practices can be illustrated by various business cases. We can learn from them, but they cannot be just copied and tried on. The point is to intertwine the practices into the IT team culture and organizational structure. Otherwise, this may result in rejection, lack of understanding and other disturbing consequences. This seems complicated, isn’t it? Yes. But it’s worth it. We have tested it out with the good results:
- automation of the development processes: brings the accelerated development and improved quality of the final product;
- optimization of the server resources: results in cost saving as only the actually-used resources are paid for;
- security improvement: ensures maximum protection, vulnerabilities monitoring, and good sleep at night.
- system stability control: provides non-stop operation 24/7;
- the system able to withstand growing loads: eliminates any restrictions for scaling and future growth.