SDLC (Software Development Lifecycle) is a process of building and deliverling your application. CI/CD (Continuous Integration/Continuous Delivery, Deployment) is one of the Software development practices.
Lifecycle
- Define requirements, goals, and timelines
- Design application & Design pipeline – deployment strategy
- Create source code & Add tests
- Deploy the tested version
- Monitor how the application is running
SDCL Methodology
- Linear (Sequential) model
- Verification model
- Prototype model
- Agile model
- Big bang model
CI/CD Features
CI/CD (Continuous Integration/Continuous Delivery, Deployment) is a process of speeding up the software delivery by automation into the SDLC – building, testing, deploying, and monitoring -.
- Continuous Integration (CI)
- Small and incremental code changes followed by an automated build and testing
- Code Review
- Easy to catch bugs and fix them
- Continuous Delivery, Deployment (CD)
- Continuous Delivery
- Automates the builds, tests, and preparation of the release (staging)
- Continuous Deployment
- Delivery (builds, tests, staging) + Deployment
- Ensures that the software can be released whenever needed
- Ensures deployments happen often and quickly
- Continuous Delivery
Workflow
- Shared Code Repository
- Automated Build/Deployment
- Automated Test
Benefits of Automated Pipelines
- Rapid Delivery
- Increases the frequency and pace of the release
- Reliability & Security
- Ensures the quality of an application through updates and quick fixes
- Scale
- Manages complex system changes efficiently
- Improved Team Collaboration
AWS Service Stacks for CI/CD
| Stack | Services | Features |
|---|---|---|
| Source, Code | CodeCommit, GitHub, Bitbucket, S3, ECR | Source/Version control service; collaborate on code |
| Build & Test | CodeBuild, Jenkins | Compiles code, runs tests, and generate deployment package |
| Deploy & Provision | CodeDeploy, CloudFormation, SAM, Elastic Beanstalk, ECS, OpsWorks | Automated Deployment to EC2, Lambda, and on-premises |
| Orchestration | CodePipeline | Workflow automation; manages the CI/CD pipeline |
| CodeStar | Manages software development activities in a single project | |
| Notification | EventBridge, SNS | |
| Package | CodeArtifact | Stores and shares software packages |
| Code Review | CodeGuru | Review code automatically using Machine Learning |
| Automation | Elastic Beanstalk | Easily configure and deploy applications |
| Parameters | SecretsManager, Parameter Store, KMS | Manage pipeline parameters |
| Approval | CodePipeline, SNS | Add a manual approval stage into the pipeline |
| Monitoring, Audit, & Observability | CloudWatch, X-Ray, CloudTrail, AWS Config |

