0:00 Welcome to the cloud, Spring
6:30 What’s a microservice
14:06 Microservices with Spring
24:34 Cloud and microservice-based applications
34:56 Why the cloud and microservices
43:26 Core microservice development pattern
52:10 Microservice logging and tracing patterns
1:01:27 Exploring the microservices world with Spring Cloud
1:13:39 Spring Cloud by example
1:22:51 Codebase
1:30:12 Dev_prod parity
1:38:32 Getting started with the skeleton project
1:47:49 Building microservices with Spring Boot
1:55:59 Establishing service granularity
2:04:11 When not to use microservices
2:14:29 Building the doorway into the microservice - The Spring Boot controller
2:23:54 Adding internationalization into the licensing service
2:31:38 The DevOps story - Building for the rigors of runtime
2:39:49 Service registration and discovery - How clients communicate with your microservices
2:48:42 Welcome to Docker
2:55:52 What is Docker
3:03:13 Integrating Docker with our microservices
3:10:07 Creating Docker images with Spring Boot
3:18:49 Controlling your configuration with the Spring Cloud Configuration Server
3:28:59 Building our Spring Cloud Configuration Server
3:35:52 Setting up the Spring Cloud Config bootstrap class
3:45:54 Integrating Spring Cloud Config with a Spring Boot client
3:52:46 Configuring the licensing service to use Spring Cloud Config
4:02:52 Directly reading properties using @ConfigurationProperties
4:12:51 Vault UI
4:21:59 On service discovery
4:31:18 Service discovery in the cloud
4:39:40 Service discovery in action using Spring and Netflix Eureka
4:50:12 Registering services with Spring Eureka
5:00:19 Using service discovery to look up a service
5:08:18 Invoking services with a Load Balancer–aware Spring REST template
5:15:17 When bad things happen - Resiliency patterns with Spring Cloud and Resilience4j
5:24:28 Why client resiliency matters
5:34:50 Setting up the licensing service to use Spring Cloud and Resilience4j
5:46:50 Fallback processing
5:55:37 Implementing the retry pattern
6:02:33 ThreadLocal and Resilience4j
6:10:05 Service routing with Spring Cloud Gateway
6:18:07 Introducing Spring Cloud Gateway
6:24:43 Configuring routes in Spring Cloud Gateway
6:32:53 The real power of Spring Cloud Gateway - Predicate and Filter Factories
6:40:23 Building the pre-filter
6:48:14 UserContextFilter - Intercepting the incoming HTTP request
6:56:23 Securing your microservices
7:07:09 Starting small - Using Spring and Keycloak to protect a single endpoint
7:15:56 Configuring O-stock users
7:21:47 Protecting the organization service using Keycloak
7:29:59 Propagating the access token
7:39:07 Some closing thoughts on microservice security
7:46:22 Event-driven architecture with Spring Cloud Stream
7:57:24 Using messaging to communicate state changes between services
8:08:58 Writing a simple message producer and consumer
8:20:49 Writing the message consumer in the licensing service
8:27:48 A Spring Cloud Stream use case - Distributed caching
8:35:07 Using Redis to cache lookups
8:41:50 Distributed tracing with Spring Cloud Sleuth and Zipkin
8:52:27 Log aggregation and Spring Cloud Sleuth
9:02:51 Defining and running ELK Stack applications in Docker
9:10:12 Searching for Spring Cloud Sleuth trace IDs in Kibana
9:20:02 Configuring a Zipkin server
9:27:45 Visualizing a more complex transaction
9:35:57 Deploying your microservices
9:44:59 The architecture of a build_deployment pipeline
9:51:35 Setting up O-stock’s core infrastructure in the cloud
10:02:07 Beyond the infrastructure - Deploying O-stock and ELK
10:08:55 Creating an EKS cluster
10:15:15 Creating an EKS cluster
10:22:38 Your build_deployment pipeline in action
10:29:11 Enabling our services to build in Jenkins
10:37:24 Understanding and generating the pipeline script
10:46:22 Microservices architecture best practices
10:57:53 OAuth2 grant types
11:04:37 Authorization grant type
11:14:54 Monitoring your microservices
11:22:47 Implementing Micrometer and Prometheus