The DevOps engineer has a transversal role that requires a good mastery of the IT development stages, as well as a good understanding of the challenges of continuous deployment and production. The DevOps job requires the mastery of various skills. First of all, it is necessary to master the technical skills that the job requires. The DevOps consultant must therefore
know how to develop scripts and do integration
use construction and virtualisation tools: Docker, Kubernetes, etc
know how to set up continuous integration chains (CI/CD)
know the operating system environment: Linux, Windows systems
mastering automated testing or deployment monitoring tools
be meticulous about data security and have excellent knowledge of server systems
work on cloud platforms (AWS, Azure, GCP, etc.) and others as well as on On-Premises platforms
In addition to technical skills, the DevOps engineer must be able to evaluate the functioning of applications, make technical adjustments and measure the performance of the solutions developed.
While technical mastery is crucial, the human qualities of the DevOps consultant or engineer represent a major asset in their relations with other teams and the hierarchy. In addition to management skills, they must be able to listen to the demands of the client and the teams. It is therefore essential that he/she has good interpersonal skills to better understand the needs and to exchange information more easily:
he must be able to manage and direct the teams with which he collaborates
he must always have a certain distance from the project in order to carry it out successfully and respect the objectives set
he must be able to formulate requests in technical language
He must be able to federate all the participants in order to develop a personalised and coherent solution
Not every DevOps engineer masters all programming languages, especially novices. A good engineer must therefore have the ability to quickly learn deployment tools or technologies so that the company can succeed in its digital transformation.
Moreover, the company that has to recruit a DevOps engineer or call on a DevOps consultant will focus in particular on DevOps practices. In other words, it will pay particular attention to the work processes of the person in question. The latter will need to be familiar with various cloud computing solution providers. Finally, a good DevOps engineer must regularly monitor technological developments to remain at the forefront of his field. He must be on the lookout for new languages and new digital tools.
CI is the part where the workflow has to validate each developer commit automatically.
The automatic unit and functional tests are validated by the integration machine e.g. GitLab CI or CircleCi. Once the tests are passed a build/artefact is produced and will be deployed in the TEST environment.
To arrive at a build/artefact
The code is built at each commit
The code is automatically unit tested at each commit
Everyone has access to the build and test report
Tests are run on a scaled down version of the production environment
Deliverables are stored in a version-controlled artefact repository
Deliverables are automatically deployed to a test environment after a successful build
If any of the steps fail then the developer responsible for the commit receives a notification to correct as soon as possible.
The implementation of a CI and all the processes to be integrated
The different types of tests
Unit tests are used to test methods or functions in the same way as for the development of a product.
Integration tests are to ensure that several components behave correctly together, they are for functional regressions
Acceptance tests similar to integration but focused on the business
User interface tests are for ensuring that from the user’s point of view the interface actions work
the more the tests are based on the UI layer, the more time they take to implement and maintain, so they are expensive.
To adopt continuous integration, you will need to run your tests on every branch you push.
To do this some simple questions:
where is the code hosted? Restriction…
what operating system and resources do we need for the application? Dependencies…
how many resources do we need for your tests?
is the application monolithic or microservice?
do you use containers? Docker…
Test coverage & complexity
It’s good to aim for over 80% coverage but be careful not to confuse a high coverage percentage with a good test suite. A code coverage tool helps us find untested code. The quality of your tests will make the difference at the end of the day. A tool like SonarQube is there to help make decisions when the code is complex and untested.
Duplication and dead code
Duplicated code will be the future dead code or the future double-fixed bug! It is very important to check your code and reduce duplication to a maximum of 5% duplicated code on a large or legacy project is acceptable but try to be under 2% for any project starting with quality code metrics.
Refactoring
If you are about to make significant changes to your application that do not have sufficient test coverage, you should start by writing acceptance tests around the features that might be impacted. This will provide a safety net to ensure that the original behaviour has not been affected after refactoring or adding new features.
The environment
The entire IT Dev/DevOps/Admin team should keep in mind to keep the same environment everywhere. The revision number of all components used by the application should be the same in Dev/Build/Test/Integration/Prod. This is where containers (Docker) and orchestrators (Kubernetes) are useful.
Mindset
If a developer breaks the CI workflow, fixing it becomes the top priority.
To write good tests, you’ll need to ensure that developers are involved and have access to a code analysis tool.
Whether you have an existing code base or are just starting out, it is certain that bugs will occur as part of your releases. Be sure to add tests when you resolve them to prevent them from recurring.
CD
The deployment of the application is managed by the code. The code describes exactly what the application needs to start and run. The artefact and environment will be the same between the Test/Integration/Production systems because the image is generated only once by the CI.
Continuous Delivery
After automating the creation and unit and integration testing in continuous integration, continuous delivery automates the publication of validated code in a registry/repository. Therefore, to ensure the effectiveness of the continuous delivery process, the continuous delivery process must first be introduced into the development pipeline. Continuous delivery ensures that the code base is always ready to be deployed in a production environment.
In continuous delivery, each step (from merging code changes to distributing production-ready versions) involves automating the code testing and release processes. At the end of this process, the operations team is able to easily and quickly deploy an application to a production environment.
Continuous Deployment
The final stage of a mature CI/CD pipeline is continuous deployment. In addition to the continuous delivery process, which automates the release of a production-ready version to a code repository, continuous deployment automates the launch of an application into a production environment. In the absence of a manual bridge between production and the previous stage of the pipeline, continuous deployment depends mainly on the design of the automation of the testing processes.
In practice, under continuous deployment, a change made by a developer to an application could be released within minutes of the code in question being written (assuming it passes the automated tests). This makes it much easier to receive and integrate user feedback on a continuous basis. Together, these three CI/CD practices reduce the risks associated with application deployment, since it is easier to release changes in small increments than in one block. However, this approach requires considerable upfront investment, as automated tests will need to be written to accommodate a wide range of testing and release stages in the CI/CD pipeline.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.