
Learn to build Java backend microservices with Spring Boot on AWS, including a user service with Cognito, JWT authentication, three microservices with MySQL via RDS, and S3 storage.
Install the Java SE development kit, download Java 17 from the Oracle download center, and set the JDK bin path in system environment variables for the command line.
Install IntelliJ community edition and configure it for Java development. Create a demo project, print hello world, and run a Java application to verify the setup.
install postman by downloading the mac or windows installer from postman.com and completing the setup, then create apis, collections, and environments for http requests like get, post, delete, and patch.
Install Docker Desktop on Windows or Mac to use the Docker Engine and CLI commands like docker build, docker pull, and docker run; follow WSL2 setup and user permissions.
Install Gradle by downloading the binaries from gradle.org, unzip, update the PATH and JAVA_HOME environment variables, verify Gradle, and use it to build a spring boot jar for AWS.
Install AWS CLI by downloading the installer for your OS and running it. Verify with aws --version and update the PATH if needed; note it uses Python under the hood.
Explore the monolithic architecture, a single jar deployment, and compare it with microservice architecture, weighing its development and testing against scalability limits and the need to rebuild for changes.
Explore web services as machine-to-machine communication over the internet. Evaluate interoperability and platform independence with xml or json, and compare rest and soap for microservices over http.
Explore soap, the simple object access protocol for web services, using xml messages with a soap envelope containing header and body, wsdl definitions, and typically running over http.
Explore the HTTP protocol as the foundation of RESTful web services, explaining stateless, connectionless client-server communication, request/response structure, and common methods like GET, POST, PUT, and DELETE.
Explore representational state transfer (REST) as an HTTP-based architectural style, identifying resources by URI and returning JSON or XML representations without a service definition.
Switch from monolithic to microservice architecture by splitting into independent services with separate databases, deployable on different servers, communicating via http rest APIs, enabling independent scaling and language flexibility.
Understand cloud computing fundamentals and why organizations use platforms like AWS, Azure, Google Cloud, and IBM Cloud to deploy scalable, cost-efficient web applications.
Explore the three cloud service models—software as a service, platform as a service, and infrastructure as a service—clarifying provider and client responsibilities with Gmail, AWS, and app deployment examples.
Explore Amazon Web Services fundamentals, covering core services like EC2, S3, RDS, DynamoDB, and Elastic Container Registry, and learn how security, flexibility, scalability, and elasticity enable rapid cloud deployment.
Learn to manage AWS billing by setting a monthly cost budget, receiving alerts when thresholds are exceeded, and configuring budgets to avoid unnecessary expenses.
Explore regions and availability zones in AWS: regions are geographical areas; availability zones are independent data centers with low-latency links. Use multiple zones to reduce latency and improve fault tolerance.
Understand virtual private cloud, a region-based, logically isolated network with public and private subnets to secure applications and databases. Learn how IP address ranges and gateways enforce access control.
Explore configuring a virtual private cloud in AWS, using a default VPC with public subnets across availability zones, route tables, internet gateway, and options for private subnets and NAT gateway.
Explore how AWS ECS and ECR orchestrate containerized Java apps by building Docker images with Gradle, storing them in a registry, and deploying via clusters, task definitions, and services.
Explore why Spring and Spring Boot win in Java apps, by unpacking the dependency inversion principle and how Spring's inversion of control injects abstractions via constructors and annotations.
Learn to set up a spring boot microservice with gradle, lombok, web, and jpa, configure yaml, expose a hello endpoint at /vehicles/hello, and prepare for AWS deployment on port 8080.
Build the jar with Gradle, rename it to vehicle udemy app.jar, create a Dockerfile with openjdk 17, build and tag the image, and push to AWS for deployment.
Configure the AWS CLI and push a docker image to a private ECR repository, using get-login-password, docker login, and tag mutability for CI/CD with Jenkins.
deploy a spring boot microservice to aws fargate via ecs, create a cluster and task definition, run a service, and access the vehicles endpoint on port 8080.
Create and dockerize a new user service from scratch with Spring Boot, Gradle, and Java 17, run locally, and prepare for AWS Cognito integration.
Explore the fundamentals of AWS Cognito as an identity platform handling authentication and authorization with user pools and identity pools, including JWT tokens, client ID, and user pool ID.
Learn to configure AWS Cognito in a Spring Boot app by wiring environment variables through application YAML, using AWS Secrets Manager, and setting up credentials providers for user pool operations.
Create and save new users by transforming Java user objects into AWS Cognito attributes using the Cognito configuration and a Spring component user builder, via JSON REST calls.
Continue building AWS Cognito admin create user request, transforming a user into a Cognito-compatible request with verified email and phone attributes, using pool ID.
Implement a Spring Boot Cognito user service with an interface and CognitoUserService, transforming user attributes into a Cognito representation and handling admin create user requests with default then permanent passwords.
Update a Cognito user with a permanent password using an admin set user password request and builder pattern, then map AWS attributes to a Java user object.
Create and save new users via a Spring Boot RestController, integrate with AWS Cognito user service, map JSON requests to user objects with Jackson, and return non-null responses.
Learn to validate user input, return clear error messages, and handle exceptions with a base controller and @ExceptionHandler, using response entities to emit 400 bad request and 201 created statuses.
Learn to validate user input in Spring Boot using Jakarta validation annotations, handle not blank and size constraints, and implement a global exception handler to return concise error messages.
Learn to fetch all users from AWS Cognito via the Cognito identity provider client, implement a get all users method, and expose it with a get mapping for HTTP /users.
Learn how to fetch all users from AWS Cognito by using a pagination token to paginate in chunks of 60, iterating until no token remains.
Fetch a single user with a get request using a path variable in a Spring Boot app backed by AWS Cognito. Handle not found with a custom exception.
Rename the username field to login to align variable names across the user service and other microservices, including AWS and Cognito.
Explain the standard session and cookie approach to authentication in restful Java backends, using server-stored sessions and cookies with session ids, and discuss web tokens as a scalable alternative.
Explore JSON web tokens (JWT) as a self-contained, cryptographically signed standard for securing stateless authentication via the authorization header, using base64-encoded header, payload, and signature.
Learn to implement login with AWS Cognito to obtain a JWT, calculate a secret hash, and use access, ID, and refresh tokens for role-based authorization.
Leverage Cognito login and JWT tokens to authorize requests, define a profile enum for standard users and administrators, and map Cognito profile attributes to the user object.
Extract the JWT from the authorization header, decode the payload to obtain the user id from Cognito, and enforce endpoint permissions by implementing a Spring JWT filter.
Parse the JWT payload to extract the user id, and fetch the user via the Cognito user service. Store the user in a per-request user context to enforce authorization checks.
Implement admin-only access by using a JWT filter and user context to validate Cognito id tokens, enabling or denying endpoints such as getting all users and creating users.
Create a new car rental microservice using Spring Initializr with Gradle and Java 17. Include Lombok, Spring Web, and Spring Data JPA to store vehicles in a database.
Install and configure MySQL community server on Windows from the official site, set the root password, update the system path, and create a Udemy database for future use.
Configure a car rental backend by switching to application YAML, wiring a MySQL data source with JPA, showing SQL, and running Tomcat on port 8081.
builds the core car rental module by modeling a vehicle entity with status and owner. uses an api gateway to route requests between car rental and user services.
Develop a vehicles creation endpoint using a rest controller and post mapping, accepting a vehicle in JSON in the request body, and persisting it via a vehicle service and repository.
Implement a post endpoint to create vehicles with a generated UUID, status available, and null owner and association date, while defining brand, model, and license plate in JSON.
Validate vehicle creation inputs with Jakarta validation constraints, ensuring license plate number, model, and brand are mandatory, and handle errors via a Rest controller advice returning 400 bad request.
expose get all vehicles and get by id endpoints using a vehicle service and repository, with not found handling on port 8081.
Implement a post endpoint to associate a vehicle with a user, validating availability, updating status to associated, setting the owner and association date, and saving the changes.
Implement a delete endpoint to remove the vehicle-to-user association, validating the vehicle is currently associated, then nullifying the owner and association date, and setting status to available.
Explore AWS RDS, a cloud managed solution for relational databases, enabling read replicas, storage options, CloudWatch monitoring, backups, encryption, and scalable, cost-effective database management.
Set up a car rental VPC with two subnets across two availability zones and attach an internet gateway, then provision an AWS RDS MySQL database in the VPC.
Learn to configure database connections in AWS by using environment variables for url, username, and password, avoiding hard-coded values, and reference them in your application.
Test the cloud database by inserting vehicles via the application and retrieving all records from AWS RDS, confirming cloud DB interaction distinct from the local database.
Understand why creating a gateway in a Spring Boot application centralizes authorization and delegates http requests to microservices, keeping the same gateway url and ip address even as services change.
Create an API gateway with Spring Boot and Gradle, configure a RestTemplate backed by an HTTP client to call rental and user services, and expose it as a bean.
Implement an api gateway with a user controller that forwards create, get all, and get by id requests to the user service via a rest template proxy by environment variables.
Demonstrates an api gateway calling the user service via rest template to create, list, and retrieve users at /users, using environment-based urls and AWS Cognito storage.
Implement a gateway vehicle controller with endpoints for creating, listing, retrieving, and associating vehicles with users via a vehicle proxy to the rental service, using RestTemplate and a vehicle DTO.
Secure your api gateway by implementing jwt-based authorization, using a user proxy to fetch users, role checks, and 401 unauthorized handling to control access to users and vehicles.
Implement health checks with spring boot starter actuator, expose a health endpoint returning up or down, and integrate with AWS load balancers to manage microservice instances.
Reinitialize all services to port 8080 for local testing and container deployment; ensure consistent internal mappings so AWS deployment runs smoothly.
Backend Java Development with Spring Boot & AWS Cloud: Build, Deploy & Scale
Are you a Java developer ready to take your backend skills to the next level by mastering AWS cloud services? This course is your gateway to building and deploying Spring Boot microservices in the cloud — step-by-step, hands-on, and production-ready.
In this comprehensive course, you’ll learn to design, implement, and deploy cloud-native applications using the most in-demand AWS services like ECS, ECR, EC2, RDS, Cognito, and API Gateway. We’ll cover everything from architecture design to authentication, database integration, and scalable deployment.
This isn’t just about writing code — it’s about building real-world cloud-based backend applications with confidence.
NOTE: This course is not intended for DevOps professionals. It’s built specifically for Java (Spring Boot) developerswho want practical, working knowledge of AWS cloud services.
Stage 1 – Build Microservices with Spring Boot (Locally)
Understand monolithic vs. microservice architectures
Build three fully independent microservices
Master the Spring Boot framework for modern backend development
Use .yaml configuration files and environment variables for flexibility and loose coupling
Create RESTful endpoints with @RestController
Perform database operations using JPA
Implement inter-service communication using RestTemplate
Stage 2 – Deploy to AWS (Cloud-Native Approach)
Store and manage users with AWS Cognito
Secure your APIs using JWT authentication and authorization
Persist data using AWS RDS (Relational Database Service)
Deploy services with ECS Fargate using Task Definitions
Push Docker images to ECR (Elastic Container Registry)
Route traffic efficiently using Application Load Balancers (ALBs)
Create and manage endpoints with API Gateway
TThis course cuts through the noise and focuses on what backend Java developers truly need to know to work in cloud environments. You’ll not only learn the “how” but also understand the “why” behind each cloud-native decision.
By the end of the course, you will have:
Built multiple Spring Boot microservices
Deployed them to the cloud using AWS ECS and RDS
Secured them with Cognito and JWT
Understood the architecture of scalable, modern cloud applications
Join now and gain the real-world AWS skills that today’s job market demands.
Let’s launch your Spring Boot applications into the cloud — together!