AWS Cloud Development Kit (CDK)
- Define your cloud infrastructure using a familiar language:
- JavaScript/TypeScript, Python, Java and .NET
- The code is "compiled" into a CloudFormation template (JSON/YAML)
- You can therefore deploy infrastructure and application runtime code together
- Great for Lambda functions
- Great for Docker containers in EC2 / EKS
Elastic Beanstalk
-
Elastic Beanstalk is a developer centric view of deploying an application on AWS
-
It uses all the component's we've seen before:
- EC2, ASG, ELB, RDS, etc...
-
But it's all in one view that's easy to make sense of!
-
We still have full control over the configuration
-
Beanstalk = Platform as a Service (PaaS)
-
Beanstalk is free but you pay for the underlying instances
-
Manage services
- Instance configuration / OS is handle by Beanstalk
- Deployment strategy is configurable but performed by Elastic Beanstalk
- Capability provisioning
- Load balancing & auto-scaling
- Application health-monitoring & responsiveness
-
Just the application code is the responsibility of the developer
-
Three architecture models:
- Single Instance deployment: good for dev
- LB + ASG: great for production or pre-production web applications
- ASG only: great for non-web apps in production (workers, etc...)
-
Support for many platforms: Go, Java SE, Java with Tomcat...
-
Health agent pushes metrics to CloudWatch
-
Checks for app health,
-
publishes health events
AWS CodeDeploy
-
We want to deploy our application automatically
-
Works with EC2 Instances
-
Works with On-Premises Servers
-
Hybrid service
-
Servers / Instances must be provisioned and configured ahead of time with the CodeDeploy Agent
AWS CodeBuild
- Code building service in the cloud
- Compiles source code, run tests, and produces packages that are ready to deployed (by CodeDeploy for example)
- Benefits:
- Fully managed, serverless
- Continuously scalable & highly available
- Secure
- Pay-as-you-go pricing - only pay for the build time
AWS CodePipeline
- Orchestrate the different steps to have the code automatically pushed to production
- Code -> Build -> Test -> Provision -> Deploy
- Basis for CICD (Continuous Integration & Continuous Delivery)
- Benefits:
- Fully managed, compatible with CodeCommit, CodeBuild, CodeDeploy, Elastic Beanstalk, CloudFormation, GitHub, 3rd-party services & custom plugins...
- Fast delivery & rapid updates
AWS CodeArtifact
- Software packages depend on each other to be built ( also called code dependencies), and new ones are created.
- Storing and retrieving these dependencies is called artifact management
- Traditionally you need to setup your own artifact management system
- CodeArtifact is a secure, scalable, and cost-effective artifact management for software development
- Works with common dependency management tools such as Maven, Gradle, npm, yarn, twine, pip and NuGet
- Developers and CodeBuild can then retrieve dependencies straight from CodeArtifact
AWS Systems Manager (SSM)
- Helps you manage your EC2 and On-Premises systems at scale
- Another Hybrid AWS service
- Get operational insights about the state of your infrastructure
- Suite of 10+ products
- Most important features are:
- Patching automation for enhanced compliance
- Run commands across an entire fleet of servers
- Store parameter configuration with the SSM Parameter Store
- Works for Linux, Windows, MacOS, and Raspberry Pi OS ( Raspbian)
Systems Manager - SSM Session Manager
-
Allows you to start a secure shell on your EC2 and on-premises servers
-
No SSH access, bastion hosts, or SSH keys needed
-
No port 22 needed (better security)
-
Supports Linux, Windows and MacOS
-
Send session log data to S3 or CloudWatch Logs
Systems Manager - Parameter Store
- Secure store for configuration and secrets
- API keys, passwords, configurations...
- Serverless, scalable, durable, easy SDK
- Control access permissions using IAM
- Version tracking & encryption (optional)