SlideShare una empresa de Scribd logo
1 de 80
Building Java (micro)services for the Cloud 
The DHARMA principles 
Daniel Bryant 
Principal Consultant, Open Credo 
daniel.bryant@opencredo.com 
@danielbryantuk
Who Am I? 
• Principal Consultant at OpenCredo 
 Agile transformations 
 DevOps methodologies 
 Microservices and Cloud 
• London Java Community Associate 
• Adopt OpenJDK and JSR 
27/11/2014 @danielbryantuk
The Current Industry Wish List… 
• Service-Oriented Architecture 
• Cloud-based deployments 
• DevOps Culture 
27/11/2014 @danielbryantuk
The Current Industry Wish List… 
• Service-Oriented Architecture (microservices) 
– Today! 
• Cloud-based deployments 
– Today! 
• DevOps Culture 
– “Moving to DevOps” @ DevoxxUK bit.ly/1BylnZb 
27/11/2014 @danielbryantuk
The obligatory microservice definition… 
27/11/2014 @danielbryantuk
Microservices… 
• “SOA done right” 
• “SRP” services 
– “Java, The Unix Way” (bit.ly/1cX8VsS) 
• “Small” codebase services 
– 1000 LOC… 100… 10…? 
• My personal opinion… 
27/11/2014 @danielbryantuk
“Can I fit the service in my head?” 
27/11/2014 @danielbryantuk
Common Cloud Problems 
TL;DR… 
27/11/2014 @danielbryantuk
Not respecting the underlying environment 
27/11/2014 @danielbryantuk
Lack of application/platform monitoring… 
27/11/2014 @danielbryantuk
Bizarre failure modes… 
Three certainties in life: 
Taxes, death and failure in production… 
27/11/2014 @danielbryantuk
Difficulty in understanding 
the new architecture 
27/11/2014 @danielbryantuk
Confusion over environment provisioning and config 
27/11/2014 @danielbryantuk
Not testing in the Cloud… 
(hint: here be dragons!) 
27/11/2014 @danielbryantuk
We’ve created the “Cloud DHARMA Principles” 
to act as a checklist when building Cloud apps 
27/11/2014 @danielbryantuk
dharma 
/ˈdɑːmə,ˈdəːmə/ 
noun 
1. Signifies behaviors that are considered to be in 
accord with order that makes life and universe 
possible (Hinduism) 
2. "cosmic law and order”, but is also applied to 
the teachings of the Buddha (Buddhism) 
27/11/2014 @danielbryantuk
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
27/11/2014 @danielbryantuk
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
27/11/2014 @danielbryantuk
27/11/2014 @danielbryantuk
Documentation (just enough) 
• Provide a map for developers (and QA, Ops) 
• Component purpose and interface/contract 
• Initialisation instructions (mocks/stubs) 
• Highlight areas of operational risk 
27/11/2014 @danielbryantuk
leanpub.com/software-architecture-for-developers 
2277//1111//22010414 @@ddaanniieellbbrryyaanntutukk
Simon Brown’s C4 Model 
@simonbrown 
www.codingthearchitecture.com 
27/11/2014 @danielbryantuk
27/11/2014 @danielbryantuk
API Docs with Swagger 
27/11/2014 @danielbryantuk 
helloreverb.com/developers/swagger
API Docs with Swagger 
27/11/2014 @danielbryantuk 
helloreverb.com/developers/swagger
Create a PACT 
27/11/2014 @danielbryantuk 
github.com/DiUS/pact-jvm 
martinfowler.com/articles/consumerDrivenContracts.html
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
27/11/2014 @danielbryantuk
High Cohesion / Loose Coupling 
(all the way down…) 
“Fit for purpose architecture, 
throughout the system” 
1. Architect for encapsulation 
2. Architect for scalability 
3. Architect for comprehension 
27/11/2014 @danielbryantuk
Encapsulation: High Cohesion/Loose Coupling 
• Code 
• Modules 
– Components (bit.ly/1n7D0vp) 
– Services (bounded contexts) 
• Public APIs 
– PayPal (bit.ly/1hnZNly) 
• Deployment 
– 12factor.net 
27/11/2014 @danielbryantuk
Are Microservices a Silver Bullet? 
• Single Responsibility Principle 
– Enforce service boundaries 
– Bounded contexts (DDD) 
• Separation of Concerns 
– Encapsulate what varies 
– Easier to scale/tune independently 
• Is this a free-lunch? (bit.ly/1gSw4L7) 
27/11/2014 @danielbryantuk
No!! Keep searching… 
It’s all too easy to push complexity into 
orchestration and communication 
www.codingthearchitecture.com/2014/07/06/distributed_big_balls_of_mud.html 
27/11/2014 @danielbryantuk
Scalability: The Three Ways 
27/11/2014 @danielbryantuk
The Scaling Cube 
27/11/2014 @danielbryantuk
The Scaling Cube 
Splitting aka ‘Microservices’ 
Scaling requirements vary by ‘service’ 
Rate of code change varies by ‘service’ 
Uber-flexible distribution/scaling 
Modeling & implementation non-trivial! 
Cloning / Replication 
You’re overly successful 
(and in trouble!) 
Easy to implement 
Costly to run 
27/11/2014 @danielbryantuk 
Sharding 
Scaling requirements vary by data 
Current data store unit at capacity 
Can be non-invasive 
The decision of what to shard on?
Comprehension: Smashing the Monolith… 
• Business functionality -“Cart Service” 
– Noun, verb, SRP (slidesha.re/1owdJhh) 
• Technology chunk - “Email Service” 
• Vertical Slice - “Service per page” 
– Groupon (vimeo.com/105880150) 
• Horizontal Slice - “User Repo” 
– An anti-pattern? 
27/11/2014 @danielbryantuk
DZone’s Enterprise Integration Guide 
dzone.com/research/guide-to-enterprise-integration 
27/11/2014 @danielbryantuk
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
27/11/2014 @danielbryantuk
Automated from Commit to Cloud 
• Continuous Integration 
• Continuous Deployment 
• Continuous Delivery 
27/11/2014 @danielbryantuk
Build Pipeline 
• Component Build 
– Compile 
– Unit Tests e.g. Maven Surefire 
– Integration Tests (in-process) e.g. Maven Failsafe 
• Deployment onto QA Cloud 
– Probe health check endpoints 
– Serverspec serverspec.org 
27/11/2014 @danielbryantuk
Build Pipeline 
• Acceptance Tests 
– Cucumber (and Webdrivers) 
– Use a Cloud environment! 
• Performance Tests 
– Jmeter + Jenkins performance plugin 
– Make sure environment and data is realistic!! 
• Live Deployment? 
27/11/2014 @danielbryantuk
Microservice Pipeline 
If you can’t deploy a service individually, 
you’re probably aren’t creating ‘microservices’ 
Beware of the distributed monolith 
“If you can't build a monolith, what makes you think microservices are the answer?” 
@simonbrown bit.ly/1n7D0vp 
27/11/2014 @danielbryantuk
Infrastructure: Say No To Snowflakes! 
• Automate all provisioning (store in SCM) 
• Link infrastructure code to service 
– Take care with versioning service/infra code 
• Approaches… 
– Separate infra repo (tagged with service version) 
– Include in service repo (e.g. DockerFile) 
27/11/2014 @danielbryantuk
Infrastructure: Say No To Snowflakes! 
• Fry... 
– Chef, Puppet, SaltStack, Ansible 
– Bash, Python (Fabric) 
– Vendor APIs 
• …or bake? 
– Packer.io 
– Netflix Aminator 
27/11/2014 @danielbryantuk
Infrastructure: Say No To Snowflakes! 
• Doing “Proper Development” 
– Gareth Rushgrove at Craft Conf (bit.ly/1njuc49) 
– Chef Conf (www.youtube.com/user/getchef) 
• Local tooling/testing 
– Vagrant (www.vagrantup.com) 
– Docker (www.docker.io) 
– Fig (www.fig.sh) 
27/11/2014 @danielbryantuk
Configuring Apps in the Cloud 
• Bundle config with app artifact 
– Re-deploy entire app on change (easier with Docker?) 
• Inject to app container on demand 
– Deploy new local config file with each change 
• Store externally 
– Zookeeper & Curator curator.apache.org 
– etcd github.com/coreos/etcd 
27/11/2014 @danielbryantuk
Automating QA 
• Intra-component integration testing 
– Utilise embedded datastore/middleware 
– Cucumber (typically via API/Webdriver & Serenity) 
– Consider test UI for exploratory testing? 
• Fault-tolerance 
– Chris Batey’s Skillscast (bit.ly/1tU6wZj) 
– WireMock + Saboteur (wiremock.org) 
– “Scassandra” (github.com/scassandra) 
27/11/2014 @danielbryantuk
Automating QA 
• Inter-component integration testing 
– The hardest part of SOA… 
– Consider ‘synthetic txns’ (active monitoring) 
– Consumer-driven Contracts github.com/DiUS/pact-jvm 
• Service virtualisation 
– VCR and Betamax (github.com/vcr/vcr) 
– Mountebank (www.mbtest.org) 
– Mock external services (e.g. Spring profiles) 
27/11/2014 @danielbryantuk
QA: Further Inspiration 
Toby Clemson @ martinfowler.com/articles/microservice-testing 
27/11/2014 @danielbryantuk
Security: The Forgotten Part of QA 
• Test credentials during automated acceptance 
– Target third-party integration points 
• OWASP top ten 
– Zed Attack Proxy (bit.ly/1fjloVy, bit.ly/11Og39A) 
– Exploratory (penetration testing) 
• Stand on the shoulders of giants 
– Creating your own crypto is not ‘cool’ 
– Neither is inventing a ‘new’ security algorithm 
27/11/2014 @danielbryantuk
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
27/11/2014 @danielbryantuk
Deployment Platform: What you’ve got… 
27/11/2014 @danielbryantuk
What you think you want… 
27/11/2014 @danielbryantuk
What you actually get… 
Fact: 9 out of 10 cheetahs prefer the 
taste of an Ops team over tinned food 
27/11/2014 @danielbryantuk
Thou Shalt Know they Cloud… 
“Everything fails all the time [in the cloud]” 
Werner Vogels, CTO, Amazon.com 
• Everything is ephemeral 
• Volatility 
• Noisy (virtual) neighbours 
– bit.ly/1w1HQy7 
27/11/2014 @danielbryantuk
Thou Shalt Know thy Cloud… 
• AWS “Magnetic” EBS 100 IOPS 
– New SSD EBS 3K IOPS (burst, PIOPS available) 
– My Mac SSD does 49K IOPS 
• 1000Mbps network max transfer ~125MB/s 
– My Mac does 400+ MB/s Sequential Write to SSD 
Reference for Mac statistics: bit.ly/1ftJZH8 
27/11/2014 @danielbryantuk
Cultivating “Mechanical Sympathy” 
• Understand the underlying Cloud fabric 
• Virtualisation 
– Tech Target (bit.ly/1kDVqyG) 
• Networking 
– ‘Unix and Linux System Administration Handbook’ 
– AWS docs aws.amazon.com/documentation 
27/11/2014 @danielbryantuk
Mechanical Sympathy by the Numbers 
www.eecs.berkeley.edu/~rcs/research/interactive_latency.html 
27/11/2014 @danielbryantuk
Thinking/Acting Operationally 
• You write it, you run it… (“dev on call”) 
• Learn Linux fundamentals 
• Diagnostic skills 
– top, netstat, vmstat, tcpdump 
– Java utils: jps, jstat, jmap, jhat 
– “DevOps Troubleshooting” by K. Rankin 
27/11/2014 @danielbryantuk
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
27/11/2014 @danielbryantuk
Monitor All The Things! 
• Infrastructure monitoring 
– Nagios / Zabbix 
– New Relic / AppDynamics 
• Distributed Tracing 
– twitter.github.io/zipkin 
• Centralised Logging 
– logstash.net 
27/11/2014 @danielbryantuk
The ‘ELK’ Stack 
blog.comperiosearch.com/blog/2014/08/14/elk-one-vagrant-box 
27/11/2014 @danielbryantuk
Component Metrics 
• Dropwizard’s Metrics 
– metrics.codahale.com 
– Spring Boot (bit.ly/1rGo76V) 
• Netflix’s Servo 
– github.com/Netflix/servo 
• Etsy’s StatsD 
– github.com/etsy/statsd/wiki 
27/11/2014 @danielbryantuk
Health Checks 
27/11/2014 @danielbryantuk
Gauges, Counters, Meters, Timers… 
27/11/2014 @danielbryantuk
Graph It! 
27/11/2014 @danielbryantuk 
dashing.io
27/11/2014 @danielbryantuk 
Phrase borrowed from Etsy!
27/11/2014 @danielbryantuk
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
27/11/2014 @danielbryantuk
Antifragile 
• The opposite of fragile? 
– Robust… 
– Antifragile… 
• Netflix are best-in-class 
– bit.ly/1gs5n3q 
• System must be robust first! 
27/11/2014 @danielbryantuk
Design for Failure 
• Distributed Computing Principles 
– Jeff Hodges ‘Distributed Systems’ (bit.ly/1FeaVtt) 
– Scalable Web Architecture (bit.ly/1tt703O) 
– ‘For young bloods’ (bit.ly/1pKVepz) 
• Design patterns 
– Timeouts / retries 
– Bulkheads / circuit-breakers 
27/11/2014 @danielbryantuk
Timeouts 
docs.guava-libraries.googlecode.com/…/concurrent/SimpleTimeLimiter.html 
27/11/2014 @danielbryantuk
Retries 
27/11/2014 @danielbryantuk 
github.com/rholder/guava-retrying
Circuit-breaker/bulkhead 
27/11/2014 @danielbryantuk 
github.com/Netflix/Hystrix 
projects.spring.io/spring-cloud/
Antifragile Patterns: Elastic Scaling 
• Scalability Rules 
– Design for scaling: D 30x, I 3x, D 1.5x 
– Strive for statelessness 
– Cache appropriately (and on own tier) 
– Expose load metrics 
– Separate deploy and release 
– Favour async communication 
– Avoid coordination and ACID 
27/11/2014 @danielbryantuk
Antifragile Patterns: Elastic Scaling 
Stateless components 
Distributed data stores / caches 
27/11/2014 @danielbryantuk
Antifragile Patterns: Async FTW 
• Asynchronous Communication 
– Message queue www.rabbitmq.com 
– Pub/sub redis.io 
• Take it to the next level 
– Reactive github.com/ReactiveX/RxJava 
– CQRS/ES martinfowler.com/bliki/CQRS.html 
27/11/2014 @danielbryantuk
Antifragile Patterns: Respect the CAP 
Eventual consistency (ACID vs BASE) 
en.wikipedia.org/wiki/CAP_theorem 
cloudshankar.blogspot.co.uk/2013/05/eventual-consistency.html 
www.dataversity.net/acid-vs-base-the-shifting-ph-of-database-transaction-processing/ 
27/11/2014 @danielbryantuk
So, Cloud services are ‘done’ when… 
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
27/11/2014 @danielbryantuk
27/11/2014 @danielbryantuk
Thanks For Listening! 
• Massive thanks 
– OpenCredo (@OpenCredo) 
– www.notonthehighstreet.com 
• Questions / comments? 
– daniel.bryant@opencredo.com 
– @danielbryantuk 
27/11/2014 @danielbryantuk

Más contenido relacionado

La actualidad más candente

J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"Daniel Bryant
 
Building effective Java applications for the Cloud: The DHARMA principles - D...
Building effective Java applications for the Cloud: The DHARMA principles - D...Building effective Java applications for the Cloud: The DHARMA principles - D...
Building effective Java applications for the Cloud: The DHARMA principles - D...JAXLondon2014
 
OpNovember Water Cooler Talk: The Mystery of Domino on Docker - Part 1
OpNovember Water Cooler Talk: The Mystery of Domino on Docker - Part 1OpNovember Water Cooler Talk: The Mystery of Domino on Docker - Part 1
OpNovember Water Cooler Talk: The Mystery of Domino on Docker - Part 1Howard Greenberg
 
January OpenNTF Webinar: 4D - Domino Docker Deep Dive
January OpenNTF Webinar: 4D - Domino Docker Deep DiveJanuary OpenNTF Webinar: 4D - Domino Docker Deep Dive
January OpenNTF Webinar: 4D - Domino Docker Deep DiveHoward Greenberg
 
Enterprise Docker Requires a Private Registry
Enterprise Docker Requires a Private RegistryEnterprise Docker Requires a Private Registry
Enterprise Docker Requires a Private RegistryChris Riley ☁
 
Ratpack Web Framework
Ratpack Web FrameworkRatpack Web Framework
Ratpack Web FrameworkDaniel Woods
 
Spring Boot. Boot up your development. JEEConf 2015
Spring Boot. Boot up your development. JEEConf 2015Spring Boot. Boot up your development. JEEConf 2015
Spring Boot. Boot up your development. JEEConf 2015Strannik_2013
 
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)Howard Greenberg
 
Springone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and ReactorSpringone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and ReactorStéphane Maldini
 
A year in the life of a Grails startup
A year in the life of a Grails startupA year in the life of a Grails startup
A year in the life of a Grails startuptomaslin
 
Web application I have always dreamt of
Web application I have always dreamt ofWeb application I have always dreamt of
Web application I have always dreamt ofVictor_Cr
 
Lessons from Jenkins Platform Support
Lessons from Jenkins Platform SupportLessons from Jenkins Platform Support
Lessons from Jenkins Platform SupportMark Waite
 
OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020Howard Greenberg
 
Performance tuning the Spring Pet Clinic sample application
Performance tuning the Spring Pet Clinic sample applicationPerformance tuning the Spring Pet Clinic sample application
Performance tuning the Spring Pet Clinic sample applicationJulien Dubois
 
Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...
Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...
Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...Francesco Corti
 
What's new in Spring Boot 2.0
What's new in Spring Boot 2.0What's new in Spring Boot 2.0
What's new in Spring Boot 2.0VMware Tanzu
 
Performance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React ApplicationsPerformance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React ApplicationsDenis Izmaylov
 
Chick-fil-A: Milking the most out of thousands of kubernetes clusteres
Chick-fil-A: Milking the most out of thousands of kubernetes clusteresChick-fil-A: Milking the most out of thousands of kubernetes clusteres
Chick-fil-A: Milking the most out of thousands of kubernetes clusteresBrian Chambers
 
Effiziente CI/CD-Pipelines – mit den richtigen Tools klappt das
Effiziente CI/CD-Pipelines – mit den richtigen Tools klappt dasEffiziente CI/CD-Pipelines – mit den richtigen Tools klappt das
Effiziente CI/CD-Pipelines – mit den richtigen Tools klappt dasNico Meisenzahl
 
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!Howard Greenberg
 

La actualidad más candente (20)

J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
 
Building effective Java applications for the Cloud: The DHARMA principles - D...
Building effective Java applications for the Cloud: The DHARMA principles - D...Building effective Java applications for the Cloud: The DHARMA principles - D...
Building effective Java applications for the Cloud: The DHARMA principles - D...
 
OpNovember Water Cooler Talk: The Mystery of Domino on Docker - Part 1
OpNovember Water Cooler Talk: The Mystery of Domino on Docker - Part 1OpNovember Water Cooler Talk: The Mystery of Domino on Docker - Part 1
OpNovember Water Cooler Talk: The Mystery of Domino on Docker - Part 1
 
January OpenNTF Webinar: 4D - Domino Docker Deep Dive
January OpenNTF Webinar: 4D - Domino Docker Deep DiveJanuary OpenNTF Webinar: 4D - Domino Docker Deep Dive
January OpenNTF Webinar: 4D - Domino Docker Deep Dive
 
Enterprise Docker Requires a Private Registry
Enterprise Docker Requires a Private RegistryEnterprise Docker Requires a Private Registry
Enterprise Docker Requires a Private Registry
 
Ratpack Web Framework
Ratpack Web FrameworkRatpack Web Framework
Ratpack Web Framework
 
Spring Boot. Boot up your development. JEEConf 2015
Spring Boot. Boot up your development. JEEConf 2015Spring Boot. Boot up your development. JEEConf 2015
Spring Boot. Boot up your development. JEEConf 2015
 
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
 
Springone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and ReactorSpringone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and Reactor
 
A year in the life of a Grails startup
A year in the life of a Grails startupA year in the life of a Grails startup
A year in the life of a Grails startup
 
Web application I have always dreamt of
Web application I have always dreamt ofWeb application I have always dreamt of
Web application I have always dreamt of
 
Lessons from Jenkins Platform Support
Lessons from Jenkins Platform SupportLessons from Jenkins Platform Support
Lessons from Jenkins Platform Support
 
OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020
 
Performance tuning the Spring Pet Clinic sample application
Performance tuning the Spring Pet Clinic sample applicationPerformance tuning the Spring Pet Clinic sample application
Performance tuning the Spring Pet Clinic sample application
 
Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...
Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...
Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...
 
What's new in Spring Boot 2.0
What's new in Spring Boot 2.0What's new in Spring Boot 2.0
What's new in Spring Boot 2.0
 
Performance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React ApplicationsPerformance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React Applications
 
Chick-fil-A: Milking the most out of thousands of kubernetes clusteres
Chick-fil-A: Milking the most out of thousands of kubernetes clusteresChick-fil-A: Milking the most out of thousands of kubernetes clusteres
Chick-fil-A: Milking the most out of thousands of kubernetes clusteres
 
Effiziente CI/CD-Pipelines – mit den richtigen Tools klappt das
Effiziente CI/CD-Pipelines – mit den richtigen Tools klappt dasEffiziente CI/CD-Pipelines – mit den richtigen Tools klappt das
Effiziente CI/CD-Pipelines – mit den richtigen Tools klappt das
 
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!
 

Destacado

20140202 fosdem-nosql-devroom-hadoop-yarn
20140202 fosdem-nosql-devroom-hadoop-yarn20140202 fosdem-nosql-devroom-hadoop-yarn
20140202 fosdem-nosql-devroom-hadoop-yarnDatalayer
 
The Economies of Scaling Software - Josh Long and Abdelmonaim Remani
The Economies of Scaling Software - Josh Long and Abdelmonaim RemaniThe Economies of Scaling Software - Josh Long and Abdelmonaim Remani
The Economies of Scaling Software - Josh Long and Abdelmonaim Remaniploibl
 
The Full Stack Java Developer - Josh Long
The Full Stack Java Developer - Josh LongThe Full Stack Java Developer - Josh Long
The Full Stack Java Developer - Josh Longploibl
 
Apps software development with Vert.X
Apps software development with Vert.XApps software development with Vert.X
Apps software development with Vert.XJose Juan R. Zuñiga
 
Future of Web 2.0 & The Semantic Web
Future of Web 2.0 & The Semantic WebFuture of Web 2.0 & The Semantic Web
Future of Web 2.0 & The Semantic Webis20090
 
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java心 谷本
 
Drone Data Flowing Through Apache NiFi
Drone Data Flowing Through Apache NiFiDrone Data Flowing Through Apache NiFi
Drone Data Flowing Through Apache NiFiTimothy Spann
 

Destacado (8)

20140202 fosdem-nosql-devroom-hadoop-yarn
20140202 fosdem-nosql-devroom-hadoop-yarn20140202 fosdem-nosql-devroom-hadoop-yarn
20140202 fosdem-nosql-devroom-hadoop-yarn
 
The Economies of Scaling Software - Josh Long and Abdelmonaim Remani
The Economies of Scaling Software - Josh Long and Abdelmonaim RemaniThe Economies of Scaling Software - Josh Long and Abdelmonaim Remani
The Economies of Scaling Software - Josh Long and Abdelmonaim Remani
 
Walking Through Cloud Serving at Yahoo!
Walking Through Cloud Serving at Yahoo!Walking Through Cloud Serving at Yahoo!
Walking Through Cloud Serving at Yahoo!
 
The Full Stack Java Developer - Josh Long
The Full Stack Java Developer - Josh LongThe Full Stack Java Developer - Josh Long
The Full Stack Java Developer - Josh Long
 
Apps software development with Vert.X
Apps software development with Vert.XApps software development with Vert.X
Apps software development with Vert.X
 
Future of Web 2.0 & The Semantic Web
Future of Web 2.0 & The Semantic WebFuture of Web 2.0 & The Semantic Web
Future of Web 2.0 & The Semantic Web
 
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java
 
Drone Data Flowing Through Apache NiFi
Drone Data Flowing Through Apache NiFiDrone Data Flowing Through Apache NiFi
Drone Data Flowing Through Apache NiFi
 

Similar a Building Java Microservices Cloud

LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...Daniel Bryant
 
vJUG24 2016 "Seven (More) Deadly Sins of Microservice"
vJUG24 2016 "Seven (More) Deadly Sins of Microservice"vJUG24 2016 "Seven (More) Deadly Sins of Microservice"
vJUG24 2016 "Seven (More) Deadly Sins of Microservice"Daniel Bryant
 
JavaOne 2014: Cloud Developer's DHARMA: Redefining 'done' for Cloud applications
JavaOne 2014: Cloud Developer's DHARMA: Redefining 'done' for Cloud applicationsJavaOne 2014: Cloud Developer's DHARMA: Redefining 'done' for Cloud applications
JavaOne 2014: Cloud Developer's DHARMA: Redefining 'done' for Cloud applicationsDaniel Bryant
 
LJC 05/14 "Cloud Developer's DHARMA"
LJC 05/14 "Cloud Developer's DHARMA"LJC 05/14 "Cloud Developer's DHARMA"
LJC 05/14 "Cloud Developer's DHARMA"Daniel Bryant
 
GOTO Chicago/CraftConf 2017 "The Seven (More) Deadly Sins of Microservices"
GOTO Chicago/CraftConf 2017 "The Seven (More) Deadly Sins of Microservices"GOTO Chicago/CraftConf 2017 "The Seven (More) Deadly Sins of Microservices"
GOTO Chicago/CraftConf 2017 "The Seven (More) Deadly Sins of Microservices"Daniel Bryant
 
Haufe #msaday: "Building a Microservice Ecosystem"
Haufe #msaday: "Building a Microservice Ecosystem"Haufe #msaday: "Building a Microservice Ecosystem"
Haufe #msaday: "Building a Microservice Ecosystem"Daniel Bryant
 
Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant
Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant
Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant OpenCredo
 
CloudNativeLondon 2017: "What is a Service Mesh, and Do I Need One when Devel...
CloudNativeLondon 2017: "What is a Service Mesh, and Do I Need One when Devel...CloudNativeLondon 2017: "What is a Service Mesh, and Do I Need One when Devel...
CloudNativeLondon 2017: "What is a Service Mesh, and Do I Need One when Devel...Daniel Bryant
 
The seven more deadly sins of microservices final
The seven more deadly sins of microservices finalThe seven more deadly sins of microservices final
The seven more deadly sins of microservices finalHaufe-Lexware GmbH & Co KG
 
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant OpenCredo
 
O'Reilly 2017: "Introduction to Service Meshes"
O'Reilly 2017: "Introduction to Service Meshes"O'Reilly 2017: "Introduction to Service Meshes"
O'Reilly 2017: "Introduction to Service Meshes"Daniel Bryant
 
LJC 2015 "The Crafty Consultants Guide to DevOps"
LJC 2015 "The Crafty Consultants Guide to DevOps"LJC 2015 "The Crafty Consultants Guide to DevOps"
LJC 2015 "The Crafty Consultants Guide to DevOps"Daniel Bryant
 
JAX DevOps 2018 "Continuous Delivery Patterns for Modern Architectures"
JAX DevOps 2018 "Continuous Delivery Patterns for Modern Architectures"JAX DevOps 2018 "Continuous Delivery Patterns for Modern Architectures"
JAX DevOps 2018 "Continuous Delivery Patterns for Modern Architectures"Daniel Bryant
 
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"Daniel Bryant
 
O'Reilly SACON "Continuous Delivery Patterns for Contemporary Architecture"
O'Reilly SACON "Continuous Delivery Patterns for Contemporary Architecture"O'Reilly SACON "Continuous Delivery Patterns for Contemporary Architecture"
O'Reilly SACON "Continuous Delivery Patterns for Contemporary Architecture"Daniel Bryant
 
Dublin Microservice "Introduction to Service Meshes"
Dublin Microservice "Introduction to Service Meshes"Dublin Microservice "Introduction to Service Meshes"
Dublin Microservice "Introduction to Service Meshes"Daniel Bryant
 
JAXDevOps 2017 "The Seven (More) Deadly Sins of Microservices
JAXDevOps 2017 "The Seven (More) Deadly Sins of MicroservicesJAXDevOps 2017 "The Seven (More) Deadly Sins of Microservices
JAXDevOps 2017 "The Seven (More) Deadly Sins of MicroservicesDaniel Bryant
 
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...Daniel Bryant
 
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"Daniel Bryant
 

Similar a Building Java Microservices Cloud (20)

LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
 
vJUG24 2016 "Seven (More) Deadly Sins of Microservice"
vJUG24 2016 "Seven (More) Deadly Sins of Microservice"vJUG24 2016 "Seven (More) Deadly Sins of Microservice"
vJUG24 2016 "Seven (More) Deadly Sins of Microservice"
 
JavaOne 2014: Cloud Developer's DHARMA: Redefining 'done' for Cloud applications
JavaOne 2014: Cloud Developer's DHARMA: Redefining 'done' for Cloud applicationsJavaOne 2014: Cloud Developer's DHARMA: Redefining 'done' for Cloud applications
JavaOne 2014: Cloud Developer's DHARMA: Redefining 'done' for Cloud applications
 
LJC 05/14 "Cloud Developer's DHARMA"
LJC 05/14 "Cloud Developer's DHARMA"LJC 05/14 "Cloud Developer's DHARMA"
LJC 05/14 "Cloud Developer's DHARMA"
 
GOTO Chicago/CraftConf 2017 "The Seven (More) Deadly Sins of Microservices"
GOTO Chicago/CraftConf 2017 "The Seven (More) Deadly Sins of Microservices"GOTO Chicago/CraftConf 2017 "The Seven (More) Deadly Sins of Microservices"
GOTO Chicago/CraftConf 2017 "The Seven (More) Deadly Sins of Microservices"
 
Building a microservice ecosystem
Building a microservice ecosystemBuilding a microservice ecosystem
Building a microservice ecosystem
 
Haufe #msaday: "Building a Microservice Ecosystem"
Haufe #msaday: "Building a Microservice Ecosystem"Haufe #msaday: "Building a Microservice Ecosystem"
Haufe #msaday: "Building a Microservice Ecosystem"
 
Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant
Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant
Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant
 
CloudNativeLondon 2017: "What is a Service Mesh, and Do I Need One when Devel...
CloudNativeLondon 2017: "What is a Service Mesh, and Do I Need One when Devel...CloudNativeLondon 2017: "What is a Service Mesh, and Do I Need One when Devel...
CloudNativeLondon 2017: "What is a Service Mesh, and Do I Need One when Devel...
 
The seven more deadly sins of microservices final
The seven more deadly sins of microservices finalThe seven more deadly sins of microservices final
The seven more deadly sins of microservices final
 
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant
 
O'Reilly 2017: "Introduction to Service Meshes"
O'Reilly 2017: "Introduction to Service Meshes"O'Reilly 2017: "Introduction to Service Meshes"
O'Reilly 2017: "Introduction to Service Meshes"
 
LJC 2015 "The Crafty Consultants Guide to DevOps"
LJC 2015 "The Crafty Consultants Guide to DevOps"LJC 2015 "The Crafty Consultants Guide to DevOps"
LJC 2015 "The Crafty Consultants Guide to DevOps"
 
JAX DevOps 2018 "Continuous Delivery Patterns for Modern Architectures"
JAX DevOps 2018 "Continuous Delivery Patterns for Modern Architectures"JAX DevOps 2018 "Continuous Delivery Patterns for Modern Architectures"
JAX DevOps 2018 "Continuous Delivery Patterns for Modern Architectures"
 
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
 
O'Reilly SACON "Continuous Delivery Patterns for Contemporary Architecture"
O'Reilly SACON "Continuous Delivery Patterns for Contemporary Architecture"O'Reilly SACON "Continuous Delivery Patterns for Contemporary Architecture"
O'Reilly SACON "Continuous Delivery Patterns for Contemporary Architecture"
 
Dublin Microservice "Introduction to Service Meshes"
Dublin Microservice "Introduction to Service Meshes"Dublin Microservice "Introduction to Service Meshes"
Dublin Microservice "Introduction to Service Meshes"
 
JAXDevOps 2017 "The Seven (More) Deadly Sins of Microservices
JAXDevOps 2017 "The Seven (More) Deadly Sins of MicroservicesJAXDevOps 2017 "The Seven (More) Deadly Sins of Microservices
JAXDevOps 2017 "The Seven (More) Deadly Sins of Microservices
 
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
 
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"
 

Más de Daniel Bryant

ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API GatewaysITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API GatewaysDaniel Bryant
 
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...Daniel Bryant
 
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"Daniel Bryant
 
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...Daniel Bryant
 
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"Daniel Bryant
 
Fall 22: "From Kubernetes to PaaS to... err, what's next"
Fall 22: "From Kubernetes to PaaS to... err, what's next"Fall 22: "From Kubernetes to PaaS to... err, what's next"
Fall 22: "From Kubernetes to PaaS to... err, what's next"Daniel Bryant
 
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...Daniel Bryant
 
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...Daniel Bryant
 
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...Daniel Bryant
 
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"Daniel Bryant
 
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's NextKubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's NextDaniel Bryant
 
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...Daniel Bryant
 
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"Daniel Bryant
 
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...Daniel Bryant
 
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...Daniel Bryant
 
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...Daniel Bryant
 
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"Daniel Bryant
 
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...Daniel Bryant
 
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...Daniel Bryant
 
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...Daniel Bryant
 

Más de Daniel Bryant (20)

ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API GatewaysITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
 
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
 
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
 
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
 
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
 
Fall 22: "From Kubernetes to PaaS to... err, what's next"
Fall 22: "From Kubernetes to PaaS to... err, what's next"Fall 22: "From Kubernetes to PaaS to... err, what's next"
Fall 22: "From Kubernetes to PaaS to... err, what's next"
 
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
 
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
 
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
 
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
 
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's NextKubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
 
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
 
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
 
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
 
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
 
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
 
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
 
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
 
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
 
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
 

Último

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Último (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

Building Java Microservices Cloud

  • 1. Building Java (micro)services for the Cloud The DHARMA principles Daniel Bryant Principal Consultant, Open Credo daniel.bryant@opencredo.com @danielbryantuk
  • 2. Who Am I? • Principal Consultant at OpenCredo  Agile transformations  DevOps methodologies  Microservices and Cloud • London Java Community Associate • Adopt OpenJDK and JSR 27/11/2014 @danielbryantuk
  • 3. The Current Industry Wish List… • Service-Oriented Architecture • Cloud-based deployments • DevOps Culture 27/11/2014 @danielbryantuk
  • 4. The Current Industry Wish List… • Service-Oriented Architecture (microservices) – Today! • Cloud-based deployments – Today! • DevOps Culture – “Moving to DevOps” @ DevoxxUK bit.ly/1BylnZb 27/11/2014 @danielbryantuk
  • 5. The obligatory microservice definition… 27/11/2014 @danielbryantuk
  • 6. Microservices… • “SOA done right” • “SRP” services – “Java, The Unix Way” (bit.ly/1cX8VsS) • “Small” codebase services – 1000 LOC… 100… 10…? • My personal opinion… 27/11/2014 @danielbryantuk
  • 7. “Can I fit the service in my head?” 27/11/2014 @danielbryantuk
  • 8. Common Cloud Problems TL;DR… 27/11/2014 @danielbryantuk
  • 9. Not respecting the underlying environment 27/11/2014 @danielbryantuk
  • 10. Lack of application/platform monitoring… 27/11/2014 @danielbryantuk
  • 11. Bizarre failure modes… Three certainties in life: Taxes, death and failure in production… 27/11/2014 @danielbryantuk
  • 12. Difficulty in understanding the new architecture 27/11/2014 @danielbryantuk
  • 13. Confusion over environment provisioning and config 27/11/2014 @danielbryantuk
  • 14. Not testing in the Cloud… (hint: here be dragons!) 27/11/2014 @danielbryantuk
  • 15. We’ve created the “Cloud DHARMA Principles” to act as a checklist when building Cloud apps 27/11/2014 @danielbryantuk
  • 16. dharma /ˈdɑːmə,ˈdəːmə/ noun 1. Signifies behaviors that are considered to be in accord with order that makes life and universe possible (Hinduism) 2. "cosmic law and order”, but is also applied to the teachings of the Buddha (Buddhism) 27/11/2014 @danielbryantuk
  • 17. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 27/11/2014 @danielbryantuk
  • 18. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 27/11/2014 @danielbryantuk
  • 20. Documentation (just enough) • Provide a map for developers (and QA, Ops) • Component purpose and interface/contract • Initialisation instructions (mocks/stubs) • Highlight areas of operational risk 27/11/2014 @danielbryantuk
  • 22. Simon Brown’s C4 Model @simonbrown www.codingthearchitecture.com 27/11/2014 @danielbryantuk
  • 24. API Docs with Swagger 27/11/2014 @danielbryantuk helloreverb.com/developers/swagger
  • 25. API Docs with Swagger 27/11/2014 @danielbryantuk helloreverb.com/developers/swagger
  • 26. Create a PACT 27/11/2014 @danielbryantuk github.com/DiUS/pact-jvm martinfowler.com/articles/consumerDrivenContracts.html
  • 27. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 27/11/2014 @danielbryantuk
  • 28. High Cohesion / Loose Coupling (all the way down…) “Fit for purpose architecture, throughout the system” 1. Architect for encapsulation 2. Architect for scalability 3. Architect for comprehension 27/11/2014 @danielbryantuk
  • 29. Encapsulation: High Cohesion/Loose Coupling • Code • Modules – Components (bit.ly/1n7D0vp) – Services (bounded contexts) • Public APIs – PayPal (bit.ly/1hnZNly) • Deployment – 12factor.net 27/11/2014 @danielbryantuk
  • 30. Are Microservices a Silver Bullet? • Single Responsibility Principle – Enforce service boundaries – Bounded contexts (DDD) • Separation of Concerns – Encapsulate what varies – Easier to scale/tune independently • Is this a free-lunch? (bit.ly/1gSw4L7) 27/11/2014 @danielbryantuk
  • 31. No!! Keep searching… It’s all too easy to push complexity into orchestration and communication www.codingthearchitecture.com/2014/07/06/distributed_big_balls_of_mud.html 27/11/2014 @danielbryantuk
  • 32. Scalability: The Three Ways 27/11/2014 @danielbryantuk
  • 33. The Scaling Cube 27/11/2014 @danielbryantuk
  • 34. The Scaling Cube Splitting aka ‘Microservices’ Scaling requirements vary by ‘service’ Rate of code change varies by ‘service’ Uber-flexible distribution/scaling Modeling & implementation non-trivial! Cloning / Replication You’re overly successful (and in trouble!) Easy to implement Costly to run 27/11/2014 @danielbryantuk Sharding Scaling requirements vary by data Current data store unit at capacity Can be non-invasive The decision of what to shard on?
  • 35. Comprehension: Smashing the Monolith… • Business functionality -“Cart Service” – Noun, verb, SRP (slidesha.re/1owdJhh) • Technology chunk - “Email Service” • Vertical Slice - “Service per page” – Groupon (vimeo.com/105880150) • Horizontal Slice - “User Repo” – An anti-pattern? 27/11/2014 @danielbryantuk
  • 36. DZone’s Enterprise Integration Guide dzone.com/research/guide-to-enterprise-integration 27/11/2014 @danielbryantuk
  • 37. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 27/11/2014 @danielbryantuk
  • 38. Automated from Commit to Cloud • Continuous Integration • Continuous Deployment • Continuous Delivery 27/11/2014 @danielbryantuk
  • 39. Build Pipeline • Component Build – Compile – Unit Tests e.g. Maven Surefire – Integration Tests (in-process) e.g. Maven Failsafe • Deployment onto QA Cloud – Probe health check endpoints – Serverspec serverspec.org 27/11/2014 @danielbryantuk
  • 40. Build Pipeline • Acceptance Tests – Cucumber (and Webdrivers) – Use a Cloud environment! • Performance Tests – Jmeter + Jenkins performance plugin – Make sure environment and data is realistic!! • Live Deployment? 27/11/2014 @danielbryantuk
  • 41. Microservice Pipeline If you can’t deploy a service individually, you’re probably aren’t creating ‘microservices’ Beware of the distributed monolith “If you can't build a monolith, what makes you think microservices are the answer?” @simonbrown bit.ly/1n7D0vp 27/11/2014 @danielbryantuk
  • 42. Infrastructure: Say No To Snowflakes! • Automate all provisioning (store in SCM) • Link infrastructure code to service – Take care with versioning service/infra code • Approaches… – Separate infra repo (tagged with service version) – Include in service repo (e.g. DockerFile) 27/11/2014 @danielbryantuk
  • 43. Infrastructure: Say No To Snowflakes! • Fry... – Chef, Puppet, SaltStack, Ansible – Bash, Python (Fabric) – Vendor APIs • …or bake? – Packer.io – Netflix Aminator 27/11/2014 @danielbryantuk
  • 44. Infrastructure: Say No To Snowflakes! • Doing “Proper Development” – Gareth Rushgrove at Craft Conf (bit.ly/1njuc49) – Chef Conf (www.youtube.com/user/getchef) • Local tooling/testing – Vagrant (www.vagrantup.com) – Docker (www.docker.io) – Fig (www.fig.sh) 27/11/2014 @danielbryantuk
  • 45. Configuring Apps in the Cloud • Bundle config with app artifact – Re-deploy entire app on change (easier with Docker?) • Inject to app container on demand – Deploy new local config file with each change • Store externally – Zookeeper & Curator curator.apache.org – etcd github.com/coreos/etcd 27/11/2014 @danielbryantuk
  • 46. Automating QA • Intra-component integration testing – Utilise embedded datastore/middleware – Cucumber (typically via API/Webdriver & Serenity) – Consider test UI for exploratory testing? • Fault-tolerance – Chris Batey’s Skillscast (bit.ly/1tU6wZj) – WireMock + Saboteur (wiremock.org) – “Scassandra” (github.com/scassandra) 27/11/2014 @danielbryantuk
  • 47. Automating QA • Inter-component integration testing – The hardest part of SOA… – Consider ‘synthetic txns’ (active monitoring) – Consumer-driven Contracts github.com/DiUS/pact-jvm • Service virtualisation – VCR and Betamax (github.com/vcr/vcr) – Mountebank (www.mbtest.org) – Mock external services (e.g. Spring profiles) 27/11/2014 @danielbryantuk
  • 48. QA: Further Inspiration Toby Clemson @ martinfowler.com/articles/microservice-testing 27/11/2014 @danielbryantuk
  • 49. Security: The Forgotten Part of QA • Test credentials during automated acceptance – Target third-party integration points • OWASP top ten – Zed Attack Proxy (bit.ly/1fjloVy, bit.ly/11Og39A) – Exploratory (penetration testing) • Stand on the shoulders of giants – Creating your own crypto is not ‘cool’ – Neither is inventing a ‘new’ security algorithm 27/11/2014 @danielbryantuk
  • 50. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 27/11/2014 @danielbryantuk
  • 51. Deployment Platform: What you’ve got… 27/11/2014 @danielbryantuk
  • 52. What you think you want… 27/11/2014 @danielbryantuk
  • 53. What you actually get… Fact: 9 out of 10 cheetahs prefer the taste of an Ops team over tinned food 27/11/2014 @danielbryantuk
  • 54. Thou Shalt Know they Cloud… “Everything fails all the time [in the cloud]” Werner Vogels, CTO, Amazon.com • Everything is ephemeral • Volatility • Noisy (virtual) neighbours – bit.ly/1w1HQy7 27/11/2014 @danielbryantuk
  • 55. Thou Shalt Know thy Cloud… • AWS “Magnetic” EBS 100 IOPS – New SSD EBS 3K IOPS (burst, PIOPS available) – My Mac SSD does 49K IOPS • 1000Mbps network max transfer ~125MB/s – My Mac does 400+ MB/s Sequential Write to SSD Reference for Mac statistics: bit.ly/1ftJZH8 27/11/2014 @danielbryantuk
  • 56. Cultivating “Mechanical Sympathy” • Understand the underlying Cloud fabric • Virtualisation – Tech Target (bit.ly/1kDVqyG) • Networking – ‘Unix and Linux System Administration Handbook’ – AWS docs aws.amazon.com/documentation 27/11/2014 @danielbryantuk
  • 57. Mechanical Sympathy by the Numbers www.eecs.berkeley.edu/~rcs/research/interactive_latency.html 27/11/2014 @danielbryantuk
  • 58. Thinking/Acting Operationally • You write it, you run it… (“dev on call”) • Learn Linux fundamentals • Diagnostic skills – top, netstat, vmstat, tcpdump – Java utils: jps, jstat, jmap, jhat – “DevOps Troubleshooting” by K. Rankin 27/11/2014 @danielbryantuk
  • 59. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 27/11/2014 @danielbryantuk
  • 60. Monitor All The Things! • Infrastructure monitoring – Nagios / Zabbix – New Relic / AppDynamics • Distributed Tracing – twitter.github.io/zipkin • Centralised Logging – logstash.net 27/11/2014 @danielbryantuk
  • 61. The ‘ELK’ Stack blog.comperiosearch.com/blog/2014/08/14/elk-one-vagrant-box 27/11/2014 @danielbryantuk
  • 62. Component Metrics • Dropwizard’s Metrics – metrics.codahale.com – Spring Boot (bit.ly/1rGo76V) • Netflix’s Servo – github.com/Netflix/servo • Etsy’s StatsD – github.com/etsy/statsd/wiki 27/11/2014 @danielbryantuk
  • 63. Health Checks 27/11/2014 @danielbryantuk
  • 64. Gauges, Counters, Meters, Timers… 27/11/2014 @danielbryantuk
  • 65. Graph It! 27/11/2014 @danielbryantuk dashing.io
  • 66. 27/11/2014 @danielbryantuk Phrase borrowed from Etsy!
  • 68. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 27/11/2014 @danielbryantuk
  • 69. Antifragile • The opposite of fragile? – Robust… – Antifragile… • Netflix are best-in-class – bit.ly/1gs5n3q • System must be robust first! 27/11/2014 @danielbryantuk
  • 70. Design for Failure • Distributed Computing Principles – Jeff Hodges ‘Distributed Systems’ (bit.ly/1FeaVtt) – Scalable Web Architecture (bit.ly/1tt703O) – ‘For young bloods’ (bit.ly/1pKVepz) • Design patterns – Timeouts / retries – Bulkheads / circuit-breakers 27/11/2014 @danielbryantuk
  • 72. Retries 27/11/2014 @danielbryantuk github.com/rholder/guava-retrying
  • 73. Circuit-breaker/bulkhead 27/11/2014 @danielbryantuk github.com/Netflix/Hystrix projects.spring.io/spring-cloud/
  • 74. Antifragile Patterns: Elastic Scaling • Scalability Rules – Design for scaling: D 30x, I 3x, D 1.5x – Strive for statelessness – Cache appropriately (and on own tier) – Expose load metrics – Separate deploy and release – Favour async communication – Avoid coordination and ACID 27/11/2014 @danielbryantuk
  • 75. Antifragile Patterns: Elastic Scaling Stateless components Distributed data stores / caches 27/11/2014 @danielbryantuk
  • 76. Antifragile Patterns: Async FTW • Asynchronous Communication – Message queue www.rabbitmq.com – Pub/sub redis.io • Take it to the next level – Reactive github.com/ReactiveX/RxJava – CQRS/ES martinfowler.com/bliki/CQRS.html 27/11/2014 @danielbryantuk
  • 77. Antifragile Patterns: Respect the CAP Eventual consistency (ACID vs BASE) en.wikipedia.org/wiki/CAP_theorem cloudshankar.blogspot.co.uk/2013/05/eventual-consistency.html www.dataversity.net/acid-vs-base-the-shifting-ph-of-database-transaction-processing/ 27/11/2014 @danielbryantuk
  • 78. So, Cloud services are ‘done’ when… Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 27/11/2014 @danielbryantuk
  • 80. Thanks For Listening! • Massive thanks – OpenCredo (@OpenCredo) – www.notonthehighstreet.com • Questions / comments? – daniel.bryant@opencredo.com – @danielbryantuk 27/11/2014 @danielbryantuk

Notas del editor

  1. James Gough’s “The benefits are more than just the tests” Mash Badar’s “TDD at Scale” (slidesha.re/19P7kzS)