The goal is to deliver an application into production globally in an automated and reproducible fashion.
- Containerization
- Continuous Integration
- Continuous Deployment
- Infrastructure as Code
- Performance efficiency
- Cost optimization
- Security
- Reliability
- Serverless
- Managed Services
You need to have the following installed on your laptop:
- Java
- Docker
- Git
- An IDE: IntelliJ or Eclipse for example
Clone the application code into your own repository
- Continuous Integration
- Infrastructure as Code
How to execute and distribute an environment agnostic application.
- Containerization
Set up a pipeline that pulls your code and runs the unit test suite.
- Continuous Integration
- Infrastructure as Code
Extend the pipeline to push your docker image to the docker registry (ECR)
- Continuous Integration
- Infrastructure as Code
Set up a Fargate cluster as the runtime environment for your docker containers using infrastructure as code.
- Infrastructure as Code
- Performance efficiency
- Cost optimization
- Security
Extend the pipeline to deploy docker containers in the container cluster using images from the docker registry.
- Continuous Deployment
Connect to the load balancer address of the running application container and verify that it's reachable and up and running.
Modify the code that defines the container cluster to run more instances in parallel.
- Reliability
The application needs a document database as a backend. Set up a DynamoDB instance using infrastructure as code.
- Serverless
- Managed Services
Run the application in multiple regions using and balance traffic with failover routing in Route 53. Simulate the outage of a data center - thanks to your global presence your application is still available!
- Reliability
- Scalability
What's the cost of the resources we've created and how can we remove no longer needed resources.
- Managed Services
Build upon the first part and add new principles
- 3R's of Enterprise Security
- Auto-scaling
- Monitoring and Tracing
- Structured log data