My journey through microservices so far

  • Published on
    18-Mar-2018

  • View
    179

  • Download
    6

Transcript

My journey through microservices so farPhil Calado h:p://philcalcado.com @pcalcado Zeroth IteraBon: ThoughtWorksWhat the clients architect oGen wantedWebSphereMonolith.earTomcatTomcatTomcatTomcatTomcatTomcatTomcatTomcatWhat we wanted to build.war .war .war .war.war .war .war .warWhat we oGen built.jar .jar .jar .jar.jar .jar .jarWebSphere.jarFirst IteraBon: SoundCloudSmall European company fighBng the giants of the music industry."We used to deliver features at light-speed, growing the team has slowed us down!"Old value chainAmongst other changesNew value chainh:p://philcalcado.com/2015/09/08/how_we_ended_up_with_microservices.htmlhttp://philcalcado.com/2015/09/08/how_we_ended_up_with_microservices.htmlSecond IteraBon: DigitalOceanSmall New York startup fighBng the giants of cloud compuBng."We know exactly what we need to deliver. All we need is to hire more people."No new product in years.! "#Control Panel Group Internal Tools GroupBack-end GroupControl Panel Microlith Internal Tools MicrolithBack-end MicrolithAmongst other changesIn ConclusionEngineering is the bo:leneckLegal/Product is the bo:leneckEngineering is the bo:leneckLegal/Product is the bo:leneckFin.or is it?serverclientserverclient wait wait serverclient client client client client client wait wait wait wait wait wait "I know, lets have all circuit breakers share state"I know, lets have all circuit breakers share stateAnswer to the question how did my application ended up importing a Zookeeper library again?"serverclient server server serverserver Which instance should we talk to? DNS be like*Circuit breakersTimeoutsThis is your code on microservicesBiz LogicTimeoutsTelemetryDistributed stateClient-side Service DiscoveryThe dirty li:le secret no microservices evangelist tell you:Google/SoundCloud/Twi:er/Nedlix/Facebook/etc. have more engineers working on their internal tooling than the total number of employees at your workplace.i.e. microservices are complicated afThird IteraBon: BuoyantCircuit breakersTimeoutsBiz LogicTimeoutsTelemetryRPC codeDistributed stateClient-side Service DiscoverySDKHistorically, this complicaBon leaks into your serviceSidecars to the rescueCircuit breakersTimeoutsBiz LogicTimeoutsTelemetryRPC codeDistributed stateClient-side Service DiscoverySCARY OUTSIDE WORLDSidecars to the rescueCircuit breakersTimeoutsBiz LogicTimeoutsTelemetryRPC codeDistributed stateClient-side Service DiscoverySCARY OUTSIDE WORLDSidecarSidecars form their own networkApplicaBonTransportInternetNetworkCircuit breakersTelemetryRPC codeDistributed stateClient-side Service Discovery} TCP/IP} ?One way to think about itTwo examples of Service Mesh All-in-one ProducBon ready Next-generaBon For KubernetesIts not that these pa:erns arent used anymore, its just that the dumb work moved down the stack.New, optmised, protocols are quite opaque (e.g. gRPC and friends)Works be:er with metadata-rich protocolsIt makes it even harder to fully replicate producBon earlier in the development cycleCoupled to the pladormNot everything will be part of the mesh, i.e. the network sBll isnt homogeneousLeaky abstracBonQ&A