Presented in Agile Singapore 2016 conference
MicroServiceChallengesFred George[email protected]@fgeorge52Copyright © 2015 by Fred George. All rights reserved. 1
View Slide
Fred GeorgeCopyright © 2015 by Fred George. All rights reserved. 2• Technologist• Computer networks – 70’s• Token Ring LAN – 80’s• GUI’s – late 80’s• OO – late 80’s• Agile – late 90’s• MicroServices – mid-2000’s• Programmer• Since 1968 (Basic)• 65,000 hours experience• 70+ languages• Computer Science Degree 1973• Manager• 17 years IBM• Business degree,MIT Sloan School 1986• Product Owner, IBM• VP, ThoughtWorks• Co-founder, Outpace (SiliconValley)• Senior Advisor to 3 tech companies
Fred GeorgeCopyright © 2015 by Fred George. All rights reserved. 3Consulting Roles• Change Agent• Disruptor• “Hand grenade I am throwinginto development”• CTO describing Fred to his VicePresident
Industry Trends…Copyright © 2015 by Fred George. All rights reserved. 4MicroServicesCloudDockerDev/Ops Full-stackdeveloperAgileLean startupCassandraEvent busMVP (minimumviable productProgrammeranarchyNo-SQLOne Hacker Way
How Fast Can You Go?Copyright © 2015 by Fred George. All rights reserved. 5Deployment to Production Every 3.5 minutes
Why: New Problem Domains:The Cynefin FrameworkCopyright © 2015 by Fred George. All rights reserved. 6SimpleComplicatedComplexChaoticCause a EffectCause aaa EffectEffect? Cause?Cause ? EffectDisorder
Why: Competition is comingCopyright © 2015 by Fred George. All rights reserved. 7• Enablement through technologies• Cloud computing• Ubiquitous, high bandwidth• Languages (and supporting frameworks)• Recognition of business opportunities• Silicon Valley innovators as role models• Accelerating business needs• Few inhibitors for global competitors• Reduction of entry barriers for niche competitors
Hardware Lead TimesCopyright © 2015 by Fred George. All rights reserved. 86 mo.1990 1995 200530 min.1 week1 day20151 mo.2000 20105 min.5 sec.Order lead times (log)Data CenterVirtualMachinesDockerCommercialCloudCapacity planning?Dedicated ops team?
Copyright © 2015 by Fred George. All rights reserved. 91011000100100,0001 10 100 1000 10,000Size (loc)Number of ServicesMicroServicesRails / Java ZoneSOAWorkshopForwardNetflixServices Impact
Summary Principles ofMicroServicesCopyright © 2015 by Fred George. All rights reserved. 10• Very, very small• Team size of one to develop/maintain• Loosely coupled (including flow)• Multiple versions acceptable (encouraged?)• Self-monitoring of each service• Publish interesting “stuff” (w/o explicit requirements)• “Application” seems to be a poor conceptualization
Common Theme of AllChallenges:Inexperience!Copyright © 2015 by Fred George. All rights reserved. 11
Synchronous orAsynchronousChallenge 1Copyright © 2015 by Fred George. All rights reserved. 12
Chad Fowler vs. Fred George•Chad: Use Synchronous as default• Algorithms typically described serially• Programmer understanding / productivity•Fred: Use Asynchronous as default• Robustness should be primary goal• Supports better de-coupling• Teach the programmers!Copyright © 2015 by Fred George. All rights reserved. 13
Rapids, Rivers, and PondsCopyright © 2015 by Fred George. All rights reserved. 14
0MQ0MQ 0MQ0MQ 0MQ 0MQHigh-Performance Event BusCopyright © 2015 by Fred George. All rights reserved.15KafkaService
Asynchronous ServicesCopyright © 2015 by Fred George. All rights reserved. 16BusServiceServiceServiceNeedNeedNeedSol’n’sSol’n•Variants easy•Graceful degradationChooseSol’n
Asynchronous Services ExampleCopyright © 2015 by Fred George. All rights reserved. 17BusRentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com Login? ??
Copyright © 2015 by Fred George. All rights reserved. 18RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com Login? ??Web pageserved
Copyright © 2015 by Fred George. All rights reserved. 19RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com Login? ??
Copyright © 2015 by Fred George. All rights reserved. 20RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com Login? ??AABB
B ACopyright © 2015 by Fred George. All rights reserved. 21RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com Login? ??AB
ABCopyright © 2015 by Fred George. All rights reserved. 22RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com Login? ??AB ABA B
BCopyright © 2015 by Fred George. All rights reserved. 23RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com LoginSallyAA BSally logs inas Member
BCopyright © 2015 by Fred George. All rights reserved. 24RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com LoginSallyAA BSally logs inas Member
BCopyright © 2015 by Fred George. All rights reserved. 25RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com LoginSallyAA BCDCD
BCopyright © 2015 by Fred George. All rights reserved. 26RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com LoginSallyAA BCD CDCD
BCopyright © 2015 by Fred George. All rights reserved. 27RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com LoginSallyAA BCDCD
BCopyright © 2015 by Fred George. All rights reserved. 28RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com LoginSallyAA BCDCD
BCopyright © 2015 by Fred George. All rights reserved. 29RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com LoginSallyAA BCDCDFE
ChannelInterfacesService TaxonomyChannelInterfacesCopyright © 2015 by Fred George. All rights reserved. 30Need ProcessingEnrichment ServicesSolution ServicesClient BiasesSolution BlockersSolutionSelectionLogging /Monitoring /KPI’s
Deconstructing theDatabasesChallenge 2Copyright © 2015 by Fred George. All rights reserved. 31
•Fortune 100 view:• Entity-oriented; consistency essential• As few as possible•MicroService view:• DB per MicroService (if persistence needed)• Poly-glot (various NoSQL, SQL) + event buses• Few (10%) writable; even fewer transactionalHow Many Databases?Copyright © 2015 by Fred George. All rights reserved. 32
Copyright © 2015 by Fred George. All rights reserved. 33RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com LoginSallyA B RentaloffersEventpublishingSolutioncollecting300msresponderRedis
Copyright © 2015 by Fred George. All rights reserved. 34RentaloffersCarrentLegacyserverBrandoffersLocationoffersSegmentationMembershipCarRent.com LoginSallyA BMembershipenrichmentETL Key-value
Entity MicroService TrapChallenge 3Copyright © 2015 by Fred George. All rights reserved. 35
Fred Brooks’ Design ApproachCopyright © 2016 by Fred George. All rights reserved. 36Get the datastructurescorrect, andthe code willwrite itself
70’s Design ApproachCopyright © 2016 by Fred George. All rights reserved. 37~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ZzzzzzzzZzzzZzzzzzZzzzzzzzzZzzzzzzzZzzzZzzzzzZzzzzzzzzZzzzzzzzZzzzZzzzzzZzzzzzzzzZzzzzzzzZzzzZzzzzzZzzzzzzzzZzzzzzzzZzzzZzzzzzZzzzzzzzz
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~90’s Design ApproachCopyright © 2016 by Fred George. All rights reserved. 38ZzzzzzzzZzzzZzzzzzZzzzzzzzzZzzzzzzzZzzzZzzzzzZzzzzzzzzZzzzzzzzZzzzZzzzzzZzzzzzzzzZzzzzzzzZzzzZzzzzzZzzzzzzzzZzzzzzzzZzzzZzzzzzZzzzzzzzz~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Operational Reporting
Design ApproachCopyright © 2016 by Fred George. All rights reserved. 39… but you can’tchange the datastructurewithout makingall the code“suspect”Corollary~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ZzzzzzzzZzzzZzzzzzZzzzzzzzzZzzzzzzzZzzzZzzzzzZzzzzzzzzZzzzzzzzZzzzZzzzzzZzzzzzzzzZzzzzzzzZzzzZzzzzzZzzzzzzzzZzzzzzzzZzzzZzzzzzZzzzzzzzz~~~~~~~~~~~~~~~~~~~~~~~~
MicroServices or ClojureChallenge 4Copyright © 2015 by Fred George. All rights reserved. 40
•Conceptualization (Job)• Every service has one job• If two jobs, make two services•Communication• Minimize messages (whether RESTful or Events)•Encapsulate• Service has its own persistence• If sharing persistence, just one logical serviceMicroServices Like OOCopyright © 2015 by Fred George. All rights reserved. 41
Clojure Loves Shared DataCopyright © 2015 by Fred George. All rights reserved. 42X fo rmX fo rmX fo rmX fo rm? ? ?
3 Companies – 3 VariantsCopyright © 2015 by Fred George. All rights reserved. 43
3 Companies – 3 VariantsCopyright © 2015 by Fred George. All rights reserved. 44300+Ruby, Node.js,Clojure, R, …DB w cron,RESTful, Kafkabus
3 Companies – 3 VariantsCopyright © 2015 by Fred George. All rights reserved. 45300+ 3 + dozensRuby, Node.js,Clojure, R, …Clojure,Node.jsDB w cron,RESTful, KafkabusRabbitMQ
3 Companies – 3 VariantsCopyright © 2015 by Fred George. All rights reserved. 46300+ 3 + dozens 25Ruby, Node.js,Clojure, R, …Clojure,Node.js ClojureDB w cron,RESTful, KafkabusRabbitMQOrchestration,RabbitMQ
A New Hope…Copyright © 2015 by Fred George. All rights reserved. 47
Choosing Architectures andFrameworksChallenge 5Copyright © 2015 by Fred George. All rights reserved. 48
Open Source FrameworksCopyright © 2015 by Fred George. All rights reserved. 49
Node.js Very ActiveCopyright © 2015 by Fred George. All rights reserved. 50
No Design Patterns BookYetChallenge 6Copyright © 2015 by Fred George. All rights reserved. 51
Conferences / Meetups Starting…Copyright © 2015 by Fred George. All rights reserved. 52
Just Doing MicroServicesFailsChallenge 7Copyright © 2015 by Fred George. All rights reserved. 53
Copyright © 2015 by Fred George. All rights reserved. 54MicroServicesCloudDockerDev/Ops Full-stackdeveloperAgileLean startupCassandraEvent bus MVP (minimumviable productProgrammeranarchyNo-SQL
What is a MicroService?Challenge 8-nCopyright © 2015 by Fred George. All rights reserved. 55
•Synchronicity degree• Primary API access to services•Ratio of number of services and average size• Zones for clarity•DB / service ratio• Expose potential DB hindrances to rapid deploymentTaxonomy May be Useful (beforeit’s too late)Copyright © 2015 by Fred George. All rights reserved. 56
Count / Size RatioCopyright © 2015 by Fred George. All rights reserved. 571011000100100,0001 10 100 1000 10,000Size (loc)Number of ServicesMicroServicesRails / Java ZoneSOAAnimationForwardNetflix
More Information…•Google:• MicroService Architecture for videos• MicroXchg 2015 conference•Complementary topic:• Google for Programmer AnarchyCopyright © 2015 by Fred George. All rights reserved. 58
MicroServiceChallengesFred George[email protected]@fgeorge52Copyright © 2015 by Fred George. All rights reserved. 59