Microservices Architecture and Design Training

Microservices is one of the latest software architecture styles that promises to deliver benefits such as ease of testing, fast and easy deployments, fine-grained scalability, architectural modularity, and overall agility. It is undeniably one of the latest trends in the software industry, and everyone seems to be jumping on the bandwagon to quickly embrace and adapt this new architecture style. Unfortunately, as many companies are painfully experiencing, microservices is a fairly complex architecture style that is not suited for all applications and environments. 

In this intensive 1-day course I will take you on a detailed journey through the microservices architecture style. By the end of this course, you will gain a full understanding of microservices from and architecture and design standpoint, gain a full understanding of the implications and challenges of microservices (and how to overcome those challenges), and finally validate whether microservices is the right choice for your company. 

For more information about the course or to schedule the course for your organization please contact me directly at info@developertoarchitect.com. 

Course Agenda

Architectural Modularity

  • Technical Drivers
  • Business Drivers
  • How Much Modularity is Enough?

Microservices Topology

  • Topology Overview
  • Remote Access
  • Fallacies of Distributed Computing
  • Distributed Architecture Challenges

Service Design and Granularity

  • Service Design Techniques
  • Service Taxonomy
  • Service Granularity
  • Interservice Communication

Share Nothing Architecture

  • Bounded Context
  • Shared Libraries
  • Sharing a Database and Schema

API Layer and Gateways

  • Purpose of an API
  • Proxy vs. Gateway
  • Service Mesh
  • Defining Service Domains
  • Integrating Microservices Ecosystems

Restful Communications

  • Interservice Communication Using Rest
  • Issues with Rest Communications
  • Addressing Stamp Coupling

Messaging Communications

  • Capabilities
  • Request/Reply
  • Using Messaging Between Services

Service Orchestration

  • Orchestration vs. Choreography
  • Issues with Gateway Orchestration
  • Using Microservice Orchestrators

Service Aggregation

  • Aggregation vs. Orchestration
  • Issues with Orchestration
  • Using Service Aggregation
  • Aggregation Use Cases

Service Gateway Pattern

  • Interfacing With Custom or Third-Party Systems
  • Using a Service Gateway
  • Migrating Functionality to Microservices

Distributed Data Challenges

  • Data Importance
  • How Many Database Instances Should You Have?
  • How Data Impacts Service Granularity
  • Data Sharing and Access Issues

Creating Data Domains

  • Defining Data Domains 
  • Data Taxonomy
  • Information to Table Mapping
  • Information to Service Mapping
  • Assigning Tables to Domains
  • Resolving Cross-Domain Artifacts
  • Handing Common Data

Distributed Transactions

  • Transaction Sagas
  • ACID vs. BASE Transactions
  • Background Eventual Consistency Pattern
  • Request-Based Eventual Consistency Pattern
  • Event-Based Eventual Consistency Pattern

Hybrid Architectures

  • Issues with Microservices for Business Applications
  • Service-Based Topology
  • Advantages of Service-Based Architecture
  • Topology Configurations
  • Managing Database Changes

Microservices Migration Patterns

  • Identifying Logical Components
  • Flattening and Refactoring Components
  • Identifying Component Dependencies
  • Identifying and Creating Component Groups (Domains)
  • Creating a Remote User Interface
  • Migrating Domains to Macro Services
  • Identifying Microservices

©2019 Developer To Architect