SlideShare a Scribd company logo
Building Java (micro)services for the Cloud 
The DHARMA principles 
&& 
Chuck Norris Doesn’t Need DevOps… 
but Java Developers might benefit 
Daniel Bryant 
Principal Consultant, Open Credo 
daniel.bryant@opencredo.com 
@danielbryantuk
Who Am I? 
• Principal Consultant at OpenCredo 
• LJC Associate 
 Agile transformations 
 DevOps, Cloud and Microservices 
 Big Data 
• Adopt OpenJDK and JSR 
10/11/2014 @danielbryantuk
The Current Industry Wish List… 
• Service-Oriented Architecture 
• Cloud-based deployments 
• DevOps Culture 
10/11/2014 @danielbryantuk
The Current Industry Wish List… 
• Service-Oriented Architecture 
– muCon 2014 (coming soon via skillsmatter.com) 
• Cloud-based deployments 
– JavaOne 2014 (coming soon via parleys.com) 
• DevOps Culture 
– Devoxx UK talk (bit.ly/1BylnZb) 
– Previous LJC Event (bit.ly/1elVPJz) 
10/11/2014 @danielbryantuk
So, what’s all this I hear about small services?… 
10/11/2014 @danielbryantuk
“Microservices”aka 
• “SOA done right” 
• “SRP” services 
– “Java, The Unix Way” (bit.ly/1cX8VsS) 
• “Small” codebase services 
– 1000 LOC… 100… 10…? 
• “12 Factor apps” (12factor.net) 
• My personal opinion… 
10/11/2014 @danielbryantuk
“Can I fit the service in my head?” 
10/11/2014 @danielbryantuk
Moving to the Cloud – common problems… 
10/11/2014 @danielbryantuk
Not respecting the underlying environment 
10/11/2014 @danielbryantuk
Lack of application/platform monitoring… 
10/11/2014 @danielbryantuk
Bizarre failure modes… 
10/11/2014 @danielbryantuk
Difficulty in understanding 
the new architecture 
10/11/2014 @danielbryantuk
Not testing in the Cloud… 
(hint: here be dragons!) 
10/11/2014 @danielbryantuk
We’ve created the “Cloud DHARMA Principles” 
to act as a checklist when building Cloud apps 
10/11/2014 @danielbryantuk
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
10/11/2014 @danielbryantuk
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
10/11/2014 @danielbryantuk
API Docs with Swagger 
10/11/2014 @danielbryantuk 
helloreverb.com/developers/swagger
Create a PACT 
10/11/2014 @danielbryantuk 
github.com/DiUS/pact-jvm
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
10/11/2014 @danielbryantuk
High Cohesion / Loose Coupling 
(all the way down…) 
• Code 
• Architecture 
– Components 
– Services 
• Public API 
– PayPal (bit.ly/1hnZNly) 
10/11/2014 @danielbryantuk
Microservices: Architectural Silver Bullet? 
• Enforce service boundaries 
– Bounded contexts 
– Domain-Driven Design 
• Separation of Concerns 
– Encapsulate what varies 
– Easier to scale/tune independently 
• Is this a free-lunch? (bit.ly/1gSw4L7) 
10/11/2014 @danielbryantuk
No!! It’s all too easy to… 
1) Create a distributed monolith 
2) Push complexity into orchestration 
www.codingthearchitecture.com/2014/07/06/distributed_big_balls_of_mud.html 
10/11/2014 @danielbryantuk
10/11/2014 @danielbryantuk
Sneak-peak: 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? 
10/11/2014 @danielbryantuk
DZone’s Enterprise Integration Guide 
10/11/2014 @danielbryantuk 
www.dzone.com/page/research
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
10/11/2014 @danielbryantuk
Thou Shalt Know thy Cloud… 
“Everything fails all the time [in the cloud]” 
Werner Vogels, CTO, Amazon.com 
• Everything is ephemeral 
• Volatility 
• Noisy (virtual) neighbours 
– bit.ly/1w1HQy7 
10/11/2014 @danielbryantuk
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
10/11/2014 @danielbryantuk
Antifragile 
• The opposite of fragile? 
– Robust… 
– Antifragile… 
• Netflix are best-in-class 
– bit.ly/1gs5n3q 
• System must be robust first! 
10/11/2014 @danielbryantuk
Design for Failure 
• Distributed Computing Principles 
– ‘For young bloods’ (bit.ly/1pKVepz) 
– Eight Fallacies… (bit.ly/1zCBet7) 
• Design patterns 
– Timeouts / retries 
– Bulkheads / circuit-breakers 
10/11/2014 @danielbryantuk
Retries 
10/11/2014 @danielbryantuk 
github.com/rholder/guava-retrying
Circuit-breaker/bulkhead 
10/11/2014 @danielbryantuk 
github.com/Netflix/Hystrix 
projects.spring.io/spring-cloud/
Antifragile Patterns: Elastic Scaling 
Stateless components 
Distributed data stores / caches 
10/11/2014 @danielbryantuk
Microservices in the Cloud… 
Documented (just enough) 
Highly cohesive/loosely coupled (all the way down) 
Automated from commit to Cloud 
Resource aware 
Monitored thoroughly 
Antifragile 
10/11/2014 @danielbryantuk
and now to DevOps… 
…or as the recruiters like to say 
“DeeVoips”, “DevAnOps” and “Dev-Oops” 
10/11/2014 @danielbryantuk
What’s in a Name? 
• “Development / Operations” 
• Increasing cohesion between: 
– Business 
– Development 
– Quality Assurance 
– Operations 
“Bu-Dev-Qa-Ops”? 
10/11/2014 @danielbryantuk
So, What’s Chuck Norris Doing Here? 
10/11/2014 @danielbryantuk
Chuck Norris doesn’t need DevOps… 
…as a one-man army he codes with 
one hand, tests with the other and 
deploys with his beard 
The rest of us… 
…work in teams to develop software 
10/11/2014 @danielbryantuk
Software Development Teams 
• Developers 
• Quality Assurance 
• Operations 
10/11/2014 @danielbryantuk
Software Development Teams 
• Developers 
• Quality Assurance 
• Operations 
10/11/2014 @danielbryantuk
10/11/2014 @danielbryantuk
Software Development Teams 
• Developers 
• Quality Assurance 
• Operations 
10/11/2014 @danielbryantuk
10/11/2014 @danielbryantuk
Software Development Teams 
• Developers 
• Quality Assurance 
• Operations 
10/11/2014 @danielbryantuk
10/11/2014 @danielbryantuk
This silo mentality has to stop 
10/11/2014 @danielbryantuk
Culture is Vital 
• Culture drives behaviour, drives culture… 
– “Communication, simplicity, feedback, courage” 
– Everyone is responsible for delivery 
– Continuous experimentation and learning 
• Not easy to change culture 
– The hardest part of DevOps… 
– …but you will learn new things 
10/11/2014 @danielbryantuk
Changing Culture 
• Create an effective team… 
• “Habits of highly effective technical teams” 
– Martijn Verburg (bit.ly/1aF9SnK) 
• “Patterns of Effective Teams” 
– Dan North (vimeo.com/68226771) 
10/11/2014 @danielbryantuk
Chuck Norris doesn’t do QA… 
…Chuck Norris can test an entire 
application with a single assert 
(and get 110% code coverage) 
The rest of us… 
…need high-quality automated QA 
10/11/2014 @danielbryantuk
Automating QA 
• Intra-component integration testing 
– Utilise embedded datastore/middleware 
– Cucumber (via ports/adapters/API?) 
• Fault-tolerance 
– Chris Batey’s Skillscast (bit.ly/1tU6wZj) 
– WireMock + Saboteur (wiremock.org) 
– “Scassandra” (github.com/scassandra) 
10/11/2014 @danielbryantuk
Automating QA 
• Inter-component integration testing 
– The hardest part of SOA… 
– Consider ‘synthetic txns’ (active monitoring) 
• Service virtualisation 
– Mountebank (www.mbtest.org) 
– Mock external services (e.g. Spring profiles) 
10/11/2014 @danielbryantuk
All arrays Chuck Norris creates are of 
infinite size… 
…as Chuck Norris knows no bounds 
The rest of us… 
…should manage our resources and 
cultivate ‘mechanical sympathy’ 
10/11/2014 @danielbryantuk
Cultivating “Mechanical Sympathy” 
• Virtualisation 
– Tech Target (bit.ly/1kDVqyG) 
• Networking 
– ‘Unix and Linux System Administration Handbook’ 
– AWS docs aws.amazon.com/documentation 
• Thinking/Acting Operationally 
– You write it, you run it… (“dev on call”) 
10/11/2014 @danielbryantuk
When Chuck Norris throws Exceptions… 
…everybody knows about it because they 
land outside of the data center 
The rest of us… 
…should log all errors (and other vital 
information for diagnostic purposes) 
10/11/2014 @danielbryantuk
Monitor All The Things! 
• Infrastructure monitoring 
– Nagios / Zabbix 
– Codahale, Actuator 
• Distributed Tracing 
– twitter.github.io/zipkin 
• Centralised Logging 
– logstash.net 
10/11/2014 @danielbryantuk
The ‘ELK’ Stack 
blog.comperiosearch.com/blog/2014/08/14/elk-one-vagrant-box 
10/11/2014 @danielbryantuk
“…but what should I graph?” 
10/11/2014 @danielbryantuk
10/11/2014 @danielbryantuk 
Phrase borrowed from Etsy!
10/11/2014 @danielbryantuk
Thanks For Listening 
• Massive thanks 
– OpenCredo (@OpenCredo) 
– notonthehighstreet.com 
– RecWorks & The LJC 
• Questions / comments? 
– daniel.bryant@opencredo.com 
– @danielbryantuk 
10/11/2014 @danielbryantuk
Ad

Recommended

PPTX
LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"
Daniel Bryant
 
PPTX
JavaOne 2014: Cloud Developer's DHARMA: Redefining 'done' for Cloud applications
Daniel Bryant
 
PPTX
LJC 05/14 "Cloud Developer's DHARMA"
Daniel Bryant
 
PPTX
LJCConf 2013 "Chuck Norris Doesn't Need DevOps"
Daniel Bryant
 
PDF
Haufe #msaday: "Building a Microservice Ecosystem"
Daniel Bryant
 
PDF
muCon 2016: "Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
PPTX
LJC 2015 "The Crafty Consultants Guide to DevOps"
Daniel Bryant
 
PPTX
LSCC 2014 "Crafting DevOps: Applying Software Craftsmanship to DevOps"
Daniel Bryant
 
PPTX
OReilly SACON 2016 "A Practical Guide for Continuous Delivery with Containers"
Daniel Bryant
 
PDF
The seven more deadly sins of microservices final
Haufe-Lexware GmbH & Co KG
 
PDF
The seven deadly sins of microservices
Haufe-Lexware GmbH & Co KG
 
PDF
vJUG24 2016 "Seven (More) Deadly Sins of Microservice"
Daniel Bryant
 
PDF
OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
PDF
LMSUG 2015 "The Business Behind Microservices: Organisational, Architectural ...
Daniel Bryant
 
PPTX
JavaOne 2016 "Java, Microservices, Cloud and Containers"
Daniel Bryant
 
PPTX
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
Daniel Bryant
 
PDF
Devoxx US 2017 "The Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
PDF
JAXDevOps 2017 "The Seven (More) Deadly Sins of Microservices
Daniel Bryant
 
PDF
Devoxx 2014 michael_neale
Michael Neale
 
PDF
SwisscomSoftwareDay 2016 "The Trials and Tribulations of Making Software Small"
Daniel Bryant
 
PPTX
JAX London 2016: "Empathy - The hidden ingredient of good software development?"
Daniel Bryant
 
PPT
Polyglottany Is Not A Sin
Eric Lubow
 
PPTX
DevoxxUK 2016: "DevOps: Microservices, containers, platforms, tooling... Oh y...
Daniel Bryant
 
PDF
CraftConf 2017 "Microservices: The Organisational and People Impact"
Daniel Bryant
 
PPTX
vJUG 2017 "Continuous Delivery with Java and Docker: The Good, the Bad, and t...
Daniel Bryant
 
PDF
#AATC2017: "Continuous Delivery with Containers: The Trials and Tribulations"
Daniel Bryant
 
PPTX
J1 2015 "Thinking Fast and Slow with Software Development"
Daniel Bryant
 
PDF
QCon NY 2016: "The Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
DOC
Gaurav dev ops (AWS, Linux, Automation-ansible, jenkins:CI and CD:Ansible)
Gaurav Srivastav
 
PPTX
MyHeritage backend group - build to scale
Ran Levy
 

More Related Content

What's hot (20)

PPTX
OReilly SACON 2016 "A Practical Guide for Continuous Delivery with Containers"
Daniel Bryant
 
PDF
The seven more deadly sins of microservices final
Haufe-Lexware GmbH & Co KG
 
PDF
The seven deadly sins of microservices
Haufe-Lexware GmbH & Co KG
 
PDF
vJUG24 2016 "Seven (More) Deadly Sins of Microservice"
Daniel Bryant
 
PDF
OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
PDF
LMSUG 2015 "The Business Behind Microservices: Organisational, Architectural ...
Daniel Bryant
 
PPTX
JavaOne 2016 "Java, Microservices, Cloud and Containers"
Daniel Bryant
 
PPTX
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
Daniel Bryant
 
PDF
Devoxx US 2017 "The Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
PDF
JAXDevOps 2017 "The Seven (More) Deadly Sins of Microservices
Daniel Bryant
 
PDF
Devoxx 2014 michael_neale
Michael Neale
 
PDF
SwisscomSoftwareDay 2016 "The Trials and Tribulations of Making Software Small"
Daniel Bryant
 
PPTX
JAX London 2016: "Empathy - The hidden ingredient of good software development?"
Daniel Bryant
 
PPT
Polyglottany Is Not A Sin
Eric Lubow
 
PPTX
DevoxxUK 2016: "DevOps: Microservices, containers, platforms, tooling... Oh y...
Daniel Bryant
 
PDF
CraftConf 2017 "Microservices: The Organisational and People Impact"
Daniel Bryant
 
PPTX
vJUG 2017 "Continuous Delivery with Java and Docker: The Good, the Bad, and t...
Daniel Bryant
 
PDF
#AATC2017: "Continuous Delivery with Containers: The Trials and Tribulations"
Daniel Bryant
 
PPTX
J1 2015 "Thinking Fast and Slow with Software Development"
Daniel Bryant
 
PDF
QCon NY 2016: "The Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
OReilly SACON 2016 "A Practical Guide for Continuous Delivery with Containers"
Daniel Bryant
 
The seven more deadly sins of microservices final
Haufe-Lexware GmbH & Co KG
 
The seven deadly sins of microservices
Haufe-Lexware GmbH & Co KG
 
vJUG24 2016 "Seven (More) Deadly Sins of Microservice"
Daniel Bryant
 
OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
LMSUG 2015 "The Business Behind Microservices: Organisational, Architectural ...
Daniel Bryant
 
JavaOne 2016 "Java, Microservices, Cloud and Containers"
Daniel Bryant
 
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
Daniel Bryant
 
Devoxx US 2017 "The Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
JAXDevOps 2017 "The Seven (More) Deadly Sins of Microservices
Daniel Bryant
 
Devoxx 2014 michael_neale
Michael Neale
 
SwisscomSoftwareDay 2016 "The Trials and Tribulations of Making Software Small"
Daniel Bryant
 
JAX London 2016: "Empathy - The hidden ingredient of good software development?"
Daniel Bryant
 
Polyglottany Is Not A Sin
Eric Lubow
 
DevoxxUK 2016: "DevOps: Microservices, containers, platforms, tooling... Oh y...
Daniel Bryant
 
CraftConf 2017 "Microservices: The Organisational and People Impact"
Daniel Bryant
 
vJUG 2017 "Continuous Delivery with Java and Docker: The Good, the Bad, and t...
Daniel Bryant
 
#AATC2017: "Continuous Delivery with Containers: The Trials and Tribulations"
Daniel Bryant
 
J1 2015 "Thinking Fast and Slow with Software Development"
Daniel Bryant
 
QCon NY 2016: "The Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 

Viewers also liked (20)

DOC
Gaurav dev ops (AWS, Linux, Automation-ansible, jenkins:CI and CD:Ansible)
Gaurav Srivastav
 
PPTX
MyHeritage backend group - build to scale
Ran Levy
 
PPTX
What does "monitoring" mean? (FOSDEM 2017)
Brian Brazil
 
PDF
Machine Learning & IT Service Intelligence for the Enterprise: The Future is ...
Precisely
 
PPTX
CloudStack EU user group - Trillian
ShapeBlue
 
PDF
Sunbrella Ottomans by Outdoor Elegance
OutdoorEleganceAus
 
PDF
Java standards in WCM
Paolo Mottadelli
 
PDF
Aws + Puppet = Dynamic Scale
Puppet
 
PDF
Streaming architecture with HDP & ELK
Alain Douangpraseuth
 
PPTX
Developing highly scalable applications with Symfony and RabbitMQ
Alexey Petrov
 
PPT
Jake Fox Pd. 5
LigScience2
 
PPTX
Python Pants Build System for Large Codebases
Angad Singh
 
PDF
Linux Malware Analysis
Cysinfo Cyber Security Community
 
PDF
Mohamed Ahmed Abdelkhalek
Mohamed A. Abdelkhalek
 
PDF
Chicago AWS user group meetup - May 2014 at Cohesive
AWS Chicago
 
PDF
IM World presentation from Chris Swan: Application centric – how the cloud ha...
Cohesive Networks
 
PDF
Business selectors
benwaine
 
PPTX
NSM (Network Security Monitoring) - Tecland Chapeco
Rodrigo Montoro
 
PPTX
Apache Ambari: Managing Hadoop and YARN
Hortonworks
 
PDF
Bridging the Gap: Connecting AWS and Kafka
Pengfei (Jason) Li
 
Gaurav dev ops (AWS, Linux, Automation-ansible, jenkins:CI and CD:Ansible)
Gaurav Srivastav
 
MyHeritage backend group - build to scale
Ran Levy
 
What does "monitoring" mean? (FOSDEM 2017)
Brian Brazil
 
Machine Learning & IT Service Intelligence for the Enterprise: The Future is ...
Precisely
 
CloudStack EU user group - Trillian
ShapeBlue
 
Sunbrella Ottomans by Outdoor Elegance
OutdoorEleganceAus
 
Java standards in WCM
Paolo Mottadelli
 
Aws + Puppet = Dynamic Scale
Puppet
 
Streaming architecture with HDP & ELK
Alain Douangpraseuth
 
Developing highly scalable applications with Symfony and RabbitMQ
Alexey Petrov
 
Jake Fox Pd. 5
LigScience2
 
Python Pants Build System for Large Codebases
Angad Singh
 
Linux Malware Analysis
Cysinfo Cyber Security Community
 
Mohamed Ahmed Abdelkhalek
Mohamed A. Abdelkhalek
 
Chicago AWS user group meetup - May 2014 at Cohesive
AWS Chicago
 
IM World presentation from Chris Swan: Application centric – how the cloud ha...
Cohesive Networks
 
Business selectors
benwaine
 
NSM (Network Security Monitoring) - Tecland Chapeco
Rodrigo Montoro
 
Apache Ambari: Managing Hadoop and YARN
Hortonworks
 
Bridging the Gap: Connecting AWS and Kafka
Pengfei (Jason) Li
 
Ad

Similar to LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't Need DevOps" (20)

PPTX
JAX London 2014 "Building Java Applications for the Cloud: The DHARMA princip...
Daniel Bryant
 
PPTX
muCon 2014 "Building Java Microservices for the Cloud"
Daniel Bryant
 
PDF
Building effective Java applications for the Cloud: The DHARMA principles - D...
JAXLondon2014
 
PPTX
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
Daniel Bryant
 
PPTX
O'Reilly SACON NY 2018 "Continuous Delivery Patterns for Contemporary Archite...
Daniel Bryant
 
PPTX
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
JAXLondon_Conference
 
PPTX
JavaOne 2015 Devops and the Darkside CON6447
Steve Poole
 
PDF
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"
Daniel Bryant
 
PDF
OOP/MM 2017: "Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
PDF
microXchg 2017: "Microservices: The People and Organisational Impact"
Daniel Bryant
 
PDF
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
Redis Labs
 
PDF
Microservice Summit 2016 "Microservices: The Organisational and People Impact"
Daniel Bryant
 
PDF
Microservices: The Organizational and People Impact
Ambassador Labs
 
PDF
AllDayDevOps: "Microservices: The People and Organisational Impact"
Daniel Bryant
 
PPTX
jSpring 2018 "Continuous Delivery Patterns for Modern Architectures and Java"
Daniel Bryant
 
PDF
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
PDF
Micro Manchester Meetup: "The Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
PPTX
Microservices Journey Fall 2017
Christian Posta
 
PDF
Sidecars and a Microservices Mesh
Red Hat Developers
 
PDF
Get Loose! Microservices and Loosely Coupled Architectures
DevOps.com
 
JAX London 2014 "Building Java Applications for the Cloud: The DHARMA princip...
Daniel Bryant
 
muCon 2014 "Building Java Microservices for the Cloud"
Daniel Bryant
 
Building effective Java applications for the Cloud: The DHARMA principles - D...
JAXLondon2014
 
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
Daniel Bryant
 
O'Reilly SACON NY 2018 "Continuous Delivery Patterns for Contemporary Archite...
Daniel Bryant
 
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
JAXLondon_Conference
 
JavaOne 2015 Devops and the Darkside CON6447
Steve Poole
 
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"
Daniel Bryant
 
OOP/MM 2017: "Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
microXchg 2017: "Microservices: The People and Organisational Impact"
Daniel Bryant
 
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
Redis Labs
 
Microservice Summit 2016 "Microservices: The Organisational and People Impact"
Daniel Bryant
 
Microservices: The Organizational and People Impact
Ambassador Labs
 
AllDayDevOps: "Microservices: The People and Organisational Impact"
Daniel Bryant
 
jSpring 2018 "Continuous Delivery Patterns for Modern Architectures and Java"
Daniel Bryant
 
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
Micro Manchester Meetup: "The Seven (More) Deadly Sins of Microservices"
Daniel Bryant
 
Microservices Journey Fall 2017
Christian Posta
 
Sidecars and a Microservices Mesh
Red Hat Developers
 
Get Loose! Microservices and Loosely Coupled Architectures
DevOps.com
 
Ad

More from Daniel Bryant (20)

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

Recently uploaded (20)

PPTX
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
PDF
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
PDF
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
DOCX
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
PDF
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
PPTX
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC
 
PPTX
Security Tips for Enterprise Azure Solutions
Michele Leroux Bustamante
 
PDF
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Priyanka Aash
 
PDF
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
 
PDF
10 Key Challenges for AI within the EU Data Protection Framework.pdf
Priyanka Aash
 
PDF
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
Priyanka Aash
 
PDF
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
PPTX
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
Fwdays
 
PDF
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Ravi Tamada
 
PDF
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
PDF
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
PDF
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
PDF
Python Conference Singapore - 19 Jun 2025
ninefyi
 
PDF
From Manual to Auto Searching- FME in the Driver's Seat
Safe Software
 
PDF
The Future of Product Management in AI ERA.pdf
Alyona Owens
 
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC
 
Security Tips for Enterprise Azure Solutions
Michele Leroux Bustamante
 
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Priyanka Aash
 
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
 
10 Key Challenges for AI within the EU Data Protection Framework.pdf
Priyanka Aash
 
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
Priyanka Aash
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
Fwdays
 
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Ravi Tamada
 
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
Python Conference Singapore - 19 Jun 2025
ninefyi
 
From Manual to Auto Searching- FME in the Driver's Seat
Safe Software
 
The Future of Product Management in AI ERA.pdf
Alyona Owens
 

LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't Need DevOps"

  • 1. Building Java (micro)services for the Cloud The DHARMA principles && Chuck Norris Doesn’t Need DevOps… but Java Developers might benefit Daniel Bryant Principal Consultant, Open Credo [email protected] @danielbryantuk
  • 2. Who Am I? • Principal Consultant at OpenCredo • LJC Associate  Agile transformations  DevOps, Cloud and Microservices  Big Data • Adopt OpenJDK and JSR 10/11/2014 @danielbryantuk
  • 3. The Current Industry Wish List… • Service-Oriented Architecture • Cloud-based deployments • DevOps Culture 10/11/2014 @danielbryantuk
  • 4. The Current Industry Wish List… • Service-Oriented Architecture – muCon 2014 (coming soon via skillsmatter.com) • Cloud-based deployments – JavaOne 2014 (coming soon via parleys.com) • DevOps Culture – Devoxx UK talk (bit.ly/1BylnZb) – Previous LJC Event (bit.ly/1elVPJz) 10/11/2014 @danielbryantuk
  • 5. So, what’s all this I hear about small services?… 10/11/2014 @danielbryantuk
  • 6. “Microservices”aka • “SOA done right” • “SRP” services – “Java, The Unix Way” (bit.ly/1cX8VsS) • “Small” codebase services – 1000 LOC… 100… 10…? • “12 Factor apps” (12factor.net) • My personal opinion… 10/11/2014 @danielbryantuk
  • 7. “Can I fit the service in my head?” 10/11/2014 @danielbryantuk
  • 8. Moving to the Cloud – common problems… 10/11/2014 @danielbryantuk
  • 9. Not respecting the underlying environment 10/11/2014 @danielbryantuk
  • 10. Lack of application/platform monitoring… 10/11/2014 @danielbryantuk
  • 11. Bizarre failure modes… 10/11/2014 @danielbryantuk
  • 12. Difficulty in understanding the new architecture 10/11/2014 @danielbryantuk
  • 13. Not testing in the Cloud… (hint: here be dragons!) 10/11/2014 @danielbryantuk
  • 14. We’ve created the “Cloud DHARMA Principles” to act as a checklist when building Cloud apps 10/11/2014 @danielbryantuk
  • 15. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 10/11/2014 @danielbryantuk
  • 16. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 10/11/2014 @danielbryantuk
  • 17. API Docs with Swagger 10/11/2014 @danielbryantuk helloreverb.com/developers/swagger
  • 18. Create a PACT 10/11/2014 @danielbryantuk github.com/DiUS/pact-jvm
  • 19. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 10/11/2014 @danielbryantuk
  • 20. High Cohesion / Loose Coupling (all the way down…) • Code • Architecture – Components – Services • Public API – PayPal (bit.ly/1hnZNly) 10/11/2014 @danielbryantuk
  • 21. Microservices: Architectural Silver Bullet? • Enforce service boundaries – Bounded contexts – Domain-Driven Design • Separation of Concerns – Encapsulate what varies – Easier to scale/tune independently • Is this a free-lunch? (bit.ly/1gSw4L7) 10/11/2014 @danielbryantuk
  • 22. No!! It’s all too easy to… 1) Create a distributed monolith 2) Push complexity into orchestration www.codingthearchitecture.com/2014/07/06/distributed_big_balls_of_mud.html 10/11/2014 @danielbryantuk
  • 24. Sneak-peak: 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? 10/11/2014 @danielbryantuk
  • 25. DZone’s Enterprise Integration Guide 10/11/2014 @danielbryantuk www.dzone.com/page/research
  • 26. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 10/11/2014 @danielbryantuk
  • 27. Thou Shalt Know thy Cloud… “Everything fails all the time [in the cloud]” Werner Vogels, CTO, Amazon.com • Everything is ephemeral • Volatility • Noisy (virtual) neighbours – bit.ly/1w1HQy7 10/11/2014 @danielbryantuk
  • 28. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 10/11/2014 @danielbryantuk
  • 29. Antifragile • The opposite of fragile? – Robust… – Antifragile… • Netflix are best-in-class – bit.ly/1gs5n3q • System must be robust first! 10/11/2014 @danielbryantuk
  • 30. Design for Failure • Distributed Computing Principles – ‘For young bloods’ (bit.ly/1pKVepz) – Eight Fallacies… (bit.ly/1zCBet7) • Design patterns – Timeouts / retries – Bulkheads / circuit-breakers 10/11/2014 @danielbryantuk
  • 31. Retries 10/11/2014 @danielbryantuk github.com/rholder/guava-retrying
  • 32. Circuit-breaker/bulkhead 10/11/2014 @danielbryantuk github.com/Netflix/Hystrix projects.spring.io/spring-cloud/
  • 33. Antifragile Patterns: Elastic Scaling Stateless components Distributed data stores / caches 10/11/2014 @danielbryantuk
  • 34. Microservices in the Cloud… Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly Antifragile 10/11/2014 @danielbryantuk
  • 35. and now to DevOps… …or as the recruiters like to say “DeeVoips”, “DevAnOps” and “Dev-Oops” 10/11/2014 @danielbryantuk
  • 36. What’s in a Name? • “Development / Operations” • Increasing cohesion between: – Business – Development – Quality Assurance – Operations “Bu-Dev-Qa-Ops”? 10/11/2014 @danielbryantuk
  • 37. So, What’s Chuck Norris Doing Here? 10/11/2014 @danielbryantuk
  • 38. Chuck Norris doesn’t need DevOps… …as a one-man army he codes with one hand, tests with the other and deploys with his beard The rest of us… …work in teams to develop software 10/11/2014 @danielbryantuk
  • 39. Software Development Teams • Developers • Quality Assurance • Operations 10/11/2014 @danielbryantuk
  • 40. Software Development Teams • Developers • Quality Assurance • Operations 10/11/2014 @danielbryantuk
  • 42. Software Development Teams • Developers • Quality Assurance • Operations 10/11/2014 @danielbryantuk
  • 44. Software Development Teams • Developers • Quality Assurance • Operations 10/11/2014 @danielbryantuk
  • 46. This silo mentality has to stop 10/11/2014 @danielbryantuk
  • 47. Culture is Vital • Culture drives behaviour, drives culture… – “Communication, simplicity, feedback, courage” – Everyone is responsible for delivery – Continuous experimentation and learning • Not easy to change culture – The hardest part of DevOps… – …but you will learn new things 10/11/2014 @danielbryantuk
  • 48. Changing Culture • Create an effective team… • “Habits of highly effective technical teams” – Martijn Verburg (bit.ly/1aF9SnK) • “Patterns of Effective Teams” – Dan North (vimeo.com/68226771) 10/11/2014 @danielbryantuk
  • 49. Chuck Norris doesn’t do QA… …Chuck Norris can test an entire application with a single assert (and get 110% code coverage) The rest of us… …need high-quality automated QA 10/11/2014 @danielbryantuk
  • 50. Automating QA • Intra-component integration testing – Utilise embedded datastore/middleware – Cucumber (via ports/adapters/API?) • Fault-tolerance – Chris Batey’s Skillscast (bit.ly/1tU6wZj) – WireMock + Saboteur (wiremock.org) – “Scassandra” (github.com/scassandra) 10/11/2014 @danielbryantuk
  • 51. Automating QA • Inter-component integration testing – The hardest part of SOA… – Consider ‘synthetic txns’ (active monitoring) • Service virtualisation – Mountebank (www.mbtest.org) – Mock external services (e.g. Spring profiles) 10/11/2014 @danielbryantuk
  • 52. All arrays Chuck Norris creates are of infinite size… …as Chuck Norris knows no bounds The rest of us… …should manage our resources and cultivate ‘mechanical sympathy’ 10/11/2014 @danielbryantuk
  • 53. Cultivating “Mechanical Sympathy” • Virtualisation – Tech Target (bit.ly/1kDVqyG) • Networking – ‘Unix and Linux System Administration Handbook’ – AWS docs aws.amazon.com/documentation • Thinking/Acting Operationally – You write it, you run it… (“dev on call”) 10/11/2014 @danielbryantuk
  • 54. When Chuck Norris throws Exceptions… …everybody knows about it because they land outside of the data center The rest of us… …should log all errors (and other vital information for diagnostic purposes) 10/11/2014 @danielbryantuk
  • 55. Monitor All The Things! • Infrastructure monitoring – Nagios / Zabbix – Codahale, Actuator • Distributed Tracing – twitter.github.io/zipkin • Centralised Logging – logstash.net 10/11/2014 @danielbryantuk
  • 56. The ‘ELK’ Stack blog.comperiosearch.com/blog/2014/08/14/elk-one-vagrant-box 10/11/2014 @danielbryantuk
  • 57. “…but what should I graph?” 10/11/2014 @danielbryantuk
  • 58. 10/11/2014 @danielbryantuk Phrase borrowed from Etsy!
  • 60. Thanks For Listening • Massive thanks – OpenCredo (@OpenCredo) – notonthehighstreet.com – RecWorks & The LJC • Questions / comments? – [email protected] – @danielbryantuk 10/11/2014 @danielbryantuk

Editor's Notes

  • #48: organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations Focus on flow: translate business ideas to a working service efficiently by examining how fast artifacts and work flows through the development lifecycle Amplify feedback loops: quickly learn about the system by seeing through fast feedback on what happens to results of changes
  • #51: James Gough’s “The benefits are more than just the tests” Mash Badar’s “TDD at Scale” (slidesha.re/19P7kzS)