cloud design patterns - havit knowledge base · 4/8/2018  · cloud design patterns robert haken...

51
Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. [email protected], @RobertHaken, https://knowledge-base.havit.cz + .eu Microsoft MVP: Development, MCT, MCPD: Web, MCSE: Cloud

Upload: others

Post on 08-Jun-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Cloud Design Patterns

Robert Hakensoftware & cloud architect, HAVIT, [email protected], @RobertHaken, https://knowledge-base.havit.cz + .euMicrosoft MVP: Development, MCT, MCPD: Web, MCSE: Cloud

Page 2: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Cloud Challenges

Availability

Data Management

Design and Implementation

Messaging

Management and Monitoring

Performance and Scalability

Resiliency

Security

Credits: https://docs.microsoft.com/en-us/azure/architecture/patterns/

Page 3: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Management and Monitoring patterns

Ambassador

Anti-CorruptionLayer

ExternalConfigurationStore

GatewayAggregation

GatewayOffloading

GatewayRouting

HealthEndpointMonitoring

Sidecar

Strangler

Page 4: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Anti-CorruptionLayer

Page 5: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

External ConfigurationStore

Page 6: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

.NET 4.7.1 -ConfigurationBuilders<configBuilders>

<builders><add name="KeyVault" mode="Strict" prefix="conn_" stripPrefix="true"

clientId="MyId" clientSecret="mySecret" vaultName="MyVault"type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, ..." />

<add name="MyOtherConfigBuilder" type="CustomConfigBuilders.MyOtherConfigBuilder, ..." /></builders>

</configBuilders><appSettings configBuilders="KeyVault,MyOtherConfigBuilder">

<add key="Setting1" value="May Be Replaced" /><add key="Setting2" value="May Be Removed" /><!-- Setting3 could be added by a builder without even being declared here. -->

</appSettings>

• EnvironmentConfigBuilder–Readfromenvironment variables

• AzureKeyVaultConfigBuilder–ReadfromAzure KeyVault

• UserSecretsConfigBuilder–Readfroma usersecretsfileon disk

• SimpleJsonConfigBuilder–Readfroma JSON file

Page 7: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

GatewayAggregation

Page 8: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

GatewayOffloading

Page 9: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

GatewayRouting

Page 10: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

HealthEndpointMonitoring

Page 11: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Azure TrafficManager

Page 12: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Sidecar

Page 13: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Ambassador

Page 14: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Performance and Scalability

Cache-Aside

CQRS

Event Sourcing

Index Table

MaterializedView

Priority Queue

Queue-BasedLoadLeveling

Sharding

Static ContentHosting

Throttling

Page 15: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Cache-Aside

Page 16: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft
Page 17: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Static ContentHosting

Page 18: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Sharding–LookupStrategy

Page 19: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Sharding–RangeStrategy

Page 20: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Sharding–HashStrategy

Page 21: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Throttling 1/3

Page 22: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Throttling–combinedwithAuto-Scaling 2/3

Page 23: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Throttling–Example 3/3

Page 24: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Resiliency

Bulkhead

CircuitBreaker

CompensatingTransaction

HealthEndpointMonitoring

Leader Election

Queue-BasedLoadLeveling

Retry

Scheduler Agent Supervisor

Page 25: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Retry

Page 26: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Retry –Azure ServicesService Retry capabilities Policy configuration Scope Telemetry features

Azure Storage Native in client Programmatic Client and individual operations TraceSource

SQL Database with Entity

Framework

Native in client Programmatic Global per AppDomain None

SQL Database with Entity

Framework Core

Native in client Programmatic Global per AppDomain None

SQL Database with ADO.NET Polly Declarative and programmatic Single statements or blocks of code

Custom

Service Bus Native in client Programmatic Namespace Manager, Messaging Factory, and Client

ETW

Azure Redis Cache Native in client Programmatic Client TextWriter

Cosmos DB Native in service Non-configurable Global TraceSource

Azure Search Native in client Programmatic Client ETW or Custom

Azure Active Directory Native in ADAL library Embeded into ADAL library Internal None

Service Fabric Native in client Programmatic Client None

Azure Event Hubs Native in client Programmatic Client None

Page 27: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Bulkhead[přepážka]

connection pools that call individual services multiple clients calling a single service

Page 28: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

CircuitBreaker

https://github.com/App-vNext/Polly

Page 29: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Data Management

Cache-Aside

CQRS

Event Sourcing

Index Table

MaterializedView

Sharding

Static ContentHosting

ValetKey

Page 30: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

MaterializedView

Page 31: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Event Sourcing

Page 32: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

CompensatingTransaction

Page 33: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

CQRS -Command and Query Responsibility Segregation

CRUD CQRS

Page 34: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

ValetKey

Page 35: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft
Page 36: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Messaging

CompetingConsumers

Pipesand Filters

Priority Queue

Queue-BasedLoadLeveling

Scheduler Agent Supervisor

Page 37: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

CompetingConsumers

Page 38: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Queue-Based LoadLeveling1/2

Page 39: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Queue-BasedLoadLeveling2/2 -Example

Page 40: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Priority Queue

Page 41: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Pipesand Filters1/3

Page 42: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Pipesand Filters2/3

Page 43: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Pipesand Filters3/3

Page 44: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Design and Implementation

Ambassador

Anti-CorruptionLayer

BackendsforFrontends

CQRS

ComputeResourceConsolidation

ExternalConfigurationStore

GatewayAggregation

GatewayOffloading

GatewayRouting

Leader Election

Pipesand Filters

Sidecar

Static ContentHosting

Strangler

Page 45: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

BackendsforFrontends

Page 46: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

ComputeResourceConsolidation

Page 47: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Strangler

Page 48: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Security

Federated Identity

Gatekeeper

Valet Key

Page 49: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

FederatedIdentity

Page 50: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Gatekeeper

Page 51: Cloud Design Patterns - HAVIT Knowledge Base · 4/8/2018  · Cloud Design Patterns Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken, + .eu Microsoft

Reference

Blog –HAVIT KnowledgeBase

http://knowledge-base.havit.cz/

Twitter

@RobertHaken

YouTube

https://www.youtube.com/user/HAVITcz