infuerno.github.io

.NET Conf Microservices 2020 - Workshop

Resources

Workshop Module 1: Introducing Microservices

Define microservices: What are they? How do they work? Benefits and challenges? Problems they solve. Identity systems that would warrant this architectural approach.

Workshop Module 2: Modeling Microservices

Examine best practices for scoping microservices. What are the drivers for partitioning them? How granular should they be? Greenfield systems as well as approaches to replatforming brownfield monolithic systems into a microservice architecture.

Workshop Module 3: Architecting Microservices

Explore microservice architecture, characteristics and design. Emphasis is on widely-accepted patterns and principles. Coverage includes service design, DDD, backing services, observability, resiliency, idempotency, and decoupled configuration.

Domain Architectures

Anemic Domain Model

A single microservice could be developed in a single assembly using the Anemic Domain Model approach:

Domain Model

Alternatively, for anything not super simple use a regular Domain Model approach:

Domain Entity pattern

Domain Aggregates pattern

Domain Aggregates pattern

Backing Services

Ancillary resources e.g.

Should be able to attach / detach without code changes i.e. plug and play using Strategy pattern

Observability

Correlation ID generation

API Gateway pattern

API Gateway options

Azure API Management
Azure Application Gateway
Ocelot
Azure Front Door
Envoy

Workshop Module 4: Microservice Communication

We explore how clients communicate with microservices and how microservices collaborate among one another. Request/response, publish/subscribe, gRPC, API Gateways, and more. Emphasis is on the trade-offs among messaging patterns.

Two approaches to communications, solution will depend on the message type

Message types

Workshop Module 5: Distributed Data

We consider best practices for managing distributed data following the widely-accepted Database per Microservice pattern. Emphasis is on managing consistency when implementing cross-service queries and transactions. Coverage of Materialized View Patterns, Sagas, CQRS, and Event Sourcing. Discussion of relational and No-SQL Options in Azure.

Workshop Module 6: Deploying Microservices to Kubernetes

We deploy a set of containerized microservices to Azure Kubernetes Service. Emphasis is on the orchestration and management features of Kubernetes along with decision of criteria of when to use it.

Container Management

Containers need to:

Orchestration helps with this!

Orchestration

Large containerized workloads required automated management or orchestration including provisioning, service discovery, networking, scaling, upgrades, failover, monitoring, affinity (provision nearby or far apart)

Kubernetes

https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/containers/aks-microservices/aks-microservices

NDC Sidney 2019 :Dissecting Kubernetes (K8s) - An Intro to Main Components - Joshua Sheppard The speaker (Joshua Sheppard) runs every single part of Kube on Vagrant and "handle manual file changes on Kubelet / Control plane …)