Blog
Quality and Speed of Deliveries with DevOps Pipelines

Quality and Speed of Deliveries with DevOps Pipelines

With increasing competitiveness and a scenario of low customer loyalty, the rapid launch of new features and experiences can be crucial for your business success.

3 de novembro de 2022

With increasing competitiveness and a scenario of low customer loyalty, the rapid launch of new features and experiences can be crucial for your business success. However, the quality and stability of your digital solution are fundamental to ensure that features are not released with problems and cause an unexpected negative impact on your end user.

How is it possible to develop more features and still ensure their quality before launch? In this scenario, we can use the concept of DevOps to reconcile development with the operationalization of our digital solution.

What is DevOps?

The term first appeared at the Velocity event in 2009, where John Allspaw and Paul Hammond presented the lecture titled: “10+ Deploys Per Day: Dev and Ops Cooperation at Flickr” which recounted the results and challenges of the closer collaboration between the development and operations teams at Flickr. Patrick Debois, who watched the lecture online and would go on to create the term, had the idea of creating the “DevOps Days” event, which would take place that same year in countries such as Brazil, the USA, Germany, among others.

DevOps is a culture in which development and operations teams align on practices in such a way that it is fast to develop and make a production delivery, without compromising current functionalities and ensuring the resilience of the application.

Traditional development methodologies normally separate the departments of development, IT operations, and quality control, not integrating development and deployment activities between IT and quality control departments. DevOps promotes a set of processes and methods for thinking about communication and collaboration between departments. With DevOps methodologies, development and operations are not treated as separate areas but work collaboratively for the deployment of a functionality in an automatic and transparent way.

How to promote DevOps culture?

There are a number of practices that can be implemented by your team to achieve a DevOps culture. Let’s learn about some of them:

  • Agile methodologies ÔÇô A project that follows agile methodologies will be much easier to adapt to DevOps culture since these concepts are connected. When we talk about DevOps, we are talking about automating the delivery of functionalities while maintaining consistency but considering small deliveries so as not to impact what already exists in production.
  • Creation of CI/CD pipelines ÔÇô The term CI/CD comes from Continuous Delivery/Continuous Integration. Continuous integration practices run tests on applications, verifying that the environment, even after the integration of the new functionality, continues to work as expected. With the implementation of pipelines, tests are carried out automatically, and automated regression tests can also be created to ensure that old applications will not break and will continue to work. Continuous delivery deals with practices to automate the deployment process in production.
  • Monitoring ÔÇô Since Development and Operations work together, it is essential to implement monitoring practices for your application, such as creating logs, which can be done at the code level by the development team, to operational levels in terms of the services that host the platform. Analyzing logs can generate monitoring dashboards that make it possible to understand the delivery impacts of each new functionality.

What are the DevOps stages?

DevOps is a cyclical culture, meaning its stages always repeat with each iteration/new functionality that is implemented. Let’s learn in detail about each of the stages and the main tools used in each one.

  • Plan (Planning) ÔÇô In the planning phase, the team is responsible for creating the backlog of activities to be developed in the proposed timeframe. In terms of DevOps application, planning includes establishing which test environments will be used, which tools will be employed, and who will be responsible for executing each of these tasks.
  • Code (Code Development) ÔÇô In this stage, the team begins developing functionalities and can also use automation tools to increase testing and delivery speed. It is worth noting that the development team can write unit tests that will already be incorporated into the CI/CD pipelines for execution.
  • Main tools: Version control and pipeline creation tools such as Github, Gitlab, Azure DevOps, and Code Commit. For project documentation and tracking, we can use Jira and Confluence.
  • Build (Construction) ÔÇô In this phase, the code is built, which means downloading it, compiling it, and creating a ready version of the application for testing. In this phase, the unit tests written in the Code stage can be executed so that, already at this stage, any change that breaks the scenarios mapped by the developers can be blocked.
  • Main tools: Each language has a recommended tool for use in this construction stage. We can mention Gradle or Maven for Java/Kotlin applications.
  • Test (Testing) ÔÇô In this phase, we carry out end-to-end, integration, regression, and performance tests. These tests can be automated in the CI/CD pipelines, which automatically execute them and block the release if the written code does not pass the tests.
  • Main tools: Selenium, Jmeter, Cypress are some test automation and performance testing tools.
  • Release (Launch) ÔÇô In the release stage, the operations team confirms whether the version of the platform that was built and tested is ready to be integrated into the production environment. Once again, vulnerabilities and bugs are checked, and the pipelines that automate these processes are fundamental for agility in the release process.
  • Main tools: Gitlab, CircleCI, Github, Jenkins, CodePipeline are some tools used to create a sequence of verification steps before performing deployment to production.
  • Deploy (Deployment) ÔÇô The deployment phase is the moment when the current stage of the project is actually moved to production. This phase is connected to the release phase, since as soon as the verifications on the current version of the project are done, the release pipeline itself deploys the change to production. In this stage, the application is deployed using containers or serverless services, depending on how the project was architected.
  • Main tools: In addition to the tools already mentioned in the delivery stage, deployment uses serverless services or containers like Docker and Kubernetes for platform hosting. In the case of a Cloud application, other services available from cloud providers may be used to assist in deployment.
  • Operate (Operation) ÔÇô With the application running, the team operates the platform by managing application configurations. These configurations can range from environment variables, scaling configuration, to specific parametrizations of your business.
  • Main tools: The main tools used here are services that provide service orchestration such as Kubernetes itself or services from a cloud provider.
  • Monitor (Monitoring) ÔÇô With monitoring, the team is able to measure the platform’s performance in real time and extract adjustments and insights to be delivered in a next planning phase. In this stage, interactive dashboards are usually created to have a broad visibility of the entire platform.
  • Main tools: Some observability tools can be implemented such as Grafana and Zabbix.

DevSecOps: When security is an intrinsic part of DevOps

All stages can be linked to security concepts. With this, we evolve the DevOps practice to DevSecOps, in which besides ensuring quality in terms of functionality, quality in terms of security is also guaranteed.

The DevSecOps practices at each of the stages allow basic security checks to be carried out to prevent your platform from being targeted by the main known vulnerabilities.

Have any questions, or want to learn more?

Zappts can help your company build digital products and services that take into account the best DevSecOps practices. Since 2014, Zappts has been delivering business results through technology, delivering high-relevance cases using agile processes, best development practices and software quality, and a unique capacity to understand and solve the day-to-day pains of technology development projects.

We offer solutions for all phases of digital solution development, from discovery processes to solution sustainability. With defined processes and agile management, our deliveries are always based on expectation alignment, quality, and technical robustness.

Get in touch
by clicking here, and learn more about Zappts.

Continue your studies, check out our material on “What is Infrastructure as Code”
by clicking here!