Duration
5 days
Course Overview
As organizations shift from monolithic applications to smaller, self-contained microservices, distributed systems have become more fine-grained. But developing these new systems brings its own host of problems. This course takes a holistic view of topics that you need to consider when building, managing, and scaling microservices architectures.
- Get new information on user interfaces, container orchestration, and serverless
- Align system design with your organization's goals
- Explore options for integrating a service with your system
- Understand how to independently deploy microservices
- Examine the complexities of testing and monitoring distributed services
- Manage security with expanded content around user-to-service and service-to-service models
Course Duration
5 days (based on 8 hours a day schedule)
Chapter 1 – Setting the Scene
- From Basics to Advanced Topics
- Skeleton with Spring Boot, the Professional Way
- Test-Driven Development
- Microservices
- Event-Driven System
- Nonfunctional Requirements
Chapter 2 – Basic Concepts
- Spring
- Spring Boot
- Lombok and Java
- Testing Basics
- Test-Driven Development
- Behavior-Driven Development
- Junit
- Mockito
- AssertJ
- Testing in Spring Boot
- Logging
Chapter 3 – A Basic Spring Boot Application
- Setting up the Development Environment
- The Skeleton Web App
- Spring Boot Autoconfiguration
- Three-Tier, Three-Layer Architecture
- Modeling Our Domain
- Domain Definition and Domain-Driven Design
- Domain Classes
- Business Logic
- What We Need
- Random Challenges
- Attempt Verification
- Presentation Layer
- REST
- REST APIs with Spring Boot
- Designing Our APIs
- Our First Controller
- How Automatic Serialization Works
- Testing Controllers with Spring Boot
Chapter 4 – A Minimal Front End with React
- A Quick Intro to React and Node
- Setting Up the Development Environment
- The React Skeleton
- A JavaScript Client
- The Challenge Component
- The Main Structure of a Component
- Rendering
- Integration with the App
- Running Our Front End for the First Time
- Debugging
- Adding CORS Configuration to the Spring Boot App
- Deploying the React App
Chapter 5 – The Data Layer
- The Data Model
- Choosing a Database
- SQL vs NoQSL
- H2, Hibernate and JPA
- Spring Boot Data JPA
- Dependencies and Autoconfiguration
- Spring Boot Data JPA Technology Stack
- Data Source Autoconfiguration
- Entities
- Repositories
- Storing Users and Attempts
- Displaying Last Attempts
- Service Layer
- Controller Layer
- User Interface
Chapter 6 – Starting with Microservices
- The Small Monolith Approach
- Why a Small Monolith?
- The Problem with Microservices from Day Zero
- Small Monoliths Are for Small Teams
- Embracing Refactoring
- Planning the Small Monolith for a Future Split
- New Requirements and Gamification
- Gamification: Points, Badges and Leaderboards
- Moving to Microservices
- Independent Workflows
- Horizontal Scalability
- Fine-Grained Nonfunctional Requirements
- Advantages and Disadvantages
- Architecture Overview
- Designing and Implementing the New Service
- Interfaces
- The Spring Boot Skeleton for Gamification
- Domain
- Service
- Data
- Controller
- Configuration
- Changes in Multiplication Microservice
- UI
- The Challenges Ahead
- Tight Coupling
- Synchronous Interfaces vs Eventual Consistency
- Transactions
- API Exposure
Chapter 7 – Common Patterns in Microservice Archiectures
- Gateway
- Spring Cloud Gateway
- The Gateway Microservice
- Changes in Other Projects
- Running the Gateway Microservice
- Health
- Spring Boot Actuator
- Including Actuator in Our Microservices
- Service Discovery and Load Balancing
- Consul
- Spring Cloud Consul
- Spring Cloud Load Balancer
- Service Discovery and Load Balancing in the Gateway
- Playing with Service Discovery and Load Balancing
- Configuration per Environment
- Configuration in Consul
- Spring Cloud Consul Config
- Implementing Centralized Configuration
- Centralized Configuration in Practice
- Centralized Logs
- Log Aggregation Pattern
- A Simple Solution for Log Centralization
- Consuming Logs and Printing Them
- Distributed Tracking
- Spring Cloud Sleuth
- Implementing Distributed Tracing
- Containerization
- Docker
- Spring Boot and Buildpacks
- Running Our System in Docker
- Dockerizing Microservices
- Dockerizing the UI
- Dockerizing the Configuration Importer
- Docker Compose
- Scaling Up the System with Docker
- Sharing Docker Images
- Platforms and Cloud-Native Microservices
- Container Platforms
- Application Platforms
- Cloud Providers
- Making a Decision
- Cloud-Native Microservices
- Conclusions
Programme scope, delivery arrangements and suitability are confirmed during enquiry.