Highlights
- Understand microservices and the relationship with SOA and DevOps
- Move from business requirements to service design
- Learn the principles of microservices architecture
- Learn techniques for designing and migrating to a microservice architecture
- Understand communicating infrastructure technologies
- Appreciate how to use tools for enabling microservices
- Incorporate security, testing and quality into a microservices architecture
- Monitor microsystems and size appropriately for maximum scalability
- Build modern, scalable, highly available and easily maintainable applications
Course Details
What are Microservices?
- Small and focused
- Loosely coupled
- Language-neutral
- Bounded context
- Domain-driven design
- Comparing microservices and monolithic architectures
Benefits from Microservices
- Enterprise solutions context
- Challenges with monolithic architecture
- Developer perspective
- Tester perspective
- Business owner perspective
- Service management perspective
- Exercise: Try out a SOAP and REST service using Postman
Analysing and Designing microservices
- What is a microservice application?
- Scaling through Decomposition
- Key Principles
- Who uses microservices?
- Domain-driven Design
- Service Analysis, Design and implementation
- Exercise: Analyse course case study and use Domain driven design
API Management
- API Economy in Numbers
- API-Led Architecture
- Hypermedia
- API Gateway
- API Micro Gateways
- Sidecar pattern
- Exercise: Write OpenAPI or Swagger contract
Microservices today
- Microservices at Robinhood
- The contents of an Event
- Exposing Services to the World
- Exercise: Build a service using java, maven and Spring boot
Architecture of a Microservices Application
- Role of the Architect
- A microservice platform
- Services layer
- Communication
- Locating Services
- The application boundary
- Client layer
- Exercise: Configure a services registry such as Eureka
Architectural Modularity
- Technical Drivers
- Business Drivers
- How Much Modularity is enough?
- Sacrificial Architecture
- Exercise: Build a Micro Frontend with Node.js and Angular spa
Service Design
- Micro Hexagonal Service Design Pattern
- Service Taxonomy
- Identifying Taxonomy
Service Granularity
- Purpose and Service Scope
- Transactions
- Data Dependencies
- Workflow and Choreography
- Code Structure and Reuse
- Exercise: Configure an API gateway
Share Nothing Architecture
- Bounded Context
- Shared Libraries
- Sharing a Database and Schema
Inter-service communication Using gRPC
- Using gRPC Between Services
- How gRPC Works
- Load Balancing gRPC Servers
- Exercise: Configure an API gateway (example Nginx) to load balance request
Orchestration and Choreography
- Defining Orchestration
- Defining Choreography
- Service Orchestration
- Issues with Gateway Orchestration
- Using Microservice Orchestrators
- Orchestration and Loose Coupling
- Exercise: Walk through some Saga code
Service Aggregation
- Aggregation vs. Orchestration
- Issues with Orchestration
- Using Service Aggregation
- Aggregation Use Cases
Deploying Microservices
- Why is Deployment important?
- A microservice production environment
- Serverless Computing
- Building Service Artefacts
- Securing the Services
- Service to Host models
- Containerizing a Service
- Deploying to a Cluster
- Deploying services without downtime
- Exercise: Deploy a service to a Docker container
Transactions and Queries with Microservices
- Consistent transactions
- Event-based communication
- Sagas
- CQRS
- Event Sourcing
- CAP Theorem
- Exercise: Configure MongoDB and H2 for command and query side to test CQRS pattern
Microservices and Distributed Data
- Change Control Issues
- Connection Issues
- Bounded Context and Data
- Exercise: Using polyglot persistence
Distributed Data Issues
- Data Sharing and Choreography
- Data Sharing and Data Replication
- Sharing data between Services
- Using Replicated Caching
- Limitations and Restrictions
Designing Reliable Services
- Defining Reliable Service
- What could go wrong
- Designing reliable communication
- Maximizing service reliability
- Exercise: Using Kubernetes
- Service Mesh
- Exercise: Using Istio and Envoy to build a simple service Mesh
Building a Delivery Pipeline for Microservices
- Making deploys boring
- Building a pipeline with Jenkins
- Building reusable pipeline steps
- Exercise: Configure Jenkins
DevOps and Microservices
- Why you should use DevOps
- Defining DevOps
- DevOps, a prerequisite to successfully adopting microservices?
- Organizing teams to support microservices
Using an Event Broker
- Building Topologies
- Event-driven Approach
- Processing Events with Stateful Functions
- Making Events the source of truth
- Exercise: Using Kafka
Microservices governance
- Centralized versus decentralized governance
- Enterprise transformation for microservices
- DevOps capabilities: Testing strategies for microservices
- Considerable testing methods
- Building a sufficient testing strategy
Hybrid Architectures
- Issues with Microservices for Business Applications
- Service-Based Topology
- Advantages of Service-Based Architecture
- Topology Configurations
- Managing Database Changes
- Microservices: a few epic fails
Testing Microservices
- Testing Strategies
- Writing Unit Tests
- Writing Integration Tests
- Developing Component Tests
- Writing End-to-End Tests
- Exercise: A quick look at Cucumber and Gherkin
Who should attend
This course is suitable for Enterprise Architects who need to design flexible large-scale systems and oversee agile development of services that meet business needs. Developers and Analysts may also find this course useful as a means of gaining a broader background in Microservices Architecture.
Feedback
4.8 out of 5 average
"It felt like a thorough dive into a microservices driven approach and the surrounding context. In particular I found the more technical discussion of architecture approaches (DDD, SOA, Event-driven stuff) very useful indeed"
GH, Software Engineer, Microservices, July 2021
“JBI did a great job of customizing their syllabus to suit our business needs and also bringing our team up to speed on the current best practices. Our teams varied widely in terms of experience and the Instructor handled this particularly well - very impressive”
Brian F, Team Lead, RBS, Data Analysis Course, 20 April 2022