My journey through microservices so far… Phil Calçado h:p://philcalcado.com @pcalcado Zeroth IteraBon: ThoughtWorks What the client’s architect oGen wanted WebSphere Monolith.ear Tomcat TomcatTomcat TomcatTomcat TomcatTomcat Tomcat What we wanted to build .war .war .war .war .war .war .war .war What we oGen built .jar .jar .jar .jar .jar .jar .jar WebSphere .jar First IteraBon: SoundCloud Small 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 chain Amongst other changes New value chain h:p://philcalcado.com/2015/09/08/how_we_ended_up_with_microservices.html http://philcalcado.com/2015/09/08/how_we_ended_up_with_microservices.html Second IteraBon: DigitalOcean Small 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 Group Back-end Group Control Panel Microlith Internal Tools Microlith Back-end Microlith Amongst other changes In Conclusion Engineering is the bo:leneck Legal/Product is the bo:leneck Engineering is the bo:leneck Legal/Product is the bo:leneck Fin. …or is it? server client server client 🔥 🔥 🔥 🔥 wait ☺😰 🔥 🔥 wait ☺ 😰 🔥 ☺ ☺ ☺ ☺ ☺ ☺ ☺ ☺ server client client client client client client 🔥 wait ☺😰 🔥 🔥 wait ☺ 😰 🔥 ☺ ☺ ☺ ☺ ☺ ☺ ☺ ☺ 🔥 wait ☺ 😰 🔥 🔥 ☺ wait 😰 ☺ 🔥 🔥 wait 😰 ☺ 🔥 🔥 wait 😰 ☺ 🔥 🔥 … 🔥 🗑 "I know, let’s have all circuit breakers share state” "I know, let’s have all circuit breakers share state” Answer to the question “how did my application ended up importing a Zookeeper library again?" server client 🔥 🔥 🔥 server server serverserver 🔥 🔥 🔥 💩 🤔 Which instance should we talk to? ☺ DNS be like… * Circuit breakers Timeouts This is your code on microservices Biz Logic Timeouts Telemetry … Distributed state Client-side Service Discovery The 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 af Third IteraBon: Buoyant Circuit breakers Timeouts Biz Logic Timeouts Telemetry RPC code Distributed state Client-side Service Discovery SDK Historically, this complicaBon leaks into your service Sidecars to the rescue Circuit breakers Timeouts Biz Logic Timeouts Telemetry RPC code Distributed state Client-side Service Discovery SCARY OUTSIDE WORLD Sidecars to the rescue Circuit breakers Timeouts Biz Logic Timeouts Telemetry RPC code Distributed state Client-side Service Discovery SCARY OUTSIDE WORLDSidecar Sidecars form their own network ApplicaBon Transport Internet Network Circuit breakers Telemetry RPC code Distributed state Client-side Service Discovery } TCP/IP } ? One way to think about it Two examples of Service Mesh • All-in-one • ProducBon ready • Next-generaBon • For Kubernetes It’s not that these pa:erns aren’t used anymore, it’s 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 protocols It makes it even harder to fully replicate producBon earlier in the development cycle Coupled to the pladorm Not everything will be part of the mesh, i.e. the network sBll isn’t homogeneous Leaky abstracBon Q&A

My journey through microservices so far…

  • Published on
    18-Mar-2018

  • View
    170

  • Download
    1

DESCRIPTION

My journey through microservices so far… Phil Calçado h:p://philcalcado.com @pcalcado Zeroth IteraBon: ThoughtWorks What the client’s architect oGen wanted WebSphere…