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

Post on 25-May-2020

4 views 0 download

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

DevelopersandArchitectsStrategies2017

OliverSturm•@olivers•oliver@oliversturm.com

OliverSturmTrainingDirectoratDevExpress

Consultant,trainer,author,softwarearchitectanddeveloperforover25years

MicrosoftC#MVP

Contact:oliver@oliversturm.com

AgendaIdea:Talkabouttechnology

ApplicationbuildingblocksServicesMicroservicesDatapersistenceUserInterfacesProgrammingLanguagesMobileCloudOpenSource

ApplicationBuildingBlocksWhatisan“application”madeof?Terminologycheck:

ClientapplicationServerapplicationWebapplicationApplicationsystemEnterpriseapplication

BuildingBlocksFunktionaleModule(horizontalundvertikal)ArchitekturelleSchichtenArchitekturelleVerteilung

Terminology:ClientApplication

Terminology:ServerApplication

Terminology:WebApplication

Terminology:ApplicationSystem

Terminology:EnterpriseApplication

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

Services–SOARememberthefourtenetsDonBoxgotexcitedabout?

BoundariesareexplicitServicesareautonomousServicesshareschemaandcontract,notclassServicecompatibilityisdeterminedbasedonpolicy

SOAresultedinaveryformalunderstandingofservicearchitecture,whichisfortunatelynotsharedbytoomanyarchitectstoday.

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

URLsandHTTPmethodsJSON,XMLandpossiblyotherdataformats,usingcontentnegotiation

Services–Real-timeWebWebSocketsandtheirvariousancestors

Libraries:SignalR,socket.io

Bi-directionalcommunication

Reasoningforreal-timewebtechniques:

Amnuetzlichsten,wennderServertatsaechlichvonsichausUpdatesschickenkann,mitzufaelligerFrequenz,aberausreichenderHaeufigkeitCode-Strukturbedenken,tendenziellkomplexeStateMachine

MicroservicesHowbigisamicroservice?Itdepends.

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

Microservices–CommunicationDirectcommunicationbetweenservices

AddressierungderDiensteentwederstatischkodiert(??!?),oderNachschlagesystem,oderDepedencyInjection

MessageQueuesServiceBus(ESB)

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

Integrationwithcloudinfrastructurefortriggeringandoutputgeneration

Dockercontainersdocker-composeCloudcontainerservices(ecs-cli,AzureDockerVMextension)

Alsosupportcomposition

Microservices–ReasoningSaubereArchitektur,einfachesTesten,strikteModularisierungGranulareSkalierbarkeitUnabhaengigkeitvonDiensten,UpdateseinzelnerDiensteimlaufendenBetriebOverhead

ProgrammierarbeitAusfuehrungsgeschwindigkeit

DataPersistenceRelationaldatabasesNoSQLoptions

Key/valueandcolumnfamilystoresDocumentDataanalytics(e.g.MapReduce)

DataPersistence–NoSQL

Theonlyimageinthispresentation,usedwithpermissionfromNathanHurst,nathan@developersforgood.orghttp://blog.nahurst.com/visual-guide-to-nosql-systems

ReasoningNoSQLvsRDBMS:

DataPersistence–ORMChoiceofframeworksTopDownorBottomUp?DBIndependence

Reasoning:

ArbeitenmitDatenbankenohneSQL-KenntnisseMehrereDatenbankenvomselbenCodeansprechenCachingundanderezusaetzlicheFunktionalitaetContra:ArbeitimmeraufObjektebene,Server-Updatesoftschwierig

DataPersistence–CQRSCommand/QueryResponsibilitySegregation

SeparatequeryandcommandmodelsConflictswithORM?EventSourcing

Eventualconsistency

ReasoningCQRSandEventSourcing:

UserInterfacesPlatforms

Native:WinForms,XAMLHTML

Electron

ReasoningfornativeUIplatforms:

UIApplicationPatternsMVVMFlux

HTMLUI–WheretoRenderTraditionalweb-serverbasedrendering?

Reasoning:

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

MobileMobilesupportasaconceptualmoduleStrategicplatform?

“Native”MobileiOSSDKAndroidSDKWindowsPhone?

Reasoning:

Mobile.NETXamarin

NativeForms

Reasoning:

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

Reasoning:

CloudDeploymentoption

Related:Docker?

Managedinfrastructure

CloudfunctionalitySuppliedservices,verticalfeaturesBaseplatformfunctionality

DynamicscalabilitySLA

Serverlesscomputing

Cloud–LegalConsiderationsLocationsIndustry/governmentalrequirements

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

CloudReasoningFor/againstcloud:

For/againstspecificplatforms,IaaS,PaaS:

OpenSourceEverybodydoesit,right?Giveandtake…

Reasoning:

SourcesThispresentation:

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

ThankYouPleasefeelfreetocontactmeaboutthecontentanytime.

oliver@oliversturm.com