How continuous integration and continuous deployment can make your life easier

Niels Smits
5 min readJun 16, 2021

Abstract

Continuous practices are an ongoing and ever-growing process of optimizing and automating your development and deployment process. Many developers are unaware of this architecture, let alone how to implement it. The use of CI/CD results in a significant decrease in the number of bugs and errors, programmers can work more effectively due to simplification of the development and deployment process, and it decreases the time-to-market for new features. This is why it is essential every programmer understands these concepts.

This article discusses:

  • Automatically analyze the code with CI.
  • Automatically deploy the features with CD.
  • Benefits of using CI/CD.

Technologies discussed:

Continuous integration, continuous deployment.

Introduction

Continuous practices have become an emerging area in the software engineering industry. It simplifies and automates the gaps between development and operations by automatically building, testing, and deploying software. This is done using pipelines. As it continues to grow, it begins to weave its roots into standard programming environments. However, not every programmer implements these practices. In particular, CI/CD should be seen as standard practice. Therefore, Git has emerged as the accepted standard for continuous integration. In most cases, it is in close association with GitHub, which provides on-demand availability of version control. From personal experience, Git and GitHub remained unknown up until the end of the first year of my computer science studies. It resolved numerous problems that existed at the time, and it is undoubtedly a superb CI tool. The same can be said for continuous deployment, which enables the automatic deployment of new features. Whilst it is considerably more difficult to use, it should be treated as one of the core aspects of programming. CI/CD assists the programmer from development up until deployment while preserving the quality from the traditional development methods. This article addresses why all developers should know (and use) this infrastructure.

Related Research Work

In the case study “Benefits and challenges of Continuous Integration and Delivery”, Mr. Wikström, A. established multiple benefits of using CI/CD. The main advantages include faster iteration, quality assurance, and easier development. In addition, the CI/CD infrastructure provides continuous analysis on potential code issues. As a consequence, developers are assuming greater responsibility for their tasks, the number of bugs and errors decreased significantly, and both development and deployment are simplified; resulting in less time loss (Wikström, 2019).

In addition to the previously mentioned case study, the article by Shahin, M. et al. emphasizes many of the previously mentioned elements. However, the findings from the conducted research were mainly pinpointed on two core concepts: reliability and speed. With the current competitive market and growing rivalry in the software industry, companies are paying more attention by allocating their resources more carefully. In this regard, CI/CD helps companies accelerate the development and deployment of their features. In consequence, the time-to-market rate is decreased. As a result, consumer happiness and product quality have increased (Shahin et al., 2017).

Analysis

The CI/CD architecture is a well-known software development methodology with several advantages. Continuously integrating the changes with the main codebase allows programmers to develop new features with a near-exact replica of the live codebase. By being up-to-date with the main codebase, merging code and adding new features can be done effortlessly. Successful integration implies that the following aspects are automated: version control, analysis on build errors, and running tests (Wikström, 2019). Mr. Wikström’s definition of CI is accurate, and my experience with GitHub verifies this, as GitHub facilitates and encourages the usage of the three preceding aspects. Once the integration was a success, the code can be automatically deployed to the production environment. Given the advantages of CI/CD, these continuous practices are a perfect fit for programmers. Among the key benefits:

  • Continuously analyze the codebase on errors and bugs by using pipelines.
  • Ensure quality by automatically running tests on code changes.
  • Decrease the time-to-market rate by automatically deploying the new features more frequently (Shahin et al., 2017).

When features are released more often, Shahin et al. are fully justified in their assertion that customer happiness rises (Shahin et al., 2017). In fact, Agile SCRUM is based on this principle and is widely used among programmers. Frequent releases are beneficial because they provide information about the current status of the product and enable consumers to provide feedback. Even with the acknowledged issues that CI/CD entails, I feel the observations made in these reports are reasonable. According to the previously mentioned papers, the following are the most significant challenges: pipeline complexity, infrastructure management, and slow/substandard tests (Wikström, 2019; Shahin et al., 2017). The identified challenges are quite advanced and are not applicable to the scope of this article. In fact, these difficulties emphasize the point of this article: programmers’ lack of understanding of CI/CD.

CI/CD greatly impacted my own project too. Multiple pipelines have been set up for the automation of building, testing, and deploying both the Android and Laravel application. In my opinion, CI/CD has a great positive impact on the developing process. Although setting up the pipelines took more hours than I expected, the benefit I experience now is great. Time normally spent on building, testing, and releasing can now be spent on developing. Like Axel Wikström (2019) said, my research shows that CI/CD ensures faster and easier deploying, and better quality assurance. In my opinion, these three points are valid. The building and releasing process regarding my own project has decreased in time.

In addition to this, bugs have been spotted faster due to automated testing and an increased number of deployments. As Martin Fowler (2006) said, users will get angry when bugs occur in your software. This has led to a more positive customer relationship.

I disagree with the point Axel Wikström is trying to make about developer responsibility. Axel Wikström (2019) said, in my opinion developers are feeling more responsible for their own products. In my experience, I lost a part of the responsibility I felt for my product. The pipelines removed a substantial part of the processing time. Handling this part manually gave me more insights and a greater feeling of responsibility.

Conclusions & Recommendations

The take-away for developers is clear: setting up a basic CI/CD pipeline provides significant benefits from development up until release. As the complexity or size of the application increases, the value of the CI/CD process will increase. Although setting up pipelines takes time, the benefit you get overshadows the time you have to put into it. It will thoroughly analyze the entire codebase and deploy the new features if possible. Security measures have been implemented, so if an error occurs, the codebase will rollback to its last stable version. In short, CI/CD heavily supports programmers by automating a range of processes.

It is essential that every programmer knows about these aspects since it can reliably give feedback and save enormous amounts of time. When working on a long-term project, I strongly advise programmers to learn CI/CD and set up a pipeline. It does, however, take some effort to set up, but it is well worth it in the long run. If you want to take this project even further I would recommend looking into extra pipelines, such as sending an email to the product owner once a new version is released and successfully deployed.

Bibliography

Fowler, M. (2006, May 1). Continuous Integration. Retrieved from martinFowler.com: https://www.martinfowler.com/articles/continuousIntegration.html#BenefitsOfContinuousIntegration Accessed 14 June 2021.

Shahin, M., Babar, M. A., & Zhu, L. (2017, March 1). Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices. Retrieved 06 June 2021, from https://www.researchgate.net/publication/315381994_Continuous_Integration_Delivery_and_Deployment_A_Systematic_Review_on_Approaches_Tools_Challenges_and_Practices

Wikström, A. (2019, February 22). Benefits and challenges of Continuous Integration and Delivery: A Case Study. Retrieved 06 June 2021, from https://helda.helsinki.fi/bitstream/handle/10138/304674/Wikstr%c3%b6m_Axel_Pro_gradu_2019.pdf?sequence=1&isAllowed=y

Collaborators

Bram Sliepen, Matthew Tanti, Sven Goossens, Kenneth Gerrits, Olivier van Houdt, Onyi Lam.

--

--