SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

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
 

Tendances (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!
 

En vedette

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
 

En vedette (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
 

Similaire à 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 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
 
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
 
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
 

Similaire à 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"
 
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
 
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"
 
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"
 

Plus 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
 

Plus 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 ...
 

Dernier

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 

Dernier (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

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

Notes de l'éditeur

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