Microservices Architecture and Design

Format: Live Virtual Training
Duration: 1-Day Class
Instructor: Mark Richards

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 hands-on virtual training class I 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 pricing and availability of this course for private (corporate) training, please contact me at info@developertoarchitect.com. For public training offerings for this course, please see my public schedule at my upcoming events page.   

Course Agenda 

Unit 1. Architectural Modularity

1.1 Why Modularity?
1.2 Technical Drivers
1.3 Business Drivers

Unit 2. Microservices Core Concepts

2.1 Topology Overview
2.2 Microservice Definition
2.3 Bounded Context

Unit 3. Service Design

3.1 Micro-Hexagonal Design Techniques 
3.2 Protocol-Agnostic Processing
3.3 Protocol Adapters
3.4 Service Adapters
3.5 Design Example

Unit 4. Service Granularity

4.1 Granularity Drivers 
4.2 Granularity Factors
4.3 Hands-On Exercises: Identifying Services

Unit 5. Service Types

5.1 Functional Services 
5.2 Infrastructure Services
5.3 Orchestration Services
5.4 Aggregator Services
5.5 Adapter Services
5.6 Data Services
5.7 Identifying Service Types Through Code
5.8 Leveraging Service Types for Governance

Unit 6. Identifying Microservices

7.1 Functional Approach
7.2 Data-Driven Approach
7.3 API-Driven Approach
7.4 Service Identification Roadmap

Unit 7. Dealing With Code Reuse

7.1 Replication
7.2 Shared Libraries
7.3 Shared Services
7.4 Service Consolidation
7.5 Guidelines for Each Technique

Unit 8. Decomposing Data

8.1 Data Decomposition Issues
8.2 Data Domains 
8.3 Managing Broad Bounded Contexts
8.4 Data Decomposition Drivers

Unit 9. Data Access and Ownership

9.1 Data Ownership
9.2 Inter-service Communication
9.3 Data Replication
9.4 Replicated Caching
9.5 Data Domains
9.6 Guidelines for Choosing a Technique
9.7 Hands-On Exercises: Data Ownership and Access

Unit 10. Managing Workflows

10.1 Orchestration
10.2 Choreography 
10.3 Workflows and Sagas
10.4 Defining States and State Transitions
10.5 Hands-On Exercises: Communication and Workflow

Unit 11. Hybrid Architectures

11.1 Service-Based Architecture
11.2 Leveraging Hybrids
11.3 Hybrid Architecture Example

Unit 12. Summary

12.1 Parting Words of Advice

©2020 DeveloperToArchitect