Microservices and Distributed Systems
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.
More
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
Watch Online Microservices and Distributed Systems
# | Title | Duration |
---|---|---|
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 |