In this masterclass you will learn what makes a good microservice, how to use concepts from domain driven design to define service boundaries, explore how to plan and manage a migration from a monolith to the microservice architecture plus much more.

Course Overview

Objectives & Prerequisites

By the end of the course, you should be able to meet the following objectives:

  • What makes a good microservice.
  • How to use concepts from domain driven design to define service boundaries.
  • Explore how to plan and manage a migration from a monolith to the microservice architecture.
  • Understand how technical choices can impact the architecture itself.
  • How to manage change and governance in a microservice environment.

 

Prerequisites

  • This is a participatory masterclass. You won’t get to just sit there and watch – the more you participate in the masterclass, the more you’ll get out!

 

Please note that the 3 Day outline below is purely indicative. There is the flexibility to spend more (or less) time on specific subjects, and this can usually be accommodated as the material is broken down into modules that can be swapped around. This will be determined during the class, based on the groups wishes. Please also be aware the masterclass itself is not a hands-on coding class, but is designed to be interactive with lots of time for attendees to work together and ask questions.

Day 1: Introducing Microservices, Service Modelling...

Introducing Microservices

  • What microservices are: Technology & SOA
  • Advantages of microservices
  • Disadvantages of microservices
  • When should you use them, and when shouldn’t you use them?

Service Modelling

  • Characteristics of “good” services
  • Introduction to domain driven design
  • Usefulness of Bounded Contexts when defining service boundaries Splitting Out Services
  • Working out where to start
  • Splitting stateless services
  • Database refactoring patterns
  • Use of strangler and branch by abstraction patterns
  • Discussion of CAP theory
  • Distributed transactions
  • Eventual consistency

Day 2: Service Collaboration, Testing, Observability...

Service Collaboration

  • Pitfalls of service collaboration
  • Synchronous vs asynchronous
  • Event-based collaboration vs Request/Response
  • Coverage of technology options including: HTTP over REST & RPC; Actor frameworks; Message Brokers including Kafka
  • Choreography vs Orchestration

Testing 

  • End-to-end testing in a microservice world
  • Test types and feedback
  • Consumer-driven contracts
  • Testing in production?

Observability

  • Log aggregation
  • Correlation IDs
  • Metrics collection
  • Semantic monitoring
  • Real-user monitoring
  • Synthetic Transactions

Resiliency & Scaling

  • Types of scaling (scaling cube + more)
  • Scaling for load vs scaling for resiliency
  • Circuit Breakers and connection pooling
  • Bulkheads & timeouts
  • Service Meshes & Message Brokers

User Interfaces / Mobile

  • UI aggregation models
  • General-purpose API gateways
  • Backends-for-frontends
  • GraphQL

Day 3: Evolutionary Architecture, Organisational Aspects, Security...

Evolutionary Architecture

  •  The challenges of big-bang rewrite
  •  How the role of the architect changes in a microservice team
  •  What is evolutionary architecture?

Organisational Aspects

  • Conway’s Law
  • Service ownership models

Security

  • Simple model for AppSec
  • Threat modeling
  • Standard prevention mechanisms
  • Protection of data in transit
  • Authentication & authorisation
  • Recovering from security incidents

Build & Deployment

  • Build/CI basics
  • Microservices & repo/CI mapping
  • Pipeline design
  • Deployment mechanisms
  • Containerisation vs virtualisation
  • Deployment platforms (Kubernetes et al)

Serverless and Microservices

  • Where does serverless come in?
  • How does FAAS map to microservices?
  • Challenges in serverless adoption