You’ll start by gaining a deep understanding of the core Java microservice concepts and framework; you will then focus on the high-level design of large software projects. You will gradually move on to setting up the development environment and configuring it before implementing continuous integration to deploy your microservice architecture! Then you'll move on to gain insight into the new features in Spring 5.0 and the course shows you how to build a microservice based cloud-native application using Spring MVC. The advanced features of Spring Boot will be illustrated through powerful examples. By the end of the course, you will be equipped with the knowledge and best practices required to develop microservices in Java, with the Spring Framework.
What am I going to get from this course?
- Use domain-driven design to design and implement microservices
- Secure microservices using Spring Security
- Deploy and test microservices
- Troubleshoot and debug issues faced during development
- Learn best practices and common principles for microservices
- Build microservices with Spring Boot
- Use Spring Cloud to deploy and manage applications on the Cloud
- Get to know the advanced features of Spring Boot in order to effectively develop and monitor applications
- Get to know the best practices when developing applications with the Spring Framework
Prerequisites and Target Audience
What will students need to know or do before starting this course?
Some knowledge of Java developer who knows the basics of Spring
Who should take this course? Who should not?
The Mastering Microservices with Java video series is for Java developers and DevOps engineers looking to upgrade their Java and microservice skills. You’ll need to be a confident Java developer to approach the microservices concepts and coding involved, of course, since this is an advanced, cutting-edge Java topic. This video course is for an experienced Java developer who knows the basics of Spring and wants to learn how to use Spring Boot to build applications and deploy them to the cloud.
Module 1: Mastering Microservices with Java
The Course Overview
This video will an overview of entire course
A Solution Approach Using New architecture paradigm
The aim of this video is to get a brief overview about Microservices and Monolithic architecture and its benefits. Have a brief overview about Microservices and Monolithic architecture, understand the limitations of monolithic architecture, & explore the benefits and flexibility that Microservices offer.
Sample REST Service
In this video we will look at simple component to building a stand-alone application. Overview of REST Endpoints, support for REST endpoints creation using Spring MVC, test the REST Endpoints.
Design importance and Domain Driven Design (DDD)
The aim of this video is to explore Design Matters and learn more about Domain Driven Design (DDD). Understand why design is the key for successful implementation of microservice, get to know about the history of DDD, & learn about Model Design and code Design in DDD.
The Building Blocks - I
The aim of this video is to learn about the building blocks of DDD. Get a brief overview about Ubiquitous Language. learn more about Multilayered Architecture, & explore the artifacts of DDD - Entities.
Building blocks – II: Artifacts of DDD
The aim of this video is to learn about the artifacts of DDD such as Value Objects and Services. Learn about Value Objects & know more about services in DDD.
Aggregates and Repository
In this video, we will learn other two artifacts of DDD such as Aggregates and Repository. Get acquainted with the working of Aggregates & understand how repository interacts with the storage
Factory and Modules
This videos covers final two artifacts of DDD that are Factory and Modules. Understand why Factory is required, know the importance of modules.
Strategic Design and Principles - I
The aim of this video is to introduce you to the three strategic design and principles that could be followed to maintain the integrity of the domain model. Introduction to the strategic principles, explore Bounded context, & understand how Bounded context is helpful
Strategic Design and Principles - II
In this video, learn about the other two strategic principles: Continuous Integration and Context Map. Get a brief overview about Continuous Integration, learn about the context map helps you to understand the overall picture of a large enterprise application, & explore a few patterns that can be used to define the communication between different contexts in the context map.
The aim of this video is to use an interface or set of interfaces to implement the entity in our table reservation system. Create the Entity abstract class or interface required by all entities, write the BaseEntity abstract class, & write the implementation of restaurant and table classes that inherit BaseEntity.
The aim of this video is to implement the repository pattern. Create the single interface names ResturantRepository and its implementation, create two superclasses – ReadOnly repository and repository interfaces.
The aim of this video is to implement the domain service. Create the ReadOnlyBaseService abstract class, create BaseService class, & write the implementation class- RestaurantService.
The aim of this video to learn to use Online Table Reservation System to book a restaurant based on these services. Know about RestaurantService provides the functionality for the RestaurantResource, perform CRUD operations on user entities using user service and make use of booking service, & get a brief overview on the importance of API versioning.
In this video, we will explore the OTRS services such as restaurant service, booking service, user service and registration & discovery service. Overview of all the services and learn in-depth about the restaurant service.
Implementing Restaurant Service
The aim of this video is to implement the Restaurant service. Overview of the endpoints & Implement the Restaurant service in IDE and implement the first endpoint.
Implementing the GET Endpoint
The aim of this video is to implement the Get endpoints. Implement the Get endpoint - GET /v1/restaurants/.
Implement Registration and Discovery Service
The aim of this video is to implement the Registration and Discovery service. Look at the commands for service execution & use the Netflix Eureka service.
In this video we will test our services. Define the dependency: spring-boot-starter-test & perform Integration testing.
Module 2: Microservices and Cloud-Native Applications with Spring 5.0
The Course Overview
This video gives an overview of the entire course.
Typical Web Application Architecture with Spring
In this video, we will see a typical architecture for a web application developed with Spring. List cross-cutting concerns as a separate layer, web and business Layer, and data Layer
Problems Solved by Spring
In this video, we will quickly review some of the important problems Spring has solved a number of problems that Enterprise Java applications have faced since the complexity associated with EJB2. Lightweight Architecture & simplified implementation of cross-cutting concerns
In this video, we will learn about what microservices are and how it is used. By taking an architecture example, we will learn about the monolithic application process. Challenges with Monolithic applications, microservice characteristics, automated build and release process.
Microservice Advantages and Challenges
Microservices have several advantages. In this video, we will see how they help in keeping up with technology and getting solutions to your customers faster. Technology Evolution & defining the boundaries of subsystems.
Cloud-Native applications are those that can easily be deployed on the Cloud. These applications share a few common characteristics. We will begin by looking at the Twelve-Factor App which is a combination of common patterns among Cloud-Native applications. The build, release, and run phases & solutions to some commonly encountered patterns when building systems on the Cloud.
Running Our Hello World Application
We can run the Hello World application in multiple ways. Let's start running it with the simplest option--running as a Java application. Auto-configuration & add a dependency in spring-boot-starter-web.
Spring Boot Hello World
In this video, we will start with building our first Spring Boot application. We will use Maven to manage dependencies. Configure spring-boot-starter-parent, configure pom.xml with the required starter projects, and configure spring-boot-maven-plugin
Building REST Service
In this video, we will focus on understanding what REST is and building a REST Service. Create a simple REST service returning a welcome message and a simple REST Controller method returning a string.
Simple REST Method Returning an Object
In this video, we will create a method that returns a proper JSON response. Send a test request and see what response we get, customize the welcome message with a name.
Creating a Todo Resource
In this video, we will create REST services for a basic todo management system. Retrieve and store details of a todo, perform integration testing on the TodoController class, & retrieve details for a specific Todo.
In this video, we will add the method to create a new Todo. Post the todo to the given URI and getting the location from the header, and assert the location that contains the path to the newly created resource.
Spring Boot provides good default exception handling. We will start with looking at the default exception handling features provided by Spring Boot before moving on to customizing them. Understand the default exception handling provided by Spring Boot, create a resource that throws an exception, & a custom exception.
HATEOAS – The REST Application Architecture
HATEOAS brings this concept of displaying related links for a given resource to RESTful services. When we return the details of a specific resource, we also return links to operations that can be performed on the resource, as well as links to related resources. Spring Boot starter HATEOAS.
A good service always validates data before processing it. In this video, we will look at the Bean Validation API and use its reference implementation to implement validation in our services. Enable validation of the controller method, add validations on the bean, & define a few validations on the Todo bean.
Documenting REST Services
There are multiple options to define a service contract for RESTful services. The most popular one in the last couple of years is Swagger. Swagger is gaining a lot of ground, with support from major vendors in the last couple of years. In this video, we will generate Swagger documentation for our services. Generate swagger specification, define all the elements in the Todo bean, create a todo for the user in Swagger UI.
In this video, we will look at the implementation options that Spring Boot provides. Enable caching on the application & add custom data to cache.
It is a good practice to externalize configurations that change between different environments into a configuration file or database. Spring Boot provides a flexible, standardized approach for externalized configuration. Customize frameworks through application.properties.
Custom Properties in application.properties
In this video, we will look at creating our application-specific configuration that can also be configured in application.properties. Configuration properties & profiles-based Bean configuration.
Spring Boot Actuator
Spring Boot Actuator provides a number of production-ready monitoring features. We will add Spring Boot Actuator by adding a simple dependency. Add an HAL Browser to our application to visualize the information better configuration properties.