157
Cloud Native Architecture Patterns Tutorial 2017 O'Reilly Software Architecture Conference - NYC Matt Stine ( ) @mstine http://www.mattstine.com

Cloud Native Architecture Patterns Tutorial

Embed Size (px)

Citation preview

Page 1: Cloud Native Architecture Patterns Tutorial

CloudNativeArchitecturePatternsTutorial

2017O'ReillySoftwareArchitectureConference-NYCMattStine( )@mstine

http://www.mattstine.com

Page 2: Cloud Native Architecture Patterns Tutorial

Introduction

Page 3: Cloud Native Architecture Patterns Tutorial

YourInstructor

17yearsintheEnterpriseITindustry5yearsasaCloudPlatformandApplicationArchitectFrequentspeakerontheconferencecircuitHostoftheSoftwareArchitectureRadiopodcast

Page 4: Cloud Native Architecture Patterns Tutorial

YourInstructor

http://www.oreilly.com/programming/free/migrating-cloud-native-application-architectures.csp

Page 5: Cloud Native Architecture Patterns Tutorial

WorkshopComponentsLectureSocraticQ&ASessionsArchitectureKataSessions

Page 6: Cloud Native Architecture Patterns Tutorial

AgendaClassIntroductionCloudNativeArchitectureFundamentals1:30-2:15PM

SocraticQ&ASession2:15-2:30PM

CloudNativeArchitecturePatterns2:30-3:30PM

SocraticQ&ASession3:30-3:45PM

Page 7: Cloud Native Architecture Patterns Tutorial

AgendaCloudNativeArchitectureKatas-Setup3:45-4:00PM

CloudNativeArchitectureKatas-Create4:00-4:30PM

CloudNativeArchitectureKatas-Present4:30-5:00PM

Page 8: Cloud Native Architecture Patterns Tutorial

TheBusinessDriversforArchitecturalChange

Page 9: Cloud Native Architecture Patterns Tutorial

Agility

Disruption

Page 10: Cloud Native Architecture Patterns Tutorial

Agility

-MarkAndressen

Softwareiseatingtheworld.

Page 11: Cloud Native Architecture Patterns Tutorial

Agility

DisruptiveCharacteristicsSoftwareisprimaryengagementmodelNewandinnovativebusinessmodelsFastandfrequentdeliveriesHypothesis-drivendevelopment

Page 12: Cloud Native Architecture Patterns Tutorial

Agility

TheWaterscrumfall

Page 13: Cloud Native Architecture Patterns Tutorial

Agility

WaterscrumfallConsequences

SlowDeliveryLargeBatchSizesInfrequentFeedbackIncreasedWaste

Page 14: Cloud Native Architecture Patterns Tutorial

Agility

DigitalTransformation

Page 15: Cloud Native Architecture Patterns Tutorial

Resiliency

Disruptivecompaniesarealsoapproachingresiliency

differently.

Page 16: Cloud Native Architecture Patterns Tutorial

Resiliency

Stoptryingtopreventmistakes.

Page 17: Cloud Native Architecture Patterns Tutorial

Resiliency

Embracefailure.

Page 18: Cloud Native Architecture Patterns Tutorial

Resiliency

FromMTBFtoMTTR

Page 19: Cloud Native Architecture Patterns Tutorial

Resiliency

Weneedbettertoolsandtechniques.

Page 20: Cloud Native Architecture Patterns Tutorial

Resiliency

Visibility

Page 21: Cloud Native Architecture Patterns Tutorial

Resiliency

FaultIsolation

Page 22: Cloud Native Architecture Patterns Tutorial

Resiliency

FaultTolerance

Page 23: Cloud Native Architecture Patterns Tutorial

Resiliency

Scalability

Page 24: Cloud Native Architecture Patterns Tutorial

Resiliency

AutomatedRecovery

Page 25: Cloud Native Architecture Patterns Tutorial

AHigh-LevelOverviewofDevOpsandContinuous

Delivery

Page 26: Cloud Native Architecture Patterns Tutorial

DevOps

THEGREATCONFLICT

Page 27: Cloud Native Architecture Patterns Tutorial

DevOps

MyDefinition:DevOpsrepresentstheideaof

tearingdownorganizationalsilosandbuildingsharedtoolsets,

vocabularies,andcommunicationstructuresinserviceofaculture

focusedonasinglegoal:deliveringvaluerapidlyandsafely.

Page 28: Cloud Native Architecture Patterns Tutorial

DevOps

THETHREEWAYS

Page 29: Cloud Native Architecture Patterns Tutorial

DevOps

Page 30: Cloud Native Architecture Patterns Tutorial

DevOps

TheFirstWay:Flow

Page 31: Cloud Native Architecture Patterns Tutorial

DevOps

TheSecondWay:Feedback

Page 32: Cloud Native Architecture Patterns Tutorial

DevOps

TheThirdWay:ContinualLearningand

Experimentation

Page 33: Cloud Native Architecture Patterns Tutorial

ContinuousDelivery

MyDefinition:Technicallysupportingtheconcepttocashlifecyclebyprovingevery

sourcecodecommittobedeployabletoproductioninan

automatedfashion.

Page 34: Cloud Native Architecture Patterns Tutorial

ContinuousDelivery

IngredientsConfigurationManagementContinuousIntegrationAutomatedTesting

Page 35: Cloud Native Architecture Patterns Tutorial

ContinuousDelivery

CIDeveloperWorkflow

Page 36: Cloud Native Architecture Patterns Tutorial

ContinuousDelivery

TheDeploymentPipeline

Page 37: Cloud Native Architecture Patterns Tutorial

TheUniqueCharacteristicsofCloudInfrastructure

Page 38: Cloud Native Architecture Patterns Tutorial

CloudInfrastructure

MyDefinition:Anycomputingenvironmentin

whichcomputing,networking,andstorageresourcescanbe

provisionedandreleasedelasticallyinanon-demand,self-service

manner.

Page 39: Cloud Native Architecture Patterns Tutorial

CloudInfrastructure

DeploymentModelsPublicAmazonWebServicesGoogleCloudPlatformMicrosoftAzure

PrivateVMwarevSphereOpenStack

CommunityHybrid

Page 40: Cloud Native Architecture Patterns Tutorial

CloudInfrastructure

ServiceModels

The*aaSPyramid

Page 41: Cloud Native Architecture Patterns Tutorial

CloudInfrastructure

APIDrivenAutomationAuditAuthorizationAccounting

Page 42: Cloud Native Architecture Patterns Tutorial

CloudInfrastructure

SpeedIfyouneedacomponent,createit!

LoadBalancersDatabases(SQL/NoSQL)MessageQueuesPrivateNetworksStorageVolumes

Page 43: Cloud Native Architecture Patterns Tutorial

CloudInfrastructure

SpeedCaneliminate:

TicketSystemsApprovalProcessesWaitingQueuesConfigurationErrors

Page 44: Cloud Native Architecture Patterns Tutorial

CloudInfrastructure

SpeedAsfastasyoucandesignthesystemarchitecturethatyouneed,youcanusuallyprovisionandbeginusingit.

Page 45: Cloud Native Architecture Patterns Tutorial

CloudInfrastructure

ElasticGoodbyeCapacityPlanning!

Page 46: Cloud Native Architecture Patterns Tutorial

CloudInfrastructure

ElasticCapacityPlanning

Peerintothecrystalball..."What'sthemostcapacitywe'llneed?"Guessincorrectly...BlowavailablecapacityonBlackFridayHundredsofidleCPUs

Page 47: Cloud Native Architecture Patterns Tutorial

CloudInfrastructure

ElasticAsdemandincreases,wesimplyexpandcapacitybyprovisioningmoreresources

toservicethatdemand.

Page 48: Cloud Native Architecture Patterns Tutorial

CloudInfrastructure

ElasticAsdemanddecreases,wesimplycontractcapacitybyreturningresourcestothe

pool.

Page 49: Cloud Native Architecture Patterns Tutorial

CloudNativeArchitectureConcepts

Page 50: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

Modularity

Page 51: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

ThinkAbouttheThreeWays

Wewantaquantumofthisexperience.

Page 52: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

DecompositionStrategiesWhat'syours?

BoundedContextsValueStreamsSingleResponsibilityPrincpleFailureDomainsAnti-CorruptionLayers

Page 53: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

Strategiesarenotmutuallyexclusive!

Page 54: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

SoWhatAboutModularity?LooseCouplingHighCohesionEncapsulationWell-DefinedInterface

Page 55: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

GratuitousNodtoMicroservices!

Page 56: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

Ifamicroserviceisn'tgivingyouThreeWaysValue,youprobablydon'tneedit.

Page 57: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

Conway'sLawAnyorganizationthatdesignsasystem(definedbroadly)willproduceadesign

whosestructureisacopyoftheorganization'scommunicationstructure.

Page 58: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

Ifyourarchitecturalandandorganizationaldecomposition

strategiesdon'talignwell,thenCONWAYWILLFIGHT

YOU!

Page 59: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

Observability

Page 60: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

ThinkAbouttheThreeWays

Weneedfeedbacktocreateasafersystemofworkandto(in)validateourhypotheses.

Page 61: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

SeeFailureWhenItHappens

Page 62: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

MeasureEverything

Page 63: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

WhatisNormal?ValuesRatesofChangeMean?P95/99/99.9?

Page 64: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

WhatisNormal?

http://bravenewgeek.com/everything-you-know-about-latency-is-wrong

Page 65: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

Page 66: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

Page 67: Cloud Native Architecture Patterns Tutorial

ArchitectingforDevOps

ThisisanArchitecturalResponsibility

Architecturecanmakeobservabilityharder!OverheadConcernsToolsdon'tknowyourbusiness.

Page 68: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

NOTE:ArchitectingforDevOpsaidsinContinuous

Delivery!

Page 69: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

Addingsomelayers...

Page 70: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

ThinkAboutFullLifecycleArchitecture

Page 71: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

NealFord

Architectureisabstractuntilitisoperationalized.

Page 72: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

Architecturesthataren'toperationalizedexistonlyon

whiteboards!

Page 73: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

DeployabilityTestability

We'llexaminethesequalitiesbyaskingquestionsofourarchitectures.

Page 74: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

Deployability

Page 75: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

HaveyouautomatedALLofyourdeploymenttasks?

Page 76: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

Canyoutransformabrandnewdeploymentenvironment

intoyourrunningarchitecturewithoutmanual

work?

Page 77: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

Canyouvaryconfigurationacrossenvironmentswithout

rebuildingcode?

Page 78: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

DoyoudeploylikethisEVERYWHERE?

Page 79: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

Canyoudothiswithoutyourusersnoticing?

Page 80: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

Testability

Page 81: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

HaveyouautomatedALLtestingtasksthatyou

possiblycan?

Page 82: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

Doyouhavetodeployallthethingstotestanything?

Page 83: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

Iftestingisanexperiment,canyoucontroleverythingexceptyourexperimental

variable?

Page 84: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

Canyourunthesametestsagainstanyenvironment(includingproduction)?

Page 85: Cloud Native Architecture Patterns Tutorial

ArchitectingforContinuousDelivery

Canyouverifythatyoucontinuetomeetyour

contractualobligations?

Page 86: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

CloudCapabilitiesAPI-drivenSpeedElasticityGeographySpecializedServices

Page 87: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

ExploitingthecapabilitiesofCloudcanenhanceourability

topracticeDevOpsandContinuousDelivery!

Page 88: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

DisposabilityReplaceability

We'llexaminethesequalitiesbyaskingquestionsofourarchitectures.

Page 89: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

Disposableadjective

1. designedfororcapableofbeingthrownawayafterbeingusedorusedup:disposableplasticspoons;adisposablecigarettelighter.

2. freeforuse;available:Everydisposablevehiclewassent.

http://www.dictionary.com/browse/disposable

Page 90: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

Replaceverb

1. toassumetheformerrole,position,orfunctionof;substitutefor(apersonorthing):Electricityhasreplacedgasinlighting.

2. toprovideasubstituteorequivalentintheplaceof:toreplaceabrokendish.

http://www.dictionary.com/browse/replace

Page 91: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

Consequencenoun

1. anactorinstanceoffollowingsomethingasaneffect,result,oroutcome.

2. importanceorsignificance:amatterofnoconsequence.

http://www.dictionary.com/browse/consequence

Page 92: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

Disposability

CanIdestroyaserviceinstanceatanytimewithout

consequence?

Page 93: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

Disposability

CanIrepavetheentirearchitectureatanytimewithoutconsequence?

Page 94: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

Disposability

CanIrespondtochangesindemandbyaddingorremovinginstancesofa

servicewithoutconsequence?

Page 95: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

Replaceability

CanIreplaceasickserviceinstancewithabrandnew

copywithoutconsequence?

Page 96: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

Replaceability

CanIroutetraffictoanyavailableserviceinstance

withoutconsequence?

Page 97: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

Replaceability

IfIloseanAZorRegion,canIroutetraffictoanotherwithoutconsequence?

Page 98: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

Replaceability

CanIswapbetweenmultipleimplementationsofthesame

servicecontractwithoutconsequence?

Page 99: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

Replaceability

CanIswapbetweenmultiplerunningversionsofaservice

withoutconsequence?

Page 100: Cloud Native Architecture Patterns Tutorial

ArchitectingforCloudInfrastructure

TheseareArchitecturalResponsibilities

Architecturecanmakedisposabilityimpossible.Architecturecanmakereplaceabilityimpossible.Architecturemusttakechargeofremovingtheconsequencesofdisposingandreplacingserviceinstances.

Page 101: Cloud Native Architecture Patterns Tutorial

Summary

ArchitecturalDecisionMakingCan:

EnhanceorDetractfromOurAbilitytoPracticeDevOpsEnhanceorDetractfromOurAbilitytoPracticeContinuousDeliveryExploitorWastetheCharacteristicsofCloudInfrastructure

Page 102: Cloud Native Architecture Patterns Tutorial

Summary

Wecouldhavecalledthis"DevOpsNative"or

"ContinuousDeliveryNative"Architecture!

Page 103: Cloud Native Architecture Patterns Tutorial

Summary

DevOpsNativeArchitecture

Page 104: Cloud Native Architecture Patterns Tutorial

Summary

Balancing:

AgilityandResilience

Page 105: Cloud Native Architecture Patterns Tutorial

Summary

SupportedBy:

DevOpsandContinuousDelivery

Page 106: Cloud Native Architecture Patterns Tutorial

Summary

OnaFoundationof:

CloudandArchitecture

Page 107: Cloud Native Architecture Patterns Tutorial

SocraticQ&A

Page 108: Cloud Native Architecture Patterns Tutorial

CloudNativeArchitecturePatterns

Page 109: Cloud Native Architecture Patterns Tutorial

Overview

Pattern-OrientedSoftwareArchitecture,Volume1:ASystemofPatterns

Patternsshould...bedescribeduniformly.Thishelpsustocompareonepattern

withanother...

Page 110: Cloud Native Architecture Patterns Tutorial

Overview

DesignPatterns:ElementsofReusableObject-OrientedSoftware

Wedescribedesignpatternsusingaconsistentformat...makingdesign

patternseasiertolearn,compare,anduse.

Page 111: Cloud Native Architecture Patterns Tutorial

Overview

BrickandMortarPatternTemplateContextThebasicsituationinwhichwefindourselvesworking.

ProblemPresentstheproblemasasystemforceswhichmustbebalanced.

SolutionDescribesthecomponentsthatmakeupthegeneralsolution,howtheyrelatetooneanother,andtheirruntimeinteractions.

Page 112: Cloud Native Architecture Patterns Tutorial

Overview

BrickandMortarLanguageStructureBrickPatternsPatternsforconstructingindividual(micro)services.

MortarPatternsPatternsforcomposingbricksintocompletedistributedsystems.

Page 113: Cloud Native Architecture Patterns Tutorial

Overview

BrickPatternsExternalizationPatternsStructuralpatternsforcreatingdeployable,disposable,andreplaceablebricks.

ExternalizedConfigurationExternalizedStateExternalizedChannels

RuntimePatternsBehavioralpatternsforcreatingdeployable,replaceable,andobservablebricks.

RuntimeReconfigurationConcurrentExecutionBrickTelemetry

Page 114: Cloud Native Architecture Patterns Tutorial

Overview

MortarPatternsDistributedSystemsPatternsCompositionpatternsaddressingcommondistributedsystemschallenges.

ServiceDiscoveryEdgeGatewayFaultTolerance

IntegrationPatternsCompositionpatternsaddressingintegrationandobservabilitychallenges.

Event-DrivenSystemContractManagementIntegrationTelemetry

Page 115: Cloud Native Architecture Patterns Tutorial

Overview

BrickandMortarLanguageRelationships

Page 116: Cloud Native Architecture Patterns Tutorial

BrickPatternsExternalizedConfigurationExternalizedStateBrickTelemetry

Page 117: Cloud Native Architecture Patterns Tutorial

ExternalizedConfiguration

Page 118: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ContextAnapplication'sconfigurationwillvaryindependentlyfromitscodethroughout

itslifecycle.

Page 119: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ProblemTraditionaltechniquesformanagingconfigurationtightlycouplethesetwo

orthogonalconcepts.

Page 120: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ForcesDifferentenvironmentswillhavedifferentconfigurationsettings:resourcehandlestothedatabase(e.g.aJDBCURL)credentialstoexternalservices(e.g.AmazonS3)per-deployvaluessuchasthecanonicalhostname(e.g.blog-test.example.comvs.blog-prod.example.com)featuresthataretoggledonoroff

Page 121: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ForcesConfigurationisoftenbundledwithindeploymentartifacts(e.g.Javapropertiesfiles).Buildprocessesoftenmodifyconfigurationbasedonarguments.TheDeploymentPipelineshouldonlybuildeachdeploymentartifactonce,anddeploythesameartifacttomultipleenvironments.

Page 122: Cloud Native Architecture Patterns Tutorial

LIVEARCHITECTURE!

Page 123: Cloud Native Architecture Patterns Tutorial

ExternalizedState

Page 124: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ContextDisposabilityandReplaceabilityrequire

theeliminationof"snowflakedeployments"fromthearchitecture.

Page 125: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ProblemTraditionalstatemanagement

techniquespreventusfromachieving"phoenixdeployments."

Page 126: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ForcesEarlywebarchitecturesemphasizedserver-sidestatemanagement:FatClientstoThinClientsVerticallyScaledCacheManagementStatefulScaffoldingonStatelessProtocol(HTTP)

Page 127: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ForcesCloudInfrastructure:ResourceLimitedHorizontalScaleLimitedLoadBalancerSupportforSessionsLimited(No)SupportforPersistentLocalDisk

Page 128: Cloud Native Architecture Patterns Tutorial

LIVEARCHITECTURE!

Page 129: Cloud Native Architecture Patterns Tutorial

BrickTelemetry

Page 130: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ContextRealizingtheDevOpsWayofFeedbackrequiresthatwehavevisibilityintoboth

thebusinessvalueandtechnicalbehaviorgeneratedbyourservices.

Page 131: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ProblemCommonapproachestoservicevisibilityfallshortofthearchitecturalqualities

thatweneed.

Page 132: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ForcesVisibilityisoftenaccomplishedviapostfactoapplicationofagent-basedmonitoringtools.Agent-basedmonitoringtoolsdon'tunderstandbusinessvalue.Determininganapplication'shealthoftenrequirescomplexlogic.Traceabilityofanapplicationisdifficult(orimpossible)toaccomplishwithOTSsolutions.

Page 133: Cloud Native Architecture Patterns Tutorial

LIVEARCHITECTURE!

Page 134: Cloud Native Architecture Patterns Tutorial

MortarPatternsServiceDiscoveryEdgeGatewayFaultTolerance

Page 135: Cloud Native Architecture Patterns Tutorial

ServiceDiscovery

Page 136: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ContextDecompositionofarchitectureintoservicesleadstoincreasinglymore

distributedsystems.

Page 137: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ProblemAssystemsbecomedistributed,andasserviceinstancelifecyclesbecomemoredynamicandindependent,locationofandcommunicationwithdependencies

becomesmorechallenging.

Page 138: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ForcesCloudplatformsoftenassignauto-generated,internalhostnamesorprivateIP'stoserviceinstances.Asservicesarescaledandunhealthyinstancesarereplaced,theaddressesofaservice'sinstancesareconstantlychanging.Bindingaservicetoanythingotherthanlogicalnamesforitsdependenciesleadstofrictioninthearchitecturallifecycle.

Page 139: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ForcesApplyingConcurrentExecutionismademoredifficult(orimpossible)whenbindingservicestofixedaddressesfortheirdependencies.Wemaywanttoremoveaserviceinstancefromtheavailablepoolbutkeepitrunningtotroubleshootaproblem.

Page 140: Cloud Native Architecture Patterns Tutorial

LIVEARCHITECTURE!

Page 141: Cloud Native Architecture Patterns Tutorial

EdgeGateway

Page 142: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ContextDecomposedarchitecturesmustalwaysberecomposed.Thisrecompositionoftenhappenswithintheuserinterfacelayerof

anapplication.

Page 143: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ProblemRecomposinganarchitecturewithintheUserInterfacelayerpresentssignificantcomplexitiesthatcanleadtodecreasedagilityanddegradeduserexperience.

Page 144: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ForcesSystemsoftenmustsupportmultipleuserexperienceoptions(web/mobile/AVR).RecomposingarchitecturesastheUIlayercanrequireexposingthearchitecturetothepublicnetwork.APIneedsforamobiledeviceareoftenquitedifferentfromawebUI.

Page 145: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ForcesExposinganetworkgraphtomobiledevicescanincreaselatency,increasedatausage,anddegradebatterylife.UIplatformsmaynotsupporttheintegrationarchitectureusedforallservices.Nativeappsoftenhavelongerupgradecycles.Recomposingthearchitecturetherecanleadtofrictioninthearchitecturallifecycle.

Page 146: Cloud Native Architecture Patterns Tutorial

LIVEARCHITECTURE!

Page 147: Cloud Native Architecture Patterns Tutorial

FaultTolerance

Page 148: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ContextInordertoaccomplishitsassignedtasks,eachbrickwillneedtocommunicatewithotherbricks,andwithexternalsystems,

towhichwe'llcollectivelyreferasdependencies.

Page 149: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ProblemWhenabrick'sdependenciesbecomeunhealthy,unreachable,orslowerthannormaltorespond,thatbrick'sownperformanceisdegraded,andsuchdegredationcanpotentiallycascade

acrosstheentirearchitecture.

Page 150: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ForcesThenetworkisnotreliable.Latencyisnon-zeroandunpredictable.Serviceavailabilityisaproductofitsdependencies'availabilities.

Page 151: Cloud Native Architecture Patterns Tutorial

ContextandProblem

ForcesFailurescanbetransient.Failurescancascade.Anincorrectorstaleresponseisoftenpreferabletonoresponse.

Page 152: Cloud Native Architecture Patterns Tutorial

LIVEARCHITECTURE!

Page 153: Cloud Native Architecture Patterns Tutorial

SocraticQ&A

Page 154: Cloud Native Architecture Patterns Tutorial

CloudNativeArchitectureKatas

Setup

Page 155: Cloud Native Architecture Patterns Tutorial

WhatareArchitectureKatas?Takemetotherules!

Page 156: Cloud Native Architecture Patterns Tutorial

ToCloudNativeAddthefollowingtoyourrequirements:

Day1asacompanywe'reagreeingtoguideourselvesbyDevOpsprinciplesandpracticeContinuousDelivery.Wehavenoinfrastructure;we'lluseoneormorepubliccloudproviderstodeliveroursoftware.Thinkdeeplyaboutyourdecompositionstrategyandwhatadvantagesitwillbringyou.UsetheCNAPatternsyouknowsofarinordertoenableyourarchitecturestotheseends.

Page 157: Cloud Native Architecture Patterns Tutorial

KataChoiceshttp://bit.ly/cna-kata-choices