cloud design patterns - havit knowledge base · 5/16/2018  · robert haken software & cloud...

44
Robert Haken software & cloud architect, HAVIT, s.r.o. [email protected], @RobertHaken Microsoft MVP: Development, MCT, MCPD: Web, MCSE: Cloud Cloud Design Patterns Generální partner

Upload: others

Post on 08-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Robert Haken

software & cloud architect, HAVIT, s.r.o.

[email protected], @RobertHaken

Microsoft MVP: Development, MCT, MCPD: Web, MCSE: Cloud

Cloud Design Patterns

Generální partner

Page 2: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Cloud Challenges – Pattern Categories

Availability

Data Management

Design and Implementation

Messaging

Management and Monitoring

Performance and Scalability

Resiliency

Security

Page 3: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Cache-Aside #PerformanceScalability

#DataManagement

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

Static Content Hosting #PerformanceScalability

#DataManagement

#DesignImplementation

Page 6: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Valet Key #Security

#DataManagement

Page 7: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,
Page 8: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Gatekeeper #Security

Page 9: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Gateway Offloading #ManagementMonitoring

#DesignImplementation

Page 10: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Gateway Aggregation #ManagementMonitoring

#DesignImplementation

Page 11: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Gateway Routing #ManagementMonitoring

#DesignImplementation

Page 12: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Strangler #DesignImplementation

#ManagementMonitoring

Page 13: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Anti-Corruption Layer #DesignImplementation

#ManagementMonitoring

Page 14: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Health Endpoint Monitoring #Availability

#ManagementMonitoring

#Resiliency

Page 15: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Azure Traffic Manager

Page 16: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

External Configuration Store #ManagementMonitoring

#DesignImplementation

Page 17: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

.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 – Read from environment variables

▪ AzureKeyVaultConfigBuilder – Read from Azure Key Vault

▪ UserSecretsConfigBuilder – Read from a usersecrets file on disk

▪ SimpleJsonConfigBuilder – Read from a JSON file

Page 18: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Sharding – Lookup Strategy #PerformanceScalability

#DataManagement

Page 19: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Sharding – Range Strategy #PerformanceScalability

#DataManagement

Page 20: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Sharding – Hash Strategy #PerformanceScalability

#DataManagement

Page 21: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Throttling 1/3 #PerformanceScalability

#Availability

Page 22: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Throttling – combined with Auto-Scaling 2/3

Page 23: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Throttling – Example 3/3

Page 24: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Retry #Resiliency

Page 25: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

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

#Resiliency

Page 26: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Circuit Breaker

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

#Resiliency

Page 27: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Bulkhead

connection pools that call individual services

multiple clients calling a single service

#Resiliency

Page 28: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Materialized View #PerformanceScalability

#DataManagement

Page 29: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Event Sourcing #DataManagement

#PerformanceScalability

Page 30: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Compensating Transaction #DataManagement

#Resiliency

Page 31: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

CQRS -Command and Query Responsibility Segregation

CRUD CQRS

#DesignImplementation

#PerformanceScalability

#DataManagement

Page 32: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Queue-Based Load Leveling 1/2 #Messaging

#Availability

#PerformanceScalability

#Resiliency

Page 33: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Competing Consumers #Messaging

Page 34: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Priority Queue #Messaging

#PerformanceScalability

Page 35: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Pipes and Filters 1/3 #DesignImplementation

#Messaging

Page 36: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Pipes and Filters 2/3

Page 37: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Pipes and Filters 3/3

Page 38: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Sidecar (Sidekick) #ManagementMonitoring

#DesignImplementation

Page 39: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Ambassador #ManagementMonitoring

#DesignImplementation

Page 40: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Compute Resource Consolidation #DesignImplementation

Page 41: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Federated Identity #Security

Page 42: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Backends for Frontends #DesignImplementation

Page 43: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Reference

Credits:

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

Blog – HAVIT Knowledge Base

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

Twitter - @RobertHaken

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

Page 44: Cloud Design Patterns - HAVIT Knowledge Base · 5/16/2018  · Robert Haken software & cloud architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Microsoft MVP: Development, MCT,

Aktuální a navazující kurzy sledujte na www.gopas.cz

DÁREK PRO VÁS!

Vyplňte dotazníkové hodnocení

a získejte tričko TechEd-DevCon 2018!

SOUTĚŽ! SOUTĚŽ! SOUTĚŽ!

Soutěžte o titul TechEd Best Developer

a TechEd Best IT PRO!