Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application...

41
Developers and Architects Strategies 2017 Oliver Sturm • @olivers • [email protected]

Transcript of Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application...

Page 1: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

DevelopersandArchitectsStrategies2017

OliverSturm•@olivers•[email protected]

Page 2: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

OliverSturmTrainingDirectoratDevExpress

Consultant,trainer,author,softwarearchitectanddeveloperforover25years

MicrosoftC#MVP

Contact:[email protected]

Page 3: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

AgendaIdea:Talkabouttechnology

ApplicationbuildingblocksServicesMicroservicesDatapersistenceUserInterfacesProgrammingLanguagesMobileCloudOpenSource

Page 4: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

ApplicationBuildingBlocksWhatisan“application”madeof?Terminologycheck:

ClientapplicationServerapplicationWebapplicationApplicationsystemEnterpriseapplication

Page 5: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

BuildingBlocksFunktionaleModule(horizontalundvertikal)ArchitekturelleSchichtenArchitekturelleVerteilung

Page 6: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Terminology:ClientApplication

Page 7: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Terminology:ServerApplication

Page 8: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Terminology:WebApplication

Page 9: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Terminology:ApplicationSystem

Page 10: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Terminology:EnterpriseApplication

Page 11: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

ServicesPartofmostarchitecturalconceptsSOA?WebServices“Real-timeweb?”SignalR?socket.io?

Page 12: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Services–SOARememberthefourtenetsDonBoxgotexcitedabout?

BoundariesareexplicitServicesareautonomousServicesshareschemaandcontract,notclassServicecompatibilityisdeterminedbasedonpolicy

SOAresultedinaveryformalunderstandingofservicearchitecture,whichisfortunatelynotsharedbytoomanyarchitectstoday.

Page 13: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

WebServicesASMX–WSE–WCF–WSDL–SOAP–Microsoft’sworldofenormouscomplexityintendedtosolveaverysimpleproblemRESTfulservices:themostcomplicatedpartisthename

URLsandHTTPmethodsJSON,XMLandpossiblyotherdataformats,usingcontentnegotiation

Page 14: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Services–Real-timeWebWebSocketsandtheirvariousancestors

Libraries:SignalR,socket.io

Bi-directionalcommunication

Reasoningforreal-timewebtechniques:

Amnuetzlichsten,wennderServertatsaechlichvonsichausUpdatesschickenkann,mitzufaelligerFrequenz,aberausreichenderHaeufigkeitCode-Strukturbedenken,tendenziellkomplexeStateMachine

Page 15: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

MicroservicesHowbigisamicroservice?Itdepends.

Doone“thing”well.What’sa"thing"?Itdepends.Two-pizzateamThrowawayableFocusonboundariesandbusinesscontext,notonlinesofcode

Page 16: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Microservices–CommunicationDirectcommunicationbetweenservices

AddressierungderDiensteentwederstatischkodiert(??!?),oderNachschlagesystem,oderDepedencyInjection

MessageQueuesServiceBus(ESB)

Page 17: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Microservices–CompositionFunctionlevel:AWSLambda,AzureFunctions–“Serverless”Computing

Integrationwithcloudinfrastructurefortriggeringandoutputgeneration

Dockercontainersdocker-composeCloudcontainerservices(ecs-cli,AzureDockerVMextension)

Alsosupportcomposition

Page 18: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Microservices–ReasoningSaubereArchitektur,einfachesTesten,strikteModularisierungGranulareSkalierbarkeitUnabhaengigkeitvonDiensten,UpdateseinzelnerDiensteimlaufendenBetriebOverhead

ProgrammierarbeitAusfuehrungsgeschwindigkeit

Page 19: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

DataPersistenceRelationaldatabasesNoSQLoptions

Key/valueandcolumnfamilystoresDocumentDataanalytics(e.g.MapReduce)

Page 20: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

DataPersistence–NoSQL

Page 21: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Theonlyimageinthispresentation,usedwithpermissionfromNathanHurst,[email protected]://blog.nahurst.com/visual-guide-to-nosql-systems

Page 22: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

ReasoningNoSQLvsRDBMS:

Page 23: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

DataPersistence–ORMChoiceofframeworksTopDownorBottomUp?DBIndependence

Reasoning:

ArbeitenmitDatenbankenohneSQL-KenntnisseMehrereDatenbankenvomselbenCodeansprechenCachingundanderezusaetzlicheFunktionalitaetContra:ArbeitimmeraufObjektebene,Server-Updatesoftschwierig

Page 24: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

DataPersistence–CQRSCommand/QueryResponsibilitySegregation

SeparatequeryandcommandmodelsConflictswithORM?EventSourcing

Eventualconsistency

Page 25: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

ReasoningCQRSandEventSourcing:

Page 26: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

UserInterfacesPlatforms

Native:WinForms,XAMLHTML

Electron

ReasoningfornativeUIplatforms:

Page 27: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

UIApplicationPatternsMVVMFlux

Page 28: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

HTMLUI–WheretoRenderTraditionalweb-serverbasedrendering?

Reasoning:

Page 29: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

ProgrammingLanguages.NET:C#,VB.NET,F#,others?JavaScript:Native,TypeScript,CoffeeScript,LiveScript,others?

Page 30: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

MobileMobilesupportasaconceptualmoduleStrategicplatform?

Page 31: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

“Native”MobileiOSSDKAndroidSDKWindowsPhone?

Reasoning:

Page 32: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Mobile.NETXamarin

NativeForms

Reasoning:

Page 33: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Mobile–HTML/HybridHTML(5),JavaScript,CSSPhoneGap/Cordova,CrossWalk,nw.js,…Cross-platform

Reasoning:

Page 34: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

CloudDeploymentoption

Related:Docker?

Managedinfrastructure

Page 35: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

CloudfunctionalitySuppliedservices,verticalfeaturesBaseplatformfunctionality

DynamicscalabilitySLA

Serverlesscomputing

Page 36: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

Cloud–LegalConsiderationsLocationsIndustry/governmentalrequirements

Page 37: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

CloudOptionsAzure,AmazonWebServices(PaaS,IaaS)PaaS:Google(alsosomeIaaSnow),Heroku,othersSaaS:Office365,Azure/AWSWebsites,…

Page 38: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

CloudReasoningFor/againstcloud:

For/againstspecificplatforms,IaaS,PaaS:

Page 39: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

OpenSourceEverybodydoesit,right?Giveandtake…

Reasoning:

Page 40: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

SourcesThispresentation:

https://oliversturm.github.io/developers-and-architects/basta-spring-2017Deprettifiedcontentinpdfformat:https://oliversturm.github.io/developers-and-architects/basta-spring-2017/slidecontent.pdf

Page 41: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming

ThankYouPleasefeelfreetocontactmeaboutthecontentanytime.

[email protected]