
Presentation about the course and its dynamics.
Presentation about the project which will be built during the sessions. This project will use all of the concepts taught in this course.
Introductory concepts about AWS and its main services.
Instructions on how to prepare the required AWS account.
Instructions on how to prepare the development environment, including tools installation.
AWS CloudFormation introductory concepts and why it will be used in this course.
Analyzing AWS CloudFormation stacks including their events, resources and properties.
Explanation about what happens when a stack is deleted from the AWS CloudFormation service.
Concepts about the AWS Cloud Development Kit (AWS CDK)
Steps to create the AWS IAM user and prepare the AWS CDK on your environment with the created credentials.
How to use the AWS CDK command to create the infrastructure project.
How to open the CDK project using IntelliJ IDEA Community and analyze its structure.
What will be used in this course about Spring Boot and its integration with AWS services.
Explanation about the first microservice to be create with Spring Boot and how to interact with the AWS services to be used by it.
How to use Spring Initializr to create a project.
A few configuration to make sure your IDE is properly configured.
How to execute the application using the IntelliJ IDEA Community Edition.
Using the Spring Boot annotations to create the products controller.
Creating the Dockerfile to be able to generate the Docker image of this application.
Configuring the build.gradle file with the tasks to let Docker generate the image.
Concepts about AWS ECR repositories.
How to create a class in the CDK project to represent a CloudFormation stack.
Create an AWS ECR repository with AWS CDK, setting removal policy to destroy and image tag immutability, and expose it via a public getter for other stacks.
How to organize the first stack to be deployed by the CDK project.
Preparing the AWS account to deploy AWS services using AWS CDK.
Deploying the first stack and ECR repository using CDK commands.
Uploading the ProductsService Docker image using the IntelliJ IDEA.
Concepts about AWS VPC, its main components, and why it will be used in this course.
What is availability zones and why to use them.
Basic concepts about security groups of a VPC.
What are VPC subnets, in the context of our container based application.
Another VPC component to control the traffic of the applications behind the VPC.
The most important VPC component for container based applications in a VPC.
When to use NAT Gateway and private subnetworks in a VPC.
An alternative to NAT Gateway.
Create a new stack to hold the new AWS VPC resource.
Use AWS CDK commands to deploy only the new stack.
Explore the deployed vpc resources in the aws console, including public/private subnets, nat gateways, and internet gateway, and see how cdk manages this complex infrastructure across two availability zones.
Learn to destroy AWS infrastructure to save costs using CDK destroy, prioritizing VPC and Nat gateway removal while preserving ECR under free tier, and monitor costs with AWS Cost Explorer.
Description of the whole structure to be used to hold the microservices using the same cluster, but with different definitions and permissions to run.
Concepts about these two important parameters when defining container based applications.
What is a ECS task definition and how it will be used to define our service in AWS ECS.
The important piece of a application running on AWS ECS.
Why to use AWS ECS services and how it will be organized in this project.
Initial concept about scaling in AWS ECS.
The multiple availability zone in the AWS ECS concept.
Create a new stack to hold the new ECS cluster, which will be a shared resource between several stacks.
Learn how the AWS application load balancer integrates with ECS to route HTTP traffic and forward requests to ECS service instances, monitor availability via Spring Boot actuator, and optimize costs.
An important piece of Application Load Balancer while building container based applications.
This is the component responsible to monitor our applications.
Now it's time to understand this VPC component, but in the context of the Application Load Balancer.
Create a shared application load balancer, network load balancer, and VPC link to API gateway within a VPC, enabling reuse by other stacks.
Organize infrastructure by creating a new network load balance stack with an application load balancer and VPC link, using the same tags as the VPC.
What are the remaining resources to run the ProductsService in an ECS service.
Create the new stack to hold the AWS resources to run the ProductsServices.
Create the ECS task definition, allocating a proper amount of memory and CPU to run the service.
Create the service log driver to configure it to write applications logs to AWS CloudWatch Logs.
Setup the task definition to use the Docker image hosted in the AWS ECR repository, configure the port mappings and the log driver.
Create the ALB listener for the ProductsServices.
Create the AWS Fargate service and setup it to use the created task definition.
Configure the ALB target group to monitor the ProductsService through its health check mechanism.
Create a new NLB listener and its target group to be used by the ProductsService.
Deploy the products service stack with AWS CDK, resolving dependencies and confirming security settings for port 8080, logging, and image access, while monitoring the deployment in ECS.
Learn to troubleshoot ECS deployments by inspecting tasks in the ECS console, checking service filters, task status, target groups, and CloudWatch logs for errors and health insights.
Basic concepts about AWS API Gateway and why to use it with AWS ECS services.
How to integrate AWS API Gateway with services running in an AWS ECS service protected by an AWS VPC.
Create the stack to hold the API Gateway resources.
Create the products resource and its first method, only to test the integration with the ProductsService.
Organize the API gateway stack by creating it after the network load balancer and VPC link, define dependencies, then deploy with CDK and test integration.
In this course you will create several microservices in Java 21, using the Spring Boot V3 framework and Docker containers, building a backend application to interact with Amazon Web Services resources, as the mentioned below. These resources will be created in AWS using the AWS Cloud Development Kit (CDK) V2, a modern way to model and provision infrastructure in AWS. The AWS CDK is one of the best infrastructure as code, or IaC, tools for AWS;
Spring Boot V3 is a powerful Java framework to build server-side applications with annotations, controllers, services, request interceptors and much more.
This course will cover the following AWS resources and tools with practical exercises:
AWS ECS: the Elastic Container Service is the AWS container orchestration service. With this service it's possible to manage the Docker based microservices containers execution in a robust and scalable way. And with the AWS Fargate, the Serverless compute for containers from Amazon Web Services, it isn't necessary create EC2 instances, reducing the operating cost of container based applications;
AWS ECR: with the Elastic Container Registry from AWS it's possible to create private repositories to store the microservices' container Docker images;
AWS VPC: with the Virtual Private Cloud it's possible to secure the infrastructure with private subnets and network security policies for inbound and outbound traffic rules;
AWS ALB: the Application Load Balancer from AWS allows the incoming HTTP traffic to be balanced between all the available application instances, and with the integrated target groups, each instance can be monitored to only receive traffic if it is healthy;
API Gateway REST: with the AWS API Gateway it's possible to protect the application REST API, as well as performing query string parameter and requests' body validation;
CloudWatch Logs: responsible for concentrating applications logs and its metrics. The applications that will be created in this course will generate logs into CloudWatch Logs in a JSON format, using the log4j2 library. In this way, we can inject parameters in the logs, to be used in queries in the AWS CloudWatch Logs Insights console;
CloudWatch Alarms: with the alarms from CloudWatch it will be possible to monitor the abnormal occurrences from the applications and AWS resources;
CloudWatch Container Insights: with the Container Insights it's possible to aggregate monitoring information from the applications running in AWS ECS, including its logs;
DynamoDB: the DynamoDB is a powerful NoSQL and non-relational database managed service. This course presents the usage of the DynamoDB enhanced client from the AWS SDK V2 for Java, which is a high-level library that allows a way to map client-side classes to DynamoDB tables;
SQS: the SQS, or Simple Queue Service, is a queue service which allows asynchronous communication between applications, in order to exchange messages and events;
SNS: with the SNS, or Simple Notification Service, it's possible to create topics and publish messages to be received by several resources and applications;
S3: the S3, or Simple Storage Service, has a file storage with no server provisioning. Also, the S3 generates notifications when files are added to it;
X-Ray: the AWS X-Ray is a service which allows analysis and debugging of distributed applications;
IAM: the Identity and Access Management from AWS allows roles and permissions management, granted to users and services to access other AWS resources;
AWS Cost Explorer: with the Cost Explorer from AWS it's possible to generate cost graphs about resource consumption, split by resource types and tags, which can identify applications and their parts.
These resources will be created on AWS using the AWS Cloud Development Kit - CDK, a modern way of modeling and provisioning infrastructure on AWS using the Java language. The AWS CDK is ideal if you want to work in the DevOps and in the infrastructure as code fields.
With this you will also learn how to use the AWS SDK V2 for Java, which is a set of libraries developed by AWS itself to use its services.
The AWS SDK V2 for Java is fully integrated with the Spring Boot V3 framework and with JDK 21 libraries, so it's very easy to access the AWS resources in an elegant way, creating operations to be execute concurrently.
If you already have AWS certification and are looking for hands-on experience, you can get that with this course, through the exercises that will be offered here.
This course has a good balance between theoretical and practical exercises. You can expect detailed explanations with diagrams and well-guided implementations, always with a well-defined purpose.
Note: This course is not intended to prepare you for an AWS certification exam. There are other courses that are specific to AWS certifications.
Also included in the package, when you buy this course:
Student support, through the platform questions and answers section;
Project source code to help you at the beginning of the course;
Quizzes to test your knowledge about course topics;
Practical exercises to let you practice, with detailed solutions offered by the instructor;
JetBrains coupon code. It gives access to any JetBrains IDE of your choice for 6 months.
About the instructor:
I've been worked daily with the presented technologies in this course since 2016, acting as an AWS hosted solutions developer;
I've been a profesor in cloud computing and mobile subjects, including AWS, in a postgraduate course for almost 10 years;
I have published books on the subject;
I am part of the AWS Community Builder since 2020, a global community created by Amazon Web Services.
Credits for the music used in the course presentation: Bensound - License code: 8XYDILY4RHGNN6VB