- How does Microsoft Azure work, https://youtu.be/KXkBZCe699A
- Browse Architectures, https://docs.microsoft.com/en-us/azure/architecture/browse/
- Introduction to Containersand Docker
- Choosing Between .NET 5 and .NET Framework for Docker Containers
- Architecting Container and Microservice Based Applications
- Development Process for Docker Based Applications
- Designing and Developing Multi Container and Microservice Based .NET Applications
- Tackling Business Complexity in a Microservice with DDD and CQRS Patterns
- Implementing Resilient Applications
- Securing .NET Microservices and Web Applications
- Key takeaways
| Patterns | Summary |
|---|---|
| Cache-Aside | Load data on demand into a cache from a data store |
| CQRS | Segregate operations that read data from operations that update data by using separate interfaces. |
| Event Sourcing | Use an append-only store to record the full series of events that describe actions taken on data in a domain. |
| Index Table | Create indexes over the fields in data stores that are frequently referenced by queries. |
| Materialized View | Generate prepopulated views over the data in one or more data stores when the data isn't ideally formatted for required query operations. |
| Sharding | Divide a data store into a set of horizontal partitions or shards. |
| Static Content Hosting | Deploy static content to a cloud-based storage service that can deliver them directly to the client. |
| Valet Key | Use a token or key that provides clients with restricted direct access to a specific resource or service. |
| Patterns | Summary |
|---|---|
| Ambassador | Create helper services that send network requests on behalf of a consumer service or application. |
| Anti-Corruption Layer | Implement a façade or adapter layer between a modern application and a legacy system. |
| Backends for Frontends | Create separate backend services to be consumed by specific frontend applications or interfaces. |
| CQRS | Segregate operations that read data from operations that update data by using separate interfaces. |
| Compute Resource Consolidation | Consolidate multiple tasks or operations into a single computational unit |
| External Configuration Store | Move configuration information out of the application deployment package to a centralized location. |
| Gateway Aggregation | Use a gateway to aggregate multiple individual requests into a single request. |
| Gateway Offloading | Offload shared or specialized service functionality to a gateway proxy. |
| Gateway Routing | Route requests to multiple services using a single endpoint. |
| Leader Election | Coordinate the actions performed by a collection of collaborating task instances in a distributed application by electing one instance as the leader that assumes responsibility for managing the other instances. |
| Pipes and Filters | Break down a task that performs complex processing into a series of separate elements that can be reused. |
| Sidecar | Deploy components of an application into a separate process or container to provide isolation and encapsulation. |
| Static Content Hosting | Deploy static content to a cloud-based storage service that can deliver them directly to the client. |
| Strangler Fig | Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services. |
| Patterns | Summary |
|---|---|
| Asynchronous Request-Reply | Decouple backend processing from a frontend host, where backend processing needs to be asynchronous, but the frontend still needs a clear response. |
| Claim Check | Split a large message into a claim check and a payload to avoid overwhelming a message bus. |
| Choreography | Have each component of the system participate in the decision-making process about the workflow of a business transaction, instead of relying on a central point of control. |
| Competing Consumers | Enable multiple concurrent consumers to process messages received on the same messaging channel. |
| Pipes and Filters | Break down a task that performs complex processing into a series of separate elements that can be reused. |
| Priority Queue | Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those with a lower priority. |
| Publisher-Subscriber | Enable an application to announce events to multiple interested consumers asynchronously, without coupling the senders to the receivers. |
| Queue-Based Load Leveling | Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads. |
| Scheduler Agent Supervisor | Coordinate a set of actions across a distributed set of services and other remote resources. |
| Sequential Convoy | Process a set of related messages in a defined order, without blocking processing of other groups of messages. |





