Building a microservice ecosystem
-
Upload
haufe-lexware-gmbh-co-kg -
Category
Software
-
view
123 -
download
12
Transcript of Building a microservice ecosystem
![Page 1: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/1.jpg)
Building a microservice ecosystem
Daniel Bryant@danielbryantuk
OpencRedo
![Page 2: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/2.jpg)
Today• What is a ‘microservice ecosystem’?
• Local dev of services becomes challenging
• Think about your build pipeline(s)
• Testing requires a paradigm shift
• Push to production as early as possible
24/11/2016 @danielbryantuk
![Page 3: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/3.jpg)
@danielbryantuk• Chief Scientist at OpenCredo, CTO at SpectoLabs
ü Transforming organisations through technology and teams
ü Agile, Lean, Architecture, CI/CD, DevOps
ü Microservices, cloud, Containers, Java, Go, Docker, Kubernetes
• London Java Community Associate
• Adopt OpenJDK and JSR
• InfoQ Editor, DZone MVB, VOXXED, O'Reilly
24/11/2016 @danielbryantuk
![Page 4: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/4.jpg)
My Biggest Claim to Fame in Microservices?
24/11/2016 @danielbryantuk
![Page 5: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/5.jpg)
Seriously Though...…
24/11/2016 @danielbryantuk
skillsmatter.com/skillscasts/7004-our-journey-to-world-gifting-domination-how-notonthehighstreet-com-embraced-docker
![Page 6: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/6.jpg)
So, What is a microservice?
“Loosely coupled service oriented architecture with bounded contexts”
Adrian Cockcroft
“Applications that fit in your head”James Lewis
24/11/2016 @danielbryantuk
![Page 7: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/7.jpg)
Why? The move towards Cloud-native
• Hypothesis-driven business (and development)
• Microservice architecture (and 'Micro' teams)
• Devops mindset/culture (shared, learning/feedback & Mechanical sympathy)
• Continuous delivery
• Automated, self-service platform
Hat tip @caseywest
24/11/2016 @danielbryantuk
![Page 8: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/8.jpg)
Exploring the Ecosystem
24/11/2016 @danielbryantuk
![Page 9: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/9.jpg)
Adrian Cockcroft’s Thoughts
24/11/2016 @danielbryantuk
www.slideshare.net/adriancockcroft/microxchg-microservices
![Page 10: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/10.jpg)
Alexis Richardson’s Thoughts
24/11/2016 @danielbryantuk
gotocon.com/goto-london-2015/#!#schedulePopupExtras-7011
![Page 11: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/11.jpg)
wikibon.com/wp-content/uploads/container_implementations.png
Technology Choices
24/11/2016 @danielbryantuk
![Page 12: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/12.jpg)
24/11/2016
![Page 13: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/13.jpg)
What do I mean by ‘ecosystem’?• Build– Local development, pipelines and integration
• Test– From local integration to End-to-end
• Deploy
• Operate
• Observe– Monitoring/logging/alerting
24/11/2016 @danielbryantuk
![Page 14: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/14.jpg)
Don’t forget about (RE)ArchitecturE Complexity
24/11/2016 @danielbryantuk
![Page 15: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/15.jpg)
24/11/2016 @danielbryantuk
www.infoq.com/news/2015/04/raffi-krikorian-rearchitecting
![Page 16: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/16.jpg)
What do I mean by ‘ecosystem’?• Build– Local development, pipelines and integration
• Test– From local integration to End-to-end
• Deploy
• Operate
• Observe– Monitoring/logging/alerting
24/11/2016 @danielbryantuk
![Page 17: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/17.jpg)
Build
24/11/2016 @danielbryantuk
![Page 18: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/18.jpg)
Developing Locally: The Basics
• GitHub’s Boxen (Puppet)
• Pivotal’s Sprout (Chef)
• Mac-dev-playbook (Ansible)
• Hashicorp Vagrant
• Docker Compose (Docker machine/native)
24/11/2016 @danielbryantuk
![Page 19: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/19.jpg)
Developing Locally
• The naive approach
– Replication of env per service
– …and dependencies and data stores and...
– Soon gets crazy
• Local profiles + mocking/stubbing
– Spring profiles + Mockito etc
24/11/2016 @danielbryantuk
![Page 20: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/20.jpg)
Developing Locally
• Service virtualisation– Hoverfly, Mountebank, Wiremock (Saboteur)
• ‘Production-in-a-box’ (IFTTT)– Docker Compose, Vagrant, cf_nise_installer
• Environment leasing– Create your own env (e.g. Hailo)
24/11/2016 @danielbryantuk
![Page 21: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/21.jpg)
Developing Locally
www.opencredo.com/2015/09/20/working-locally-with-microservices/24/11/2016 @danielbryantuk
![Page 22: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/22.jpg)
Create a Pipeline
24/11/2016 @danielbryantuk
![Page 23: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/23.jpg)
Key lesson learned (the Hard Way)
• Push through to production as early as possible!
• Detect and fix issues
– Technology
– Process
– People
24/11/2016 @danielbryantuk
![Page 24: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/24.jpg)
Test
24/11/2016 @danielbryantuk
![Page 25: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/25.jpg)
Always Remember...
24/11/2016 @danielbryantukblog.bbv.ch/2012/06/13/acceptance-test-driven-development/
![Page 26: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/26.jpg)
Microservice Testing Basics
• Toby Clemson’s article
martinfowler.com/articles/microservice-testing
24/11/2016 @danielbryantuk
![Page 27: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/27.jpg)
Microservice Testing Basics
• My article
https://www.specto.io/blog/recipe-for-designing-building-
testing-microservices.html
24/11/2016 @danielbryantuk
![Page 28: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/28.jpg)
(multiple) Pipelines• Big-bang release
– Beware of rubber stamping (distributed monolith)
– ‘semver’ if you must (semver.org) e.g. 1.2.1
• Gated release– Critical path testing in Stage
• Single service Continuous delivery
– Consumer-based contracts
– Backwards compatibility
24/11/2016 @danielbryantuk
![Page 29: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/29.jpg)
Service-level Integration Testing
• Contracts
– Pact-JVM github.com/DiUS/pact-jvm
– PACT broker
github.com/bethesque/pact_broker
– Examples:
github.com/mstine/microservices-pact
24/11/2016 @danielbryantuk
![Page 30: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/30.jpg)
My Opinions• BDD critical paths throughout application
– Including API journey
• Contract tests (failure is a conversation)
• BDD services API (e.g. Serenity BDD)
• Component test and unit test (as normal)– Maven surefire/failsafe
24/11/2016 @danielbryantuk
![Page 31: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/31.jpg)
Final Words on Testing• Don’t forget the ‘ilities”
• Security / reliability– ZAP (from the OWASP team)
– github.com/continuumsecurity/bdd-security
• Performance / scalability
– Jmeter (Jenkins Performance plugin)
– Gatling
– flood.io
24/11/2016 @danielbryantuk
![Page 32: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/32.jpg)
Deploy
24/11/2016 @danielbryantuk
![Page 33: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/33.jpg)
Separate Deploy and Release
• Feature flags– Difficult at scale (and distribution)
– Enable at ingress
• Incremental (phased) rollout
• Canary vs blue/green
• Avoid datastore migrations (if possible)
24/11/2016 @danielbryantuk
![Page 34: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/34.jpg)
Centralise Configuration
• Consul & consul-template
• Etcd/ZK & confd
• Netflix Archaius
• Spring Cloud config
• Watch for application rollback!
24/11/2016 @danielbryantuk
![Page 35: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/35.jpg)
Operate
24/11/2016 @danielbryantuk
![Page 36: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/36.jpg)
Building Blocks
• HashiCorp Terraform
– VMWare? cloud-init and vcloud-tools
– “Boot my secure government cloud”
• “CAPS”– Chef, Ansible, Puppet, SaltStack
– Automated sysadmin
• Docker / Ami / RPM / JAR
– Machine vs Os/lang artifact
• Standardise on an OS
– Amazon Linux vs mainstream distros
24/11/2016 @danielbryantuk
![Page 37: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/37.jpg)
DevOps and Programmable Infrastructure
• Devops involves programming…
• Introduce SOLID principles
• Good CI/CD principles
– Gitflow etc
– Testing
24/11/2016 @danielbryantuk
![Page 38: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/38.jpg)
Service Discovery
• External
– HAProxy / nginx / ELB etc
• Client-side
– Netflix Ribbon (with Prana)
– ‘Baker Street’ (extending SmartStack)
– srv-router
• Kubernetes and CF are good to go
24/11/2016 @danielbryantuk
![Page 39: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/39.jpg)
External
24/11/2016 @danielbryantuk
![Page 40: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/40.jpg)
Client-side
24/11/2016 @danielbryantuk
![Page 41: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/41.jpg)
Observe
24/11/2016 @danielbryantuk
![Page 42: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/42.jpg)
When bad things happen, people are always involved
24/11/2016 @danielbryantuk|@oakinger
![Page 43: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/43.jpg)
Monitoring and People
24/11/2016 @danielbryantukwww.infoq.com/news/2015/06/too-big-to-fail
![Page 44: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/44.jpg)
Start with the Basics
• Health checks– Coda Hale (DropWizard) Metrics
– Spring Boot actuator
• KPIs for apps (and business)– Assertions / invariants
– Throughput
– Queue length
24/11/2016 @danielbryantuk
![Page 45: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/45.jpg)
Logging
• What every engineer should know
• 10 Tips for Proper Application Logging
• ElasticSearch-Logstash-Kibana (ELK)
– Buffer/proxy log sending or…
– Mount directory into container
24/11/2016 @danielbryantuk
![Page 46: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/46.jpg)
Monitoring• Push
– Spring Boot actuator e.g. InfluxDbExporter
• Pull – E.g. Telegraf (shout to Tareq Abedrabbo)
• InfluxDB vs prometheus vs graphite vsopentsdb
• Information radiators– Aggregate vs individual
24/11/2016 @danielbryantuk
![Page 47: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/47.jpg)
Aggregation: Sick Cattle, Not Sick Pets
![Page 48: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/48.jpg)
Opentracing & OpenZipkin
24/11/2016 @danielbryantuk
![Page 49: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/49.jpg)
Problems?
• Rob Ewaschuk’s “Philosophy on Alerting”
• Brendan Gregg’s USE method
– “check utilization, saturation, and errors.”
• “DevOps Troubleshooting”– Kyle Rankin
24/11/2016 @danielbryantuk
![Page 50: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/50.jpg)
Let’s wrap this up...
24/11/2016 @danielbryantuk
![Page 51: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/51.jpg)
Summary• development of 3+ services is challenging
• Think about your build pipeline(s)
• Testing requires a paradigm shift
• Operations requires much more automation
• Push through to prod as early as possible
24/11/2016 @danielbryantuk
![Page 52: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/52.jpg)
Bedtime reading
24/11/2016 @danielbryantuk
![Page 53: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/53.jpg)
THANKS...
@danielbryantuk
http://muservicesweekly.com/
(Credit to Tareq Abedrabbo for inspiration/guidance)
24/11/2016 @danielbryantuk
![Page 54: Building a microservice ecosystem](https://reader031.fdocuments.in/reader031/viewer/2022020314/5870a3af1a28abcb078b5471/html5/thumbnails/54.jpg)
Logging vs monitoring
• Logging
– Primarily used post-incident
– Machine readable
– Hard to do right
– Noise/signal
• Monitoring
– Useful in Real time during incident
– Trend analysis
– Easier to do
24/11/2016 @danielbryantuk