AWS Elastic Beanstalk is a platform-as-a-service (PaaS) that handles provisioning, load balancing, scaling, and monitoring. You upload your application code and Beanstalk manages the underlying infrastructure. It supports multiple deployment policies:
- All at once: Deploys to all instances simultaneously; fastest but causes downtime.
- Rolling: Deploys in batches; reduces downtime but temporarily lowers capacity.
- Rolling with additional batch: Launches extra instances before deploying; maintains full capacity throughout.
- Immutable: Launches a fresh set of instances; safest option, easy rollback, but slowest and most expensive.
- Blue/Green: Creates a separate environment; swap CNAMEs to redirect traffic; enables zero-downtime and easy rollback.
AWS CodeDeploy automates application deployments to EC2 instances, on-premises servers, Lambda functions, and ECS. It uses an AppSpec file (appspec.yml) to define deployment lifecycle hooks (e.g., BeforeInstall, AfterInstall, ApplicationStart). Deployment types include In-place (existing instances updated) and Blue/Green (new instances provisioned).
AWS CodePipeline orchestrates a continuous delivery pipeline. It integrates with CodeCommit, CodeBuild, CodeDeploy, and third-party tools. A pipeline consists of stages (Source, Build, Test, Deploy), and each stage contains actions.
AWS CloudFormation enables infrastructure-as-code (IaC) using JSON or YAML templates. Key concepts include:
- Stacks: A collection of AWS resources managed as a single unit.
- Change Sets: Preview changes to a stack before executing them.
- Stack Policies: Prevent unintended updates to specific stack resources.
- Rollback: CloudFormation automatically rolls back on failure by default.
AWS SAM (Serverless Application Model) is an extension of CloudFormation for serverless applications. It uses a simplified syntax and the sam deploy command to package and deploy Lambda functions, API Gateway, and DynamoDB tables.
Exam tips:
- Know when to use each Elastic Beanstalk deployment policy and its impact on availability and cost.
- Understand the AppSpec file structure for CodeDeploy on EC2 vs. Lambda.
- Recognize that CodePipeline is the orchestration layer; it calls other services to do the actual work.
- CloudFormation !Ref and !GetAtt are commonly tested intrinsic functions.