Introduction to DevOps and CI/CD



The course is part of this learning path

Introduction to DevOps and CICD

In this course, you'll learn about DevOps and related practices, in particular, Continuous Integration and Continuous Delivery - or CI/CD for short. 

We’ll cover why using DevOps and CI/CD is important to ensure that your software projects are released as frequently as possible and at the same time ensuring code quality. This will set the scene and context for the remainder of the course in which we review the portfolio of AWS Developer services and how they can be used to incorporate CI/CD into your own software projects.


Welcome back. In this lecture, we'll provide a brief review of DevOps and related practices, in particular focusing on continuous integration and continuous delivery. This lecture will provide us with our foundational concepts. Okay, let's begin. DevOps has in recent times become the de facto approach for building, testing, delivering, and managing software systems. The core idea that DevOps embodies is that both development and operation teams should work closely together throughout the entire software lifecycle from the initial development, building and testing, through to the installation, running, and maintenance of the application. Another important aspect that DevOps addresses is that of agility. Businesses these days often require their applications to evolve rapidly so as to stay relevant with the pace of innovative, et cetera. With this in mind, DevOps helps by ensuring that your software can be iterated on quickly in short sharp cycles. Rebuilt, retested, redeployed back into production, and all done at the same time without sacrificing quality. To facilitate these software lifecycle requirements, DevOps utilizes continuous integration and continuous delivery processes. AWS provides a set of services, CodeBuild, CodeDeploy, CodePipeline, aimed at supporting continuous integration and continuous delivery. Additional services such as CodeCommit, Cloud9, and CodeStar support the widest software development lifecycle. We'll dive a little deeper into the concepts of continuous integration and continuous delivery to ensure that you have a good understanding as to why they are important for your own software projects. The aim of continuous integration is to continually take the individual development efforts and combine them or integrate them together into a master repository. This is often done in an automated manner and as frequently as possible to ensure early detection of any integration bugs. A developer having finished and locally unit tested a code feature will commit the code into a branch within a centrally shared source code repository. Popular examples of such repositories are GitHub, Bitbucket, and now AWS' CodeCommit, all of which are based on git, an open source distributed version control system. Any commit into the repository will trigger a continuous integration cycle in which the continuous integration system checks out the latest version or commit of the code base and then proceeds to execute a number of integration tests on the code. The idea here is that by having an automated and repeatable testing process, combined with developers committing early and often, integration bugs will be captured earlier and therefore more often easily fixed. The aim of continuous delivery is to automate the delivery processes of your software artifacts. By doing so, you remove early pain points, allowing you to maintain speedy delivery of your updates and new features. Furthermore, continuous delivery ensures that your code base is in an always deployable state, meaning that you can maintain a high level of confidence for your software releases. Continuous delivery is very much dependent on using deployment pipelines and therefore is dependent on continuous integration.

About the Author
Learning Paths

Jeremy is a Content Lead Architect and DevOps SME here at Cloud Academy where he specializes in developing DevOps technical training documentation.

He has a strong background in software engineering, and has been coding with various languages, frameworks, and systems for the past 25+ years. In recent times, Jeremy has been focused on DevOps, Cloud (AWS, Azure, GCP), Security, Kubernetes, and Machine Learning.

Jeremy holds professional certifications for AWS, Azure, GCP, Terraform, Kubernetes (CKA, CKAD, CKS).