Description
In this course, you will :
-
How to version your RESTful Web Services
-
How to monitor RESTful Services with Spring Boot Actuator
-
How to document RESTful Web Services with Swagger
-
Develop and design RESTful web services with Spring Boot
-
Develop MICROSERVICES with Spring Boot and Spring Cloud
-
Orchestrate microservices with KUBERNETES
-
Create containers for microservices with DOCKER
-
Implement client side load balancing (Ribbon), Dynamic scaling(Eureka Naming Server) and an API Gateway (Zuul)
-
You will setup Centralized Microservices Configuration with Spring Cloud Config Server
-
You will learn to implement Distributed tracing for microservices with Spring Cloud Sleuth and Zipkin
-
You will implement Fault Tolerance for microservices with Hystrix
-
You will understand the best practices in designing RESTful web services
-
Using Spring Cloud Bus to exchange messages about Configuration updates
-
Simplify communication with other Microservices using Feign REST Client
Syllabus :
1. Introduction To Web Services
- What is a Web Service?
- Important How Questions related to Web Services
- Web Services - Key Terminology
- Introduction to SOAP Web Services
- Introduction to RESTful Web Services
- SOAP vs RESTful Web Services
2. Restful Web Services with Spring Boot4
- Section Introduction - RESTful Web Services with Spring Boot
- Initializing a RESTful Services Project with Spring Boot
- Fastest Approach to Solve All Your Exceptions
- Understanding the RESTful Services we would create in this course
- Creating a Hello World Service
- Enhancing the Hello World Service to return a Bean
- Quick Review of Spring Boot Auto Configuration and Dispatcher Servlet
- Enhancing the Hello World Service with a Path Variable
- Creating User Bean and User Service
- Implementing GET Methods for User Resource
- Implementing POST Method to create User Resource
- Enhancing POST Method to return correct HTTP Status Code and Location
- Implementing Exception Handling - 404 Resource Not Found
- Implementing Generic Exception Handling for all Resources
- Implementing DELETE Method to delete a User Resource
- Adding dependency for validation
- Implementing Validations for RESTful Services
- Implementing HATEOAS for RESTful Services
- Overview of Advanced RESTful Service Features
- Internationalization for RESTful Services
- Content Negotiation - Implementing Support for XML
- Configuring Auto Generation of Swagger Documentation
- Introduction to Swagger Documentation Format
- Monitoring APIs with Spring Boot Actuator
- Visualizing APIs with HAL Explorer
- Implementing Static Filtering for RESTful Service
- Implementing Dynamic Filtering for RESTful Service
- Versioning RESTful Services - Basic Approach with URIs
- Versioning RESTful Services - Header and Content Negotiation Approach
- Implementing Basic Authentication with Spring Security
- Overview of Connecting RESTful Service to JPA
- Creating User Entity and some test data
- Updating GET methods on User Resource to use JPA
- Updating POST and DELETE methods on User Resource to use JPA
- Creating Post Entity and Many to One Relationship with User Entity
- Implementing a GET service to retrieve all Posts of a User
- Implementing a POST service to create a Post for a User
- Richardson Maturity Model
- RESTful Web Services - Best Practices
3. Quick Introduction to Microservices
- Section Introduction - Microservices with Spring Cloud
- Introduction to Microservices
- Challenges with Microservices
- Introduction to Spring Cloud
- Advantages of Microservices Architectures
- Microservice Components - Standardizing Ports and URL
4. Microservices with Spring Cloud - V1
- Next Section uses Latest Version of Spring Boot
- Intro to Limits Microservice and Spring Cloud Config Server
- Setting up Limits Microservice
- Creating a hard coded limits service
- Enhance limits service to get configuration from application properties
- Setting up Spring Cloud Config Server
- Installing Git
- Creating Local Git Repository
- Connect Spring Cloud Config Server to Local Git Repository
- Configuration for Multiple Environments in Git Repository
- Connect Limits Service to Spring Cloud Config Server
- Debugging problems with Spring Cloud Config Server
- Configuring Profiles for Limits Service
- A review of Spring Cloud Config Server
- Introduction to Currency Conversion and Currency Exchange Microservice
- Setting up Currency Exchange Microservice
- Create a simple hard coded currency exchange service
- Setting up Dynamic Port in the the Response
- Configure JPA and Initialized Data
- Create a JPA Repository
- Setting up Currency Conversion Microservice
- Creating a service for currency conversion
- Invoking Currency Exchange Microservice from Currency Conversion Micro
- Using Feign REST Client for Service Invocation
- Setting up client side load balancing with Ribbon
- Running client side load balancing with Ribbon
- Debugging problems with Feign and Ribbon
- Understand the need for a Naming Server
- Setting up Eureka Naming Server
- Connecting Currency Conversion Microservice to Eureka
- Connecting Currency Exchange Microservice to Eureka
- Distributing calls using Eureka and Ribbon
- Debugging Problems with Naming Server ( Eureka ) and Ribbon
- A review of implementing Eureka, Ribbon and Feign
- Introduction to API Gateways
- Setting up Zuul API Gateway
- Implementing Zuul Logging Filter
- Executing a request through Zuul API Gateway
- Setting up Zuul API Gateway between microservice invocations
- Debugging Problems with Zuul API Gateway
- Introduction to Distributed Tracing
- Implementing Spring Cloud Sleuth
- Introduction to Distributed Tracing with Zipkin
- Installing Rabbit MQ
- Updates to Step 39 - Running Zipkin on Windows
- Setting up Distributed Tracing with Zipkin
- Connecting microservices to Zipkin
- Updates to Step 40 : Use spring-cloud-starter-zipkin and spring-rabbit
- Using Zipkin UI Dashboard to trace requests
- Debugging Problems with Zipkin
- Understanding the need for Spring Cloud Bus
- Implementing Spring Cloud Bus
- Fault Tolerance with Hystrix
5. Microservices with Spring Cloud - V2
- What's NEW in V2?
- Have you already completed V1?
- Setting up Limits Microservice - V2
- Creating a hard coded limits service - V2
- Enhance limits service - Get configuration from application props - V2
- Setting up Spring Cloud Config Server - V2
- Installing Git and Creating Local Git Repository - V2
- Debugging problems with Spring Cloud Config Server - V2
- Connect Spring Cloud Config Server to Local Git Repository - V2
- Connect Limits Service to Spring Cloud Config Server - V2
- Configuring Profiles for Limits Service - V2
- Debugging Guide for Microservices V2 + Docker + Docker Compose
- Introduction to Currency Conversion & Exchange Microservices - V2
- Setting up Currency Exchange Microservice - V2
- URL and Response Structure for Currency Exchange Service
- Create a simple hard coded currency exchange service - V2
- Setting up Dynamic Port in the the Response - V2
- Configure JPA and Initialized Data - V2
- Create a JPA Repository - V2
- Setting up Currency Conversion Microservice - V2
- URL and Response Structure for Currency Conversion Service
- Creating a service for currency conversion - V2
- Invoking Currency Exchange from Currency Conversion Microservice - V2
- Using Feign REST Client for Service Invocation - V2
- Understand Naming Server and Setting up Eureka Naming Server - V2
- Debugging Problems with Eureka - V2
- Connect Currency Conversion & Currency Exchange Microservices - V2
- QuickStart by Importing Microservices
- Load Balancing with Eureka, Feign & Spring Cloud LoadBalancer - V2
- Setting up Spring Cloud API Gateway
- URLs for next Lecture
- Enabling Discovery Locator with Eureka for Spring Cloud Gateway
- Debugging Problems with Spring Cloud Gateway - V2
- Exploring Routes with Spring Cloud Gateway
- Implementing Spring Cloud Gateway Logging Filter
- Getting started with Circuit Breaker - Resilience4j
- Playing with Resilience4j - Retry and Fallback Methods
- Playing with Circuit Breaker Features of Resilience4j
- Update to Step 29 - Change in Configuration
- Exploring Rate Limiting and BulkHead Features of Resilience4j - V2
6. Docker with Microservices using Spring Boot and Spring Cloud - V2
- Match made in Heaven - Docker and Microservices
- Installing Docker - Docker
- Your First Docker Usecase - Deploy a Spring Boot Application
- Docker Concepts - Registry, Repository, Tag, Image and Containers
- Playing with Docker Images and Containers
- Understanding Docker Architecture - Docker Client, Docker Engine
- Why is Docker Popular
- Playing with Docker Images
- Playing with Docker Containers
- Playing with Docker Commands - stats, system
- Introduction to Distributed Tracing
- Launching Zipkin Container using Docker
- Connecting Currency Exchange Microservice with Zipkin
- Connecting Currency Conversion Microservice & API Gateway with Zipkin
- Link for the Next Lecture
- Getting Setup with Microservices for Creating Container Images
- Creating Container Image for Currency Exchange Microservice
- Getting Started with Docker Compose - Currency Exchange Microservice
- Running Eureka Naming Server with Docker Compose
- Running Currency Conversion Microservice with Docker Compose
- Running Spring Cloud API Gateway with Docker Compose
- Debugging Problems with Docker Compose
- Running Zipkin with Docker Compose
- Running Zipkin and RabbitMQ with Docker Compose
7. Kubernetes with Microservices using Docker, Spring Boot and Spring Cloud - V2
- Docker, Kubernetes and Microservices - Made for each other
- Getting Started with Docker, Kubernetes and Google Kubernetes Engine
- Creating Google Cloud Account
- Creating Kubernetes Cluster with Google Kubernete Engine (GKE)
- Review Kubernetes Cluster and Learn Few Fun Facts about Kubernetes
- Deploy Your First Spring Boot Application to Kubernetes Cluster
- Commands executed in this section
- Quick Look at Kubernetes Concepts - Pods, Replica Sets and Deployment
- Understanding Pods in Kubernetes
- Understanding ReplicaSets in Kubernetes
- Understanding Deployment in Kubernetes
- Quick Review of Kubernetes Concepts - Pods, Replica Sets & Deployments
- Understanding Services in Kubernetes
- Quick Review of GKE on Google Cloud Console
- Understanding Kubernetes Architecture - Master Node and Nodes
- Installing Gcloud
- Installing Kubectl
- Link for the Next Lecture
- Setup Currency Exchange & Conversion Microservices - Kubernetes
- Container images for Exchange & Currency Conversion Microservices
- Deploy Microservices to Kubernetes & Understand Service Discovery
- Creating Declarative Configuration Kubernetes YAML for Microservices
- Clean up Kubernetes YAML for Microservices
- Enable Logging and Tracing APIs in Google Cloud Platform
- Deploying Microservices using Kubernetes YAML Configuration
- Playing with Kubernetes Declarative YAML Configuration
- Creating Environment Variables to enable Microservice Communication
- Understanding Centralized Configuration in Kubernetes - Config Maps
- Exploring Centralized Logging and Monitoring in GKE
- Exploring Microservices Deployments with Kubernetes
- Configuring Liveness and Readiness Probes for Microservices with K8S
- Autoscaling Microservices with Kubernetes
- Delete Kubernetes Cluster and Thank You!