Microservices are an architectural and organisational approach to software development where software is composed of small independent services that communicate over well-defined APIs. These services are owned by small, self-contained teams.
Microservices and Distributed Systems
Microservices architectures make applications easier to scale and faster to develop, enabling innovation and accelerating time-to-market for new features.
In this course you will learn how to build Microservices from scratch using Spring Cloud which provides tools for developers to quickly build some of the common patterns in distributed systems such configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state
You will also learn about Docker and Kubernetes allowing you to containerise your Microservices and deployment to the most popular open-source container orchestration engine called Kubernetes. Kubernetes offers the ability to schedule and manage containers at scale.
Topics Covered
- Spring Boot Microservices
- Maven (Including Multi Module, Builds and Profiles)
- Spring Data JPA
- Message Queue with RabbitMQ and Kafka
- Spring Cloud (OpenFeign, Service Discovery, Distributed Tracing)
- Configuration and Secrets management
- Packing Jars with Jib
- Docker
- Kubernetes
- Plenty of Exercise
Additional
https://github.com/amigoscode/microservices
Diagram https://raw.githubusercontent.com/amigoscode/microservices/78d93c2caa7274951ff5258e5414a59b870f50a9/diagrams.drawio and save with .drawio file extension then open it with https://www.diagrams.net/
About the Author: Nelson Djalo (Amigoscode)
Nelson Djalo publishes the Amigoscode YouTube channel and standalone course platform — one of the largest independent Java / Spring Boot tutorial sources online, with several million subscribers and a multi-year track record of weekly back-end engineering tutorials.
The course catalog covers the full Java back-end stack: Java fundamentals, Spring Boot for production web services, Spring Security and OAuth, Spring Data and JPA, microservices patterns with Spring Cloud, Kafka and event-driven architecture, Docker and Kubernetes for the deployment layer, AWS for cloud infrastructure, and the database side (PostgreSQL, MongoDB, Redis). Material is project-oriented — most courses build a working microservice or full application end-to-end.
The CourseFlix listing under this source carries over 13 Amigoscode courses spanning that range. Material is paid; Amigoscode runs on per-course or membership pricing on the original platform. Courses are aimed at Java developers building production back-end services.
Watch Online 166 lessons
| # | Lesson Title | Duration | Access |
|---|---|---|---|
| 1 | 1 - Few Words Before We Begin Demo | 01:08 | |
| 2 | 2 - Join The Community | 00:52 | |
| 3 | 3 - Course Overview | 03:38 | |
| 4 | 1 - Maven | 02:39 | |
| 5 | 2 - IntelliJ | 02:07 | |
| 6 | 3 - Open The Project with IntelliJ | 01:41 | |
| 7 | 4 - Maven Parent Module | 07:01 | |
| 8 | Intro | 00:42 | |
| 9 | 1 - Spring Cloud | 03:36 | |
| 10 | 2 - Create Your First Microservice | 07:58 | |
| 11 | 3 - Model Controller and Service | 05:32 | |
| 12 | 4 - Postgres and PGAdmin on Docker | 04:30 | |
| 13 | 5 - Connecting to DB | 08:07 | |
| 14 | 6 - Databases | 01:18 | |
| 15 | 1 - Intro | 01:15 | |
| 16 | 2 - Fraud Microservice | 04:46 | |
| 17 | 3 - Database Setup for Fraud | 04:42 | |
| 18 | 4 - Fraud Controller Service and Repository | 07:42 | |
| 19 | 5 - RestTemplate | 05:24 | |
| 20 | 6 - Testing Microservice Communication | 03:10 | |
| 21 | 1 - Service Discovery | 04:09 | |
| 22 | 2 - Spring Cloud Dependency | 03:38 | |
| 23 | 3 - Setting up Eureka Server | 05:37 | |
| 24 | 4 - Dashboard | 01:55 | |
| 25 | 5 - Eureka Clients | 07:40 | |
| 26 | 6 - @LoadBalanced | 06:53 | |
| 27 | 1 - Open Feign | 02:33 | |
| 28 | 2 - Feign client Feign | 06:31 | |
| 29 | 3 - Using Fegin Client | 04:59 | |
| 30 | 4 - Microservice Communication With Feign | 02:57 | |
| 31 | 1 - Exercise | 01:53 | |
| 32 | 2 - Solution | 04:13 | |
| 33 | 1 - Distributed Tracing | 03:42 | |
| 34 | 2 - Adding Sleuth | 03:47 | |
| 35 | 3 - Zipkin | 01:05 | |
| 36 | 4 - Zipkin Container | 02:58 | |
| 37 | 5 - Spring Cloud Sleuth Zipkin | 03:26 | |
| 38 | 6 - Zipkin Dashboard | 06:39 | |
| 39 | 1 - What are Load Balencers | 09:58 | |
| 40 | 2 - Load Balancer Algorithms | 02:54 | |
| 41 | 3 - Load Balancer Health Checks | 02:05 | |
| 42 | 4 - Spring Cloud Gateway | 02:57 | |
| 43 | 5 - Bootstrap API Gateway | 04:14 | |
| 44 | 6 - Configuring API Gateway | 02:45 | |
| 45 | 7 - API Gateway in Action | 03:07 | |
| 46 | 1 - Why a message queue | 03:53 | |
| 47 | 2 - Simulate Slow Response | 04:31 | |
| 48 | 3 - AMQP & RabbitMQ | 06:28 | |
| 49 | 4 - Kafka RabbitMQ and SQS | 04:20 | |
| 50 | 5 - AMQP Exchange Types | 04:56 | |
| 51 | 1 - Rabbit MQ Container | 03:32 | |
| 52 | 2 - AMQPTemplate and JacksonConverter | 06:27 | |
| 53 | 3 - SimpleRabbitListenerContainerFactory | 04:37 | |
| 54 | 4 - Notification Queue Configuration | 04:29 | |
| 55 | 5 - Queue Topic and Binding | 04:01 | |
| 56 | 6 - Message Producer | 03:45 | |
| 57 | 7 - Publishing Messages | 09:17 | |
| 58 | 8 - Customer Microservice Publishing Messages To Queue | 05:50 | |
| 59 | 9 - @RabbitListener | 07:09 | |
| 60 | 12 - We made it. Our code is Asynchronous | 02:16 | |
| 61 | 1 - Intro | 00:54 | |
| 62 | 2 - Maven Compiler Plugin | 07:23 | |
| 63 | 3 - Spring Boot Maven Plugin | 06:20 | |
| 64 | 4 - Installing Root and Individual Modules with Maven | 06:35 | |
| 65 | 5 - Running all Jars | 09:15 | |
| 66 | 1 - Intro | 01:08 | |
| 67 | 2 - What is Docker | 01:32 | |
| 68 | 3 - Docker Images and Containers | 03:18 | |
| 69 | 4 - Docker Architecture | 02:43 | |
| 70 | 5 - Docker Registries | 04:13 | |
| 71 | 6 - Docker Login | 05:49 | |
| 72 | 7 - Spring Boot Maven Plugin and Jib | 02:34 | |
| 73 | 8 - Jib Maven Plugin | 08:39 | |
| 74 | 9 - Jib Sub Module Configuration | 04:38 | |
| 75 | 10 - Build and Push | 05:17 | |
| 76 | 11 - Exercise | 01:43 | |
| 77 | 12 - Exercise Solution | 03:09 | |
| 78 | 13 - Adding Eureka Server and ApiGW to Docker Compose | 02:49 | |
| 79 | 14 - Docker Network | 02:12 | |
| 80 | 15 - Spring Profiles | 03:43 | |
| 81 | 16 - ApiGW and Eureka Server Docker Containers | 03:57 | |
| 82 | 17 - Exercise 2 | 00:34 | |
| 83 | 18 - Exercise 2 Solution | 08:20 | |
| 84 | 1 - Intro | 00:50 | |
| 85 | 2 - What is Kubernetes | 04:17 | |
| 86 | 3 - Master and Control Plane | 08:30 | |
| 87 | 4 - Worker Nodes | 06:22 | |
| 88 | 5 - Running Kubernetes Clusters | 04:45 | |
| 89 | 6 - Minikube | 06:41 | |
| 90 | 7 - Installing Kubectl | 05:53 | |
| 91 | 8 - Kubernetes Hello World | 07:13 | |
| 92 | 9 - Pods | 03:03 | |
| 93 | 10 - Deployments | 04:11 | |
| 94 | 11 - Services | 03:01 | |
| 95 | 12 - Service Discovery | 06:32 | |
| 96 | 1 - IntelliJ k8s Plugin | 02:33 | |
| 97 | 2 - Never Deploy Postgres on k8s. Only for local testing | 02:38 | |
| 98 | 3 - Postgres YAMLs | 09:46 | |
| 99 | 4 - Postgres Running in k8s | 05:26 | |
| 100 | 5 - Exercise | 00:48 | |
| 101 | 6 - Exercise Sol | 07:51 | |
| 102 | 1 - Intro | 01:32 | |
| 103 | 3 - Disabling Eureka | 01:52 | |
| 104 | 4 - Refactor Feign Clients | 07:14 | |
| 105 | 5 - Adding SPRING_PROFILES_ACTIVE=default | 06:08 | |
| 106 | 6 - Kube Profile | 04:41 | |
| 107 | 7 - Building new Images and Testing Docker Compose | 04:34 | |
| 108 | 1 - Section Overview | 00:21 | |
| 109 | 2 - Customer YAMLs | 06:36 | |
| 110 | 3 - Customer Up in Running in k8s | 03:38 | |
| 111 | 5 - Exercise Solution | 04:01 | |
| 112 | 6 - We done it. Microservices running in k8s | 04:48 | |
| 113 | 2 - Linode | 02:23 | |
| 114 | 3 - Create K8s Cluster | 04:39 | |
| 115 | 4 - Dashboard Overview | 02:30 | |
| 116 | 5 - Kubernetes Dashboard | 03:02 | |
| 117 | 6 - Connect To Cluster Using kubectl | 03:02 | |
| 118 | 7 - Postgres | 05:37 | |
| 119 | 8 - Zipkin and LoadBalancers | 05:33 | |
| 120 | 9 - RabbitMQ | 01:30 | |
| 121 | 10 - Deploying Microservices | 04:06 | |
| 122 | 11 - Testing deployment | 02:53 | |
| 123 | 13 - Managed Postgres Database | 02:34 | |
| 124 | 14 - Connecting to Managed Database | 06:31 | |
| 125 | 15 - Override DB Connection Details with Env Variabales | 04:52 | |
| 126 | 16 - Apply Customer yaml | 02:45 | |
| 127 | 17 - Apply Notification and Fraud | 05:47 | |
| 128 | 18 - Testing everything | 03:08 | |
| 129 | 19 - Destroy resources | 05:02 | |
| 130 | 1 - Intro | 00:34 | |
| 131 | 2 - What is Kafka | 07:56 | |
| 132 | 3 - Kafka Broker | 04:54 | |
| 133 | 4 - Bootstrap Project | 02:04 | |
| 134 | 5 - Topic | 02:58 | |
| 135 | 6 - Kafka Producer Config | 05:56 | |
| 136 | 7 - Kafka Template Send | 03:39 | |
| 137 | 8 - Kafka Consumer | 03:59 | |
| 138 | 9 - ConsumerConfig | 05:20 | |
| 139 | 10 - @KafkaListener | 03:57 | |
| 140 | 11 - Restful Api and Kafka Integration | 04:30 | |
| 141 | 12 - Custom Objects | 08:32 | |
| 142 | 13 - Trusted Packages | 03:57 | |
| 143 | 14 - Deployment and Managed Kafka | 02:00 | |
| 144 | 15 - Spring for Apache Kafka Documetation | 01:07 | |
| 145 | 16 - Outro | 00:26 | |
| 146 | Bring Back APIW and Eureka Server | 00:47 | |
| 147 | Enabling Eureka Client | 00:57 | |
| 148 | Starting All Services | 05:15 | |
| 149 | Testing POST request | 03:19 | |
| 150 | API Key Authentication | 03:15 | |
| 151 | Key and Applications Overview | 02:47 | |
| 152 | ApiKeyAuthorization Filter | 03:52 | |
| 153 | Ordering the Filter | 01:15 | |
| 154 | Testing the Filter | 02:37 | |
| 155 | Api Key Validation Overview | 01:01 | |
| 156 | Extracting the Route | 04:29 | |
| 157 | Attaching ApiKey to request | 01:43 | |
| 158 | Accesing Key From Request Header | 03:40 | |
| 159 | FakeApiAuthorizationChecker | 03:58 | |
| 160 | Testing API Authentication Flow | 03:40 | |
| 161 | 1 - Don't Use Spring Cloud Config Server | 05:49 | |
| 162 | 2 - Vault and Secrets Management | 01:15 | |
| 163 | 3 - Reporting Service | 01:57 | |
| 164 | 4 - Security | 02:07 | |
| 165 | 5 - Deployment | 06:11 | |
| 166 | 6 - Outro | 01:59 |
Get instant access to all 165 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.
Learn more about subscriptionCourse content
166 lessons · 11h 18mShow all 166 lessons
- 1 1 - Few Words Before We Begin 01:08
- 2 2 - Join The Community 00:52
- 3 3 - Course Overview 03:38
- 4 1 - Maven 02:39
- 5 2 - IntelliJ 02:07
- 6 3 - Open The Project with IntelliJ 01:41
- 7 4 - Maven Parent Module 07:01
- 8 Intro 00:42
- 9 1 - Spring Cloud 03:36
- 10 2 - Create Your First Microservice 07:58
- 11 3 - Model Controller and Service 05:32
- 12 4 - Postgres and PGAdmin on Docker 04:30
- 13 5 - Connecting to DB 08:07
- 14 6 - Databases 01:18
- 15 1 - Intro 01:15
- 16 2 - Fraud Microservice 04:46
- 17 3 - Database Setup for Fraud 04:42
- 18 4 - Fraud Controller Service and Repository 07:42
- 19 5 - RestTemplate 05:24
- 20 6 - Testing Microservice Communication 03:10
- 21 1 - Service Discovery 04:09
- 22 2 - Spring Cloud Dependency 03:38
- 23 3 - Setting up Eureka Server 05:37
- 24 4 - Dashboard 01:55
- 25 5 - Eureka Clients 07:40
- 26 6 - @LoadBalanced 06:53
- 27 1 - Open Feign 02:33
- 28 2 - Feign client Feign 06:31
- 29 3 - Using Fegin Client 04:59
- 30 4 - Microservice Communication With Feign 02:57
- 31 1 - Exercise 01:53
- 32 2 - Solution 04:13
- 33 1 - Distributed Tracing 03:42
- 34 2 - Adding Sleuth 03:47
- 35 3 - Zipkin 01:05
- 36 4 - Zipkin Container 02:58
- 37 5 - Spring Cloud Sleuth Zipkin 03:26
- 38 6 - Zipkin Dashboard 06:39
- 39 1 - What are Load Balencers 09:58
- 40 2 - Load Balancer Algorithms 02:54
- 41 3 - Load Balancer Health Checks 02:05
- 42 4 - Spring Cloud Gateway 02:57
- 43 5 - Bootstrap API Gateway 04:14
- 44 6 - Configuring API Gateway 02:45
- 45 7 - API Gateway in Action 03:07
- 46 1 - Why a message queue 03:53
- 47 2 - Simulate Slow Response 04:31
- 48 3 - AMQP & RabbitMQ 06:28
- 49 4 - Kafka RabbitMQ and SQS 04:20
- 50 5 - AMQP Exchange Types 04:56
- 51 1 - Rabbit MQ Container 03:32
- 52 2 - AMQPTemplate and JacksonConverter 06:27
- 53 3 - SimpleRabbitListenerContainerFactory 04:37
- 54 4 - Notification Queue Configuration 04:29
- 55 5 - Queue Topic and Binding 04:01
- 56 6 - Message Producer 03:45
- 57 7 - Publishing Messages 09:17
- 58 8 - Customer Microservice Publishing Messages To Queue 05:50
- 59 9 - @RabbitListener 07:09
- 60 12 - We made it. Our code is Asynchronous 02:16
- 61 1 - Intro 00:54
- 62 2 - Maven Compiler Plugin 07:23
- 63 3 - Spring Boot Maven Plugin 06:20
- 64 4 - Installing Root and Individual Modules with Maven 06:35
- 65 5 - Running all Jars 09:15
- 66 1 - Intro 01:08
- 67 2 - What is Docker 01:32
- 68 3 - Docker Images and Containers 03:18
- 69 4 - Docker Architecture 02:43
- 70 5 - Docker Registries 04:13
- 71 6 - Docker Login 05:49
- 72 7 - Spring Boot Maven Plugin and Jib 02:34
- 73 8 - Jib Maven Plugin 08:39
- 74 9 - Jib Sub Module Configuration 04:38
- 75 10 - Build and Push 05:17
- 76 11 - Exercise 01:43
- 77 12 - Exercise Solution 03:09
- 78 13 - Adding Eureka Server and ApiGW to Docker Compose 02:49
- 79 14 - Docker Network 02:12
- 80 15 - Spring Profiles 03:43
- 81 16 - ApiGW and Eureka Server Docker Containers 03:57
- 82 17 - Exercise 2 00:34
- 83 18 - Exercise 2 Solution 08:20
- 84 1 - Intro 00:50
- 85 2 - What is Kubernetes 04:17
- 86 3 - Master and Control Plane 08:30
- 87 4 - Worker Nodes 06:22
- 88 5 - Running Kubernetes Clusters 04:45
- 89 6 - Minikube 06:41
- 90 7 - Installing Kubectl 05:53
- 91 8 - Kubernetes Hello World 07:13
- 92 9 - Pods 03:03
- 93 10 - Deployments 04:11
- 94 11 - Services 03:01
- 95 12 - Service Discovery 06:32
- 96 1 - IntelliJ k8s Plugin 02:33
- 97 2 - Never Deploy Postgres on k8s. Only for local testing 02:38
- 98 3 - Postgres YAMLs 09:46
- 99 4 - Postgres Running in k8s 05:26
- 100 5 - Exercise 00:48
- 101 6 - Exercise Sol 07:51
- 102 1 - Intro 01:32
- 103 3 - Disabling Eureka 01:52
- 104 4 - Refactor Feign Clients 07:14
- 105 5 - Adding SPRING_PROFILES_ACTIVE=default 06:08
- 106 6 - Kube Profile 04:41
- 107 7 - Building new Images and Testing Docker Compose 04:34
- 108 1 - Section Overview 00:21
- 109 2 - Customer YAMLs 06:36
- 110 3 - Customer Up in Running in k8s 03:38
- 111 5 - Exercise Solution 04:01
- 112 6 - We done it. Microservices running in k8s 04:48
- 113 2 - Linode 02:23
- 114 3 - Create K8s Cluster 04:39
- 115 4 - Dashboard Overview 02:30
- 116 5 - Kubernetes Dashboard 03:02
- 117 6 - Connect To Cluster Using kubectl 03:02
- 118 7 - Postgres 05:37
- 119 8 - Zipkin and LoadBalancers 05:33
- 120 9 - RabbitMQ 01:30
- 121 10 - Deploying Microservices 04:06
- 122 11 - Testing deployment 02:53
- 123 13 - Managed Postgres Database 02:34
- 124 14 - Connecting to Managed Database 06:31
- 125 15 - Override DB Connection Details with Env Variabales 04:52
- 126 16 - Apply Customer yaml 02:45
- 127 17 - Apply Notification and Fraud 05:47
- 128 18 - Testing everything 03:08
- 129 19 - Destroy resources 05:02
- 130 1 - Intro 00:34
- 131 2 - What is Kafka 07:56
- 132 3 - Kafka Broker 04:54
- 133 4 - Bootstrap Project 02:04
- 134 5 - Topic 02:58
- 135 6 - Kafka Producer Config 05:56
- 136 7 - Kafka Template Send 03:39
- 137 8 - Kafka Consumer 03:59
- 138 9 - ConsumerConfig 05:20
- 139 10 - @KafkaListener 03:57
- 140 11 - Restful Api and Kafka Integration 04:30
- 141 12 - Custom Objects 08:32
- 142 13 - Trusted Packages 03:57
- 143 14 - Deployment and Managed Kafka 02:00
- 144 15 - Spring for Apache Kafka Documetation 01:07
- 145 16 - Outro 00:26
- 146 Bring Back APIW and Eureka Server 00:47
- 147 Enabling Eureka Client 00:57
- 148 Starting All Services 05:15
- 149 Testing POST request 03:19
- 150 API Key Authentication 03:15
- 151 Key and Applications Overview 02:47
- 152 ApiKeyAuthorization Filter 03:52
- 153 Ordering the Filter 01:15
- 154 Testing the Filter 02:37
- 155 Api Key Validation Overview 01:01
- 156 Extracting the Route 04:29
- 157 Attaching ApiKey to request 01:43
- 158 Accesing Key From Request Header 03:40
- 159 FakeApiAuthorizationChecker 03:58
- 160 Testing API Authentication Flow 03:40
- 161 1 - Don't Use Spring Cloud Config Server 05:49
- 162 2 - Vault and Secrets Management 01:15
- 163 3 - Reporting Service 01:57
- 164 4 - Security 02:07
- 165 5 - Deployment 06:11
- 166 6 - Outro 01:59
Related courses
-
ClassicSpring 6 & Spring Boot 3 for Beginners (Includes 5 Projects)
By: UdemyIn this course, you will learn Spring Framework Core 6, Spring Boot 3, REST API, Spring MVC, WebFlux, Spring Security, Spring Data JPA, Docker, Thymeleaf, Intel34 hours 28 minutes 12 seconds 5 / 5 -
Updated 2y agoFull Stack HATEOAS: Spring Boot 2.1, ReactJS, Redux
By: UdemyFull Stack introduction to HATEOAS. In this course, you will learn the core concepts of HATEOAS as well as how to leverage this on a ReactJS Application.5 hours 51 minutes 37 seconds -
Updated 2y agoMaster Java Unit Testing with Spring Boot & Mockito
By: UdemySpring Boot is the most popular framework to develop RESTful Services. It has Awesome Unit Testing capabilities through Spring Boot Starter Test. Mockito is the3 hours 56 minutes 12 seconds