Continuous Integration/Continuous Delivery (CI/CD)

From apppm
Revision as of 11:39, 7 April 2023 by S184230 (Talk | contribs)

Jump to: navigation, search
DevOps flow

Developed by Mikkel Anderson

Customer expectations are generally the same nowadays, regardless of your business: they want a quality product and efficient service. Annual releases with a pre-defined feature set packed into compact discs and given to merchants are a thing of the past. Delivering client satisfaction at the necessary pace necessitates a streamlined software development lifecycle that saves time, effort, and money wherever possible. Continuous Integration/Continuous Delivery (CI/CD) are at the heart of modern software development, allowing businesses to deploy new, working features earlier and more frequently.

The concept's premises include why CI/CD is a must-have for modern day software development, what role CI/CD plays in project management with all its advantages. CI/CD is a crucial component of DevOps and any contemporary software development methodology. By boosting an organisation's output, boosting efficiency, and optimizing workflows through integrated automation, testing, and collaboration, a purpose-built CI/CD platform maximizes development time. The CI/CD features can help in reducing the complexity of application development as they get bigger. Organisations may eliminate development silos (separation), let applications grow securely, and maximize the benefits of CI/CD by also implementing additional DevOps techniques like shifting left on security and tightening feedback loops. The concepts also include the core differences between Continuous Delivery and Continuous Deployment and lastly how to get started with CI/CD.

CI/CD is most definitely a must have in Agile Project Management and Scrum as it helps both the business side and the development side of the company to streamline software development and delivery.

Contents

Background

Here are the answers to all of the CI/CD-related answers that a project manager could seek.

CI/CD is very important in modern day software development for several reasons: Rapid and consistent delivery - With CI/CD, development teams can deliver new software features and changes more quickly, allowing companies to react to consumer requirements more quickly and remain ahead of the competition. Improved quality - By integrating code changes into a common repository multiple times per day, CI/CD can aid in the identification of issues and defects early in the development cycle, making it simpler to resolve them before they become larger problems. Reduced risk - In CI/CD, automated testing and release procedures can help reduce the risk of human error and ensure that modifications are thoroughly evaluated before being deployed to production. Increased collaboration - CI/CD encourages more frequent code integration and input among developers, testers, and other users, which can contribute to better communication and a more effective development process. Overall, CI/CD is an essential component of software development because it enables companies to produce high-quality software at a quicker rate while decreasing risks and increasing team cooperation.

For several reasons, CI/CD is also important in project management: Faster project delivery - By automating many aspects of the software delivery process, CI/CD enables project teams to produce results more rapidly. As a result, project managers will be able to make deadlines and accomplish project objectives more effectively. Greater awareness and control - Project managers can gain greater view into the state of code modifications, testing, and deliveries by adopting CI/CD processes. This enables them to detect possible problems early and take corrective action as required. Along side with the benefits of Improved quality, Reduced risk and Increased collaboration CI/CD is very much essential in project management. Mainly because it enables project teams to produce results faster and with higher quality, while also encouraging collaboration, communication, and risk reduction. Which are some of the objectives a modern day project manager would like to achieve.

CI/CD is also benefiting the organisation, in the same ways as it is benefiting in project management: Faster Time to Market - CI/CD shortens the time required to introduce new features or upgrades to current ones, allowing organisations to remain competitive in a quickly changing market, such as the software industry. Cost Savings - Because CI/CD automates the deployment process, it decreases the chance of developer mistakes and downtime, which may be costly for enterprises in terms of lost revenue and productivity. Overall, CI/CD enables enterprises to provide high-quality software more quickly and often, while decreasing costs and boosting cooperation.

To summarise the key advantages of CI/CD - It makes software development and deployment a much easier task not only for the developers, but also the project managers and the entire organisation. It increases the developers throughput, as they can focus on making new features and dealing with less bugs. It enables the project managers to get an overview of what has been made, and if there are any issues. The organisation benefits by saving cost, and innovating the entire organisation.

CI/CD's role in Scrum and DevOps

Both Scrum and DevOps approaches rely heavily on CI/CD. CI/CD facilitates the Agile concepts of continuous delivery and continuous improvement in Scrum. CI/CD helps teams to rapidly provide workable software in fewer cycles by automating the build, testing, and deployment processes, allowing for faster feedback and response to changing needs. CI/CD also contributes to the Scrum framework by allowing teams to evaluate and adjust their software in real time, resulting in higher quality and reliability. CI/CD is also a core approach in DevOps that facilitates the integration of development and operations teams. CI/CD helps to reduce silos between development and operations by automating the software delivery process, allowing for quicker and more effective cooperation.

DevOps teams may also use CI/CD to produce software more often (Minimum Viable Product, MVP), with greater quality, and with less risk. CI/CD is a critical component of both Scrum and DevOps approaches, assisting teams in working more effectively and efficiently, delivering software quicker, and achieving higher quality and dependability.

Overview of CI/CD

CI/CD is a way of delivering applications to customers on a regular basis by incorporating automation into the phases of app creation. Continuous integration, continuous delivery, and continuous deployment are the three primary ideas associated with CI/CD. CI/CD is an answer to the issues that new code integration can create for development and operations teams.

Specifically, CI/CD brings constant automation and tracking throughout the app's lifetime, from integration and testing to delivery and deployment. These linked practices are often referred to as a "CI/CD pipeline" and are backed by agile development and operations teams using i.e. DevOps.

Differences between continuous integration, continuous deployment and continuous delivery

The abbreviation CI/CD has several interpretations. The "CI" in CI/CD always alludes to continuous integration, which is a developer automation procedure. Successful CI means that new code changes to an app are created, evaluated, and merged into a common repository on a frequent basis. It is an answer to the issue of having too many app branches in development at the same time that may conflict with each other.

The "CD" in CI/CD stands for continuous delivery and/or continuous deployment, two ideas that are sometimes used equally. Both are concerned with automating subsequent steps of the process, but they are sometimes used independently to demonstrate how much automation is taking place.

Continuous deployment, the other "CD", can refer to the automated release of a developer's modifications from the repository to production, where consumers can utilise these modification. It tackles the issue of an operation team being overburdened with repetitive processes that slows down the release of the application. It expands on the advantages of continuous delivery by automating the next step of the pipeline [1] [2].

Implementation of CI/CD

Implementation of CI/CD can like software be very complex or very simple, it is up to the different development teams to figure out what is needed and to what extend. A very popular and current state of the art workflow builder is Github Actions. It is not limited to what a CI/CD pipeline should be able to do, it will "Make code reviews, branch management, and issue triaging work the way you want" [3]. Hands on guidance on how to get started, and where to get more information.


Jenkins [4]

The different pipelines: [4] [3]

Limitations

What problems does CI/CD not solve nor address?

References

  1. [https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment] Continuous integration vs. delivery vs. deployment (Visited 19/02/2023)
  2. [https://www.redhat.com/en/topics/devops/what-is-ci-cd] What is CI/CD? (Visited 06/04/2023)
  3. 3.0 3.1 [https://github.com/features/actions] Github Actions (Visited 19/02/2023)
  4. 4.0 4.1 [https://www.techtarget.com/searchsoftwarequality/definition/Jenkins] Jenkins (Visited 19/02/2023)
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox