Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application...
Transcript of Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application...
![Page 2: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/2.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/4.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/5.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/6.jpg)
Terminology:ClientApplication
![Page 7: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/7.jpg)
Terminology:ServerApplication
![Page 8: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/8.jpg)
Terminology:WebApplication
![Page 9: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/9.jpg)
Terminology:ApplicationSystem
![Page 10: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/10.jpg)
Terminology:EnterpriseApplication
![Page 11: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/11.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/12.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/13.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/14.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/15.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/16.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/18.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/19.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/20.jpg)
DataPersistence–NoSQL
![Page 21: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/21.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/22.jpg)
ReasoningNoSQLvsRDBMS:
![Page 23: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/23.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/24.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/25.jpg)
ReasoningCQRSandEventSourcing:
![Page 26: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/26.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/27.jpg)
UIApplicationPatternsMVVMFlux
![Page 28: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/28.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/29.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/30.jpg)
MobileMobilesupportasaconceptualmoduleStrategicplatform?
![Page 31: Strategies 2017 Oliver Sturm • @olivers • oliver@oliversturm · 2020-02-19 · Application building blocks Services Microservices Data persistence User Interfaces Programming](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/31.jpg)
“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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/32.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/33.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/34.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/35.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/36.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/37.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/38.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/39.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042303/5ece59f9e789aa5bf223f89e/html5/thumbnails/40.jpg)
SourcesThispresentation:
https://oliversturm.github.io/developers-and-architects/basta-spring-2017Deprettifiedcontentinpdfformat:https://oliversturm.github.io/developers-and-architects/basta-spring-2017/slidecontent.pdf