Bespoke Microservices Architecture ( bspmsarch | 21 hours )

Prerequisites:

Audience

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.

Overview:
  • 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

Format of the Course

  • Interactive lecture and discussion.
  • Lots of exercises and practice.
  • Hands-on implementation in a live-lab environment.

Course Customization Options

  • To request a customized training for this course, please contact us to arrange.
Course Outline:

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