SlideShare a Scribd company logo
1 of 63
Download to read offline
Building 
Java 
applica.ons 
for 
the 
Cloud: 
The 
DHARMA 
principles 
Daniel 
Bryant 
Principal 
Consultant, 
Open 
Credo 
daniel.bryant@opencredo.com 
@danielbryantuk
What 
to 
expect 
• Problems 
when 
developing 
for 
the 
Cloud 
– “LiG 
and 
shiG” 
– Smashing 
the 
monolith 
– Greenfield 
(“Cloud 
na.ve”) 
• Some 
sugges.ons 
on 
where 
to 
focus 
efforts 
– Not 
specific 
plaPorm/framework 
reviews 
• Tools 
and 
techniques 
• Lots 
of 
informa.on… 
(slides 
will 
be 
available) 
14/10/2014 
@danielbryantuk
Who 
Am 
I? 
• LJC 
• Principal 
Associate 
• Adopt 
Consultant 
at 
OpenCredo 
ü Agile 
transforma.ons 
ü DevOps 
ü Microservices 
and 
Cloud 
OpenJDK 
and 
JSR 
14/10/2014 
@danielbryantuk
The 
Current 
Industry 
Wish 
List… 
• Service-­‐Oriented 
Architecture 
• Cloud-­‐based 
deployments 
• DevOps 
Culture 
14/10/2014 
@danielbryantuk
The 
Current 
Industry 
Wish 
List… 
• Service-­‐Oriented 
Architecture 
– Twi`er’s 
Story 
(bit.ly/1j1WbmI) 
• Cloud-­‐based 
deployments 
– Today! 
• DevOps 
Culture 
– Devoxx 
UK 
talk 
(bit.ly/1BylnZb) 
– Previous 
LJC 
Event 
(bit.ly/1elVPJz) 
14/10/2014 
@danielbryantuk
Common 
Cloud 
Problems 
TL;DR… 
14/10/2014 
@danielbryantuk
Not 
respec<ng 
the 
underlying 
environment 
14/10/2014 
@danielbryantuk
Lack 
of 
applica<on/plaDorm 
monitoring… 
14/10/2014 
@danielbryantuk
Bizarre 
failure 
modes… 
14/10/2014 
@danielbryantuk
Difficulty 
in 
understanding 
the 
new 
architecture 
14/10/2014 
@danielbryantuk
Confusion 
over 
environment 
provisioning 
and 
config 
14/10/2014 
@danielbryantuk
Not 
tes<ng 
in 
the 
Cloud… 
(hint: 
here 
be 
dragons!) 
14/10/2014 
@danielbryantuk
We’ve 
created 
the 
“Cloud 
DHARMA 
Principles” 
to 
act 
as 
a 
checklist 
when 
building 
Cloud 
apps 
14/10/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) 
14/10/2014 
@danielbryantuk
Documented 
(just 
enough) 
Highly 
cohesive/loosely 
coupled 
(all 
the 
way 
down) 
Automated 
from 
commit 
to 
Cloud 
Resource 
aware 
Monitored 
thoroughly 
An.fragile 
14/10/2014 
@danielbryantuk
Documented 
(just 
enough) 
Highly 
cohesive/loosely 
coupled 
(all 
the 
way 
down) 
Automated 
from 
commit 
to 
Cloud 
Resource 
aware 
Monitored 
thoroughly 
An.fragile 
14/10/2014 
@danielbryantuk
14/10/2014 
@danielbryantuk
Documenta.on 
(just 
enough) 
• Provide 
a 
map 
for 
developers 
• Component 
purpose 
(and 
contract) 
• Ini.alisa.on 
instruc.ons 
(mocks/stubs) 
• Highlights 
areas 
of 
opera.onal 
risk 
14/10/2014 
@danielbryantuk
Simon 
Brown’s 
C4 
Model 
14/10/2014 
@danielbryantuk 
www.codingthearchitecture.com
14/10/2014 
@danielbryantuk
1144//1100/2/201041 
4 
@@ddaanniieellbbrryyaanntutuk 
k
API 
Docs 
with 
Swagger 
14/10/2014 
@danielbryantuk 
helloreverb.com/developers/swagger
Create 
a 
PACT 
14/10/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 
An.fragile 
14/10/2014 
@danielbryantuk
High 
Cohesion 
/ 
Loose 
Coupling 
(all 
the 
way 
down…) 
• Code 
• Architecture 
– Components 
– Services 
• Public 
API 
– PayPal 
(bit.ly/1hnZNly) 
14/10/2014 
@danielbryantuk
Smashing 
the 
Monolith… 
• Business 
func.onality 
-­‐“Cart 
Service” 
• Technology 
chunk 
-­‐ 
“Email 
Service” 
• Ver.cal 
Slice 
– “Registra.on” 
(Groupon: 
vimeo.com/105880150) 
• Horizontal 
Slice 
– “User 
Repo” 
(Microservices: 
oreil.ly/1pp6qmx) 
14/10/2014 
@danielbryantuk
Microservices 
• Probably 
won’t 
catch 
on… 
;-­‐) 
14/10/2014 
@danielbryantuk
Twelve 
Factor 
Apps 
14/10/2014 
@danielbryantuk 
h`p://12factor.net/
Documented 
(just 
enough) 
Highly 
cohesive/loosely 
coupled 
(all 
the 
way 
down) 
Automated 
from 
commit 
to 
Cloud 
Resource 
aware 
Monitored 
thoroughly 
An.fragile 
14/10/2014 
@danielbryantuk
Automated 
from 
Commit 
to 
Cloud 
• Con.nuous 
Integra.on 
• Con.nuous 
Deployment 
• Con.nuous 
Delivery 
14/10/2014 
@danielbryantuk
Our 
Build 
Pipeline 
Jenkins, 
with 
plugins… 
• Build 
Pipeline 
– wiki.jenkins-­‐ci.org/display/JENKINS/Build+Pipeline+Plugin 
• Parameterized 
build 
– wiki.jenkins-­‐ci.org/display/JENKINS/Parameterized+Build 
• Promoted 
Builds 
Plugin 
– wiki.jenkins-­‐ci.org/display/JENKINS/Promoted+Builds+Plugin 
14/10/2014 
@danielbryantuk
Our 
Build 
Pipeline 
• Component 
Build 
– Compile 
– Unit 
Tests 
(surefire) 
– Integra.on 
Tests 
(failsafe) 
• Deployment 
onto 
QA 
Cloud 
– Python 
Scripts 
+ 
Chef 
to 
provision 
– Verify 
success 
using 
Python 
– Serverspec 
serverspec.org 
14/10/2014 
@danielbryantuk
Our 
Build 
Pipeline 
• Acceptance 
Tests 
– Cucumber 
(and 
Selenium) 
• Performance 
Tests 
– Jmeter 
+ 
Jenkins 
performance 
plugin 
– Make 
sure 
environment 
is 
realis.c!! 
• Live 
Deployment? 
14/10/2014 
@danielbryantuk
Automa.ng 
QA 
• Intra-­‐component 
integra.on 
tes.ng 
– U.lise 
embedded 
datastore/middleware 
– “Scassandra” 
(github.com/scassandra) 
– Service 
virtualisa.on 
(www.mbtest.org) 
• Inter-­‐component 
integra.on 
tes.ng 
– The 
hardest 
part 
of 
SOA… 
– Consider 
‘synthe.c 
txns’ 
(ac.ve 
monitoring) 
14/10/2014 
@danielbryantuk
Infrastructure: 
Say 
No 
To 
Snowflakes! 
• Automate 
all 
provisioning 
(store 
in 
SCM) 
• Fry... 
– Chef, 
Puppet, 
SaltStack, 
Ansible 
– Bash, 
Python 
(Fabric) 
– Vendor 
APIs 
• …or 
bake? 
– Packer.io 
– NePlix 
Aminator 
14/10/2014 
@danielbryantuk
Infrastructure: 
Say 
No 
To 
Snowflakes! 
• Doing 
“Proper 
Development” 
– Gareth 
Rushgrove 
at 
CraG 
Conf 
(bit.ly/1njuc49) 
– Chef 
Conf 
(www.youtube.com/user/getchef) 
• Local 
tooling/tes.ng 
– Vagrant 
(www.vagrantup.com) 
– Docker 
(www.docker.io) 
14/10/2014 
@danielbryantuk
Configuring 
the 
Cloud 
• Bundle 
config 
with 
app 
– Upload 
new 
config 
file 
– Re-­‐deploy 
en.re 
app 
(easier 
with 
Docker?) 
• Store 
externally 
– Zookeeper 
& 
Curator 
curator.apache.org 
– NePlix 
Archaius 
github.com/NePlix/archaius 
– etcd 
github.com/coreos/etcd 
– Consul.io 
www.consul.io 
14/10/2014 
@danielbryantuk
Documented 
(just 
enough) 
Highly 
cohesive/loosely 
coupled 
(all 
the 
way 
down) 
Automated 
from 
commit 
to 
Cloud 
Resource 
aware 
Monitored 
thoroughly 
An.fragile 
14/10/2014 
@danielbryantuk
Deployment 
PlaPorm: 
What 
you’ve 
got… 
14/10/2014 
@danielbryantuk
What 
you 
think 
you 
want… 
14/10/2014 
@danielbryantuk
What 
you 
actually 
get… 
Fact: 
9 
out 
of 
10 
cheetahs 
prefer 
the 
taste 
of 
an 
Ops 
team 
over 
<nned 
food 
14/10/2014 
@danielbryantuk
Thou 
Shalt 
Know 
thy 
Cloud… 
• AWS 
“Magne.c” 
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 
Sequen.al 
Write 
to 
SSD 
Reference 
for 
Mac 
sta.s.cs: 
bit.ly/1GJZH8 
14/10/2014 
@danielbryantuk
Thou 
Shalt 
Know 
they 
Cloud… 
“Everything 
fails 
all 
the 
<me 
[in 
the 
cloud]” 
Werner 
Vogels, 
CTO, 
Amazon.com 
• Everything 
is 
ephemeral 
• Vola.lity 
• Noisy 
(virtual) 
neighbours 
– bit.ly/1w1HQy7 
14/10/2014 
@danielbryantuk
Thinking/Ac.ng 
Opera.onally 
• Cul.vate 
“Mechanical 
Sympathy” 
• Virtualisa.on 
– Tech 
Target 
(bit.ly/1kDVqyG) 
• Networking 
– ‘Unix 
and 
Linux 
System 
Administra.on 
Handbook’ 
– aws.amazon.com/documenta.on 
14/10/2014 
@danielbryantuk
Thinking/Ac.ng 
Opera.onally 
• Learn 
Linux 
fundamentals 
• Diagnos.c 
skills 
– top, 
netstat, 
vmstat, 
tcpdump 
– Java 
u.ls: 
jps, 
jstat, 
jmap, 
jhat 
– “DevOps 
Troubleshoo.ng” 
by 
K. 
Rankin 
14/10/2014 
@danielbryantuk
Documented 
(just 
enough) 
Highly 
cohesive/loosely 
coupled 
(all 
the 
way 
down) 
Automated 
from 
commit 
to 
Cloud 
Resource 
aware 
Monitored 
thoroughly 
An.fragile 
14/10/2014 
@danielbryantuk
Monitor 
All 
The 
Things! 
• Infrastructure 
monitoring 
– Nagios 
/ 
Zabbix 
– AppDynamics 
• Distributed 
Tracing 
– twi`er.github.io/zipkin 
• Centralised 
Logging 
– logstash.net 
14/10/2014 
@danielbryantuk
Component 
Metrics 
• Dropwizard’s 
Metrics 
– metrics.codahale.com 
– Spring 
Boot 
(bit.ly/1rGo76V) 
• NePlix’s 
Servo 
– github.com/NePlix/servo 
• Etsy’s 
StatsD 
– github.com/etsy/statsd/wiki 
14/10/2014 
@danielbryantuk
Health 
Checks 
14/10/2014 
@danielbryantuk
Gauges, 
Counters, 
Meters, 
Timers… 
14/10/2014 
@danielbryantuk
Graph 
It! 
14/10/2014 
@danielbryantuk 
dashing.io
14/10/2014 
@danielbryantuk 
Phrase 
borrowed 
from 
Etsy!
14/10/2014 
@danielbryantuk
Documented 
(just 
enough) 
Highly 
cohesive/loosely 
coupled 
(all 
the 
way 
down) 
Automated 
from 
commit 
to 
Cloud 
Resource 
aware 
Monitored 
thoroughly 
An.fragile 
14/10/2014 
@danielbryantuk
An.fragile 
• The 
opposite 
of 
fragile? 
– Robust… 
– An.fragile… 
• NePlix 
are 
best-­‐in-­‐class 
– bit.ly/1gs5n3q 
• System 
must 
be 
robust 
first! 
14/10/2014 
@danielbryantuk
Design 
for 
Failure 
• Distributed 
Compu.ng 
Principles 
– ‘For 
young 
bloods’ 
(bit.ly/1pKVepz) 
– NePlix 
(bit.ly/1h5GMid) 
• Design 
pa`erns 
– Timeouts 
/ 
retries 
– Bulkheads 
/ 
circuit-­‐breakers 
14/10/2014 
@danielbryantuk
Retries 
14/10/2014 
@danielbryantuk 
github.com/rholder/guava-­‐retrying
Circuit-­‐breaker 
14/10/2014 
@danielbryantuk 
github.com/NePlix/Hystrix 
github.com/NePlix/Hystrix/tree/master/hystrix-­‐contrib/hystrix-­‐javanica 
java.dzone.com/ar.cles/hystrix-­‐and-­‐spring-­‐boot 
projects.spring.io/spring-­‐cloud/
An.fragile 
Pa`erns: 
Async 
FTW 
Asynchronous 
Communica.on 
-­‐ 
queues, 
pub/sub 
Command 
Query 
Responsibility 
Segrega.on 
(CQRS) 
Event 
Sourcing 
(ES) 
mar.nfowler.com/bliki/CQRS.html 
14/10/2014 
@danielbryantuk
An.fragile 
Pa`erns: 
Respect 
the 
CAP 
Eventual 
consistency 
(ACID 
vs 
BASE) 
Clever 
caching 
(soG-­‐state) 
en.wikipedia.org/wiki/CAP_theorem 
cloudshankar.blogspot.co.uk/2013/05/eventual-­‐consistency.html 
www.dataversity.net/acid-­‐vs-­‐base-­‐the-­‐shiGing-­‐ph-­‐of-­‐database-­‐transac.on-­‐processing/ 
14/10/2014 
@danielbryantuk
An.fragile 
Pa`erns: 
Elas.c 
Scaling 
Stateless 
components 
Distributed 
data 
stores 
/ 
caches 
14/10/2014 
@danielbryantuk
So, 
Cloud 
Apps 
are 
‘done’ 
when… 
Documented 
(just 
enough) 
Highly 
cohesive/loosely 
coupled 
(all 
the 
way 
down) 
Automated 
from 
commit 
to 
Cloud 
Resource 
aware 
Monitored 
thoroughly 
An.fragile 
14/10/2014 
@danielbryantuk
Thanks 
For 
Listening 
• Massive 
thanks 
to 
all 
the 
OpenCredo 
team! 
• Ques.ons 
/ 
comments? 
– daniel.bryant@opencredo.com 
– @danielbryantuk 
14/10/2014 
@danielbryantuk

More Related Content

Similar to Building effective Java applications for the Cloud: The DHARMA principles - Daniel Bryant

JAX London 2014 "Building Java Applications for the Cloud: The DHARMA princip...
JAX London 2014 "Building Java Applications for the Cloud: The DHARMA princip...JAX London 2014 "Building Java Applications for the Cloud: The DHARMA princip...
JAX London 2014 "Building Java Applications for the Cloud: The DHARMA princip...Daniel Bryant
 
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
 
Joomla Continuous Delivery with Docker
Joomla Continuous Delivery with DockerJoomla Continuous Delivery with Docker
Joomla Continuous Delivery with DockerJirayut Nimsaeng
 
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"Daniel Bryant
 
muCon 2014 "Building Java Microservices for the Cloud"
muCon 2014 "Building Java Microservices for the Cloud"muCon 2014 "Building Java Microservices for the Cloud"
muCon 2014 "Building Java Microservices for the Cloud"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
 
OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"
OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"
OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"Daniel Bryant
 
Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...
Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...
Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...Daniel Bryant
 
muCon 2016: "Seven (More) Deadly Sins of Microservices"
muCon 2016: "Seven (More) Deadly Sins of Microservices"muCon 2016: "Seven (More) Deadly Sins of Microservices"
muCon 2016: "Seven (More) Deadly Sins of Microservices"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
 
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...Codemotion
 
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
 
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
 
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...Daniel Bryant
 
Moby Summit introduction
Moby Summit introductionMoby Summit introduction
Moby Summit introductionMoby Project
 
StackEngine Problem Space Demo
StackEngine Problem Space DemoStackEngine Problem Space Demo
StackEngine Problem Space DemoBoyd Hemphill
 
vJUG 2017 "Continuous Delivery with Java and Docker: The Good, the Bad, and t...
vJUG 2017 "Continuous Delivery with Java and Docker: The Good, the Bad, and t...vJUG 2017 "Continuous Delivery with Java and Docker: The Good, the Bad, and t...
vJUG 2017 "Continuous Delivery with Java and Docker: The Good, the Bad, and t...Daniel Bryant
 
DSD-INT 2014 - Delft-FEWS Users Meeting - Recent developments in FEWS, Gerben...
DSD-INT 2014 - Delft-FEWS Users Meeting - Recent developments in FEWS, Gerben...DSD-INT 2014 - Delft-FEWS Users Meeting - Recent developments in FEWS, Gerben...
DSD-INT 2014 - Delft-FEWS Users Meeting - Recent developments in FEWS, Gerben...Deltares
 
Mark Hughes Annual Seminar Presentation on Open Source
Mark Hughes Annual Seminar Presentation on Open Source Mark Hughes Annual Seminar Presentation on Open Source
Mark Hughes Annual Seminar Presentation on Open Source Tracy Kent
 
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
 

Similar to Building effective Java applications for the Cloud: The DHARMA principles - Daniel Bryant (20)

JAX London 2014 "Building Java Applications for the Cloud: The DHARMA princip...
JAX London 2014 "Building Java Applications for the Cloud: The DHARMA princip...JAX London 2014 "Building Java Applications for the Cloud: The DHARMA princip...
JAX London 2014 "Building Java Applications for the Cloud: The DHARMA princip...
 
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...
 
Joomla Continuous Delivery with Docker
Joomla Continuous Delivery with DockerJoomla Continuous Delivery with Docker
Joomla Continuous Delivery with Docker
 
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"
 
muCon 2014 "Building Java Microservices for the Cloud"
muCon 2014 "Building Java Microservices for the Cloud"muCon 2014 "Building Java Microservices for the Cloud"
muCon 2014 "Building Java Microservices for the Cloud"
 
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"
 
OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"
OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"
OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"
 
Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...
Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...
Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...
 
muCon 2016: "Seven (More) Deadly Sins of Microservices"
muCon 2016: "Seven (More) Deadly Sins of Microservices"muCon 2016: "Seven (More) Deadly Sins of Microservices"
muCon 2016: "Seven (More) Deadly Sins of Microservices"
 
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"
 
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
 
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
 
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"
 
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
 
Moby Summit introduction
Moby Summit introductionMoby Summit introduction
Moby Summit introduction
 
StackEngine Problem Space Demo
StackEngine Problem Space DemoStackEngine Problem Space Demo
StackEngine Problem Space Demo
 
vJUG 2017 "Continuous Delivery with Java and Docker: The Good, the Bad, and t...
vJUG 2017 "Continuous Delivery with Java and Docker: The Good, the Bad, and t...vJUG 2017 "Continuous Delivery with Java and Docker: The Good, the Bad, and t...
vJUG 2017 "Continuous Delivery with Java and Docker: The Good, the Bad, and t...
 
DSD-INT 2014 - Delft-FEWS Users Meeting - Recent developments in FEWS, Gerben...
DSD-INT 2014 - Delft-FEWS Users Meeting - Recent developments in FEWS, Gerben...DSD-INT 2014 - Delft-FEWS Users Meeting - Recent developments in FEWS, Gerben...
DSD-INT 2014 - Delft-FEWS Users Meeting - Recent developments in FEWS, Gerben...
 
Mark Hughes Annual Seminar Presentation on Open Source
Mark Hughes Annual Seminar Presentation on Open Source Mark Hughes Annual Seminar Presentation on Open Source
Mark Hughes Annual Seminar Presentation on Open Source
 
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"
 

More from JAXLondon2014

GridGain 6.0: Open Source In-Memory Computing Platform - Nikita Ivanov
GridGain 6.0: Open Source In-Memory Computing Platform - Nikita IvanovGridGain 6.0: Open Source In-Memory Computing Platform - Nikita Ivanov
GridGain 6.0: Open Source In-Memory Computing Platform - Nikita IvanovJAXLondon2014
 
Performance Metrics for your Delivery Pipeline - Wolfgang Gottesheim
Performance Metrics for your Delivery Pipeline - Wolfgang GottesheimPerformance Metrics for your Delivery Pipeline - Wolfgang Gottesheim
Performance Metrics for your Delivery Pipeline - Wolfgang GottesheimJAXLondon2014
 
How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...
How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...
How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...JAXLondon2014
 
Conditional Logging Considered Harmful - Sean Reilly
Conditional Logging Considered Harmful - Sean ReillyConditional Logging Considered Harmful - Sean Reilly
Conditional Logging Considered Harmful - Sean ReillyJAXLondon2014
 
Finding your Way in the Midst of the NoSQL Haze - Abdelmonaim Remani
Finding your Way in the Midst of the NoSQL Haze - Abdelmonaim RemaniFinding your Way in the Midst of the NoSQL Haze - Abdelmonaim Remani
Finding your Way in the Midst of the NoSQL Haze - Abdelmonaim RemaniJAXLondon2014
 
API Management - a hands on workshop - Paul Fremantle
API Management - a hands on workshop - Paul FremantleAPI Management - a hands on workshop - Paul Fremantle
API Management - a hands on workshop - Paul FremantleJAXLondon2014
 
'Bootiful' Code with Spring Boot - Josh Long
'Bootiful' Code with Spring Boot - Josh Long'Bootiful' Code with Spring Boot - Josh Long
'Bootiful' Code with Spring Boot - Josh LongJAXLondon2014
 
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 LongJAXLondon2014
 
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 RemaniJAXLondon2014
 
Dataflow, the Forgotten Way - Russel Winder
Dataflow, the Forgotten Way - Russel WinderDataflow, the Forgotten Way - Russel Winder
Dataflow, the Forgotten Way - Russel WinderJAXLondon2014
 
Habits of Highly Effective Technical Teams - Martijn Verburg
Habits of Highly Effective Technical Teams - Martijn VerburgHabits of Highly Effective Technical Teams - Martijn Verburg
Habits of Highly Effective Technical Teams - Martijn VerburgJAXLondon2014
 
The Lazy Developer's Guide to Cloud Foundry - Holly Cummins
The Lazy Developer's Guide to Cloud Foundry - Holly CumminsThe Lazy Developer's Guide to Cloud Foundry - Holly Cummins
The Lazy Developer's Guide to Cloud Foundry - Holly CumminsJAXLondon2014
 
Testing within an Agile Environment - Beyza Sakir and Chris Gollop
Testing within an Agile Environment - Beyza Sakir and Chris GollopTesting within an Agile Environment - Beyza Sakir and Chris Gollop
Testing within an Agile Environment - Beyza Sakir and Chris GollopJAXLondon2014
 
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...JAXLondon2014
 
Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov
Squeezing Performance of out of In-Memory Data Grids - Fuad MalikovSqueezing Performance of out of In-Memory Data Grids - Fuad Malikov
Squeezing Performance of out of In-Memory Data Grids - Fuad MalikovJAXLondon2014
 
Spocktacular Testing - Russel Winder
Spocktacular Testing - Russel WinderSpocktacular Testing - Russel Winder
Spocktacular Testing - Russel WinderJAXLondon2014
 
Server Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David DelabasseeServer Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David DelabasseeJAXLondon2014
 
Reflection Madness - Dr. Heinz Kabutz
Reflection Madness - Dr. Heinz KabutzReflection Madness - Dr. Heinz Kabutz
Reflection Madness - Dr. Heinz KabutzJAXLondon2014
 
Rapid Web Application Development with MongoDB and the JVM - Trisha Gee
Rapid Web Application Development with MongoDB and the JVM - Trisha GeeRapid Web Application Development with MongoDB and the JVM - Trisha Gee
Rapid Web Application Development with MongoDB and the JVM - Trisha GeeJAXLondon2014
 
Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...
Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...
Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...JAXLondon2014
 

More from JAXLondon2014 (20)

GridGain 6.0: Open Source In-Memory Computing Platform - Nikita Ivanov
GridGain 6.0: Open Source In-Memory Computing Platform - Nikita IvanovGridGain 6.0: Open Source In-Memory Computing Platform - Nikita Ivanov
GridGain 6.0: Open Source In-Memory Computing Platform - Nikita Ivanov
 
Performance Metrics for your Delivery Pipeline - Wolfgang Gottesheim
Performance Metrics for your Delivery Pipeline - Wolfgang GottesheimPerformance Metrics for your Delivery Pipeline - Wolfgang Gottesheim
Performance Metrics for your Delivery Pipeline - Wolfgang Gottesheim
 
How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...
How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...
How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...
 
Conditional Logging Considered Harmful - Sean Reilly
Conditional Logging Considered Harmful - Sean ReillyConditional Logging Considered Harmful - Sean Reilly
Conditional Logging Considered Harmful - Sean Reilly
 
Finding your Way in the Midst of the NoSQL Haze - Abdelmonaim Remani
Finding your Way in the Midst of the NoSQL Haze - Abdelmonaim RemaniFinding your Way in the Midst of the NoSQL Haze - Abdelmonaim Remani
Finding your Way in the Midst of the NoSQL Haze - Abdelmonaim Remani
 
API Management - a hands on workshop - Paul Fremantle
API Management - a hands on workshop - Paul FremantleAPI Management - a hands on workshop - Paul Fremantle
API Management - a hands on workshop - Paul Fremantle
 
'Bootiful' Code with Spring Boot - Josh Long
'Bootiful' Code with Spring Boot - Josh Long'Bootiful' Code with Spring Boot - Josh Long
'Bootiful' Code with Spring Boot - Josh Long
 
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
 
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
 
Dataflow, the Forgotten Way - Russel Winder
Dataflow, the Forgotten Way - Russel WinderDataflow, the Forgotten Way - Russel Winder
Dataflow, the Forgotten Way - Russel Winder
 
Habits of Highly Effective Technical Teams - Martijn Verburg
Habits of Highly Effective Technical Teams - Martijn VerburgHabits of Highly Effective Technical Teams - Martijn Verburg
Habits of Highly Effective Technical Teams - Martijn Verburg
 
The Lazy Developer's Guide to Cloud Foundry - Holly Cummins
The Lazy Developer's Guide to Cloud Foundry - Holly CumminsThe Lazy Developer's Guide to Cloud Foundry - Holly Cummins
The Lazy Developer's Guide to Cloud Foundry - Holly Cummins
 
Testing within an Agile Environment - Beyza Sakir and Chris Gollop
Testing within an Agile Environment - Beyza Sakir and Chris GollopTesting within an Agile Environment - Beyza Sakir and Chris Gollop
Testing within an Agile Environment - Beyza Sakir and Chris Gollop
 
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
 
Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov
Squeezing Performance of out of In-Memory Data Grids - Fuad MalikovSqueezing Performance of out of In-Memory Data Grids - Fuad Malikov
Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov
 
Spocktacular Testing - Russel Winder
Spocktacular Testing - Russel WinderSpocktacular Testing - Russel Winder
Spocktacular Testing - Russel Winder
 
Server Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David DelabasseeServer Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David Delabassee
 
Reflection Madness - Dr. Heinz Kabutz
Reflection Madness - Dr. Heinz KabutzReflection Madness - Dr. Heinz Kabutz
Reflection Madness - Dr. Heinz Kabutz
 
Rapid Web Application Development with MongoDB and the JVM - Trisha Gee
Rapid Web Application Development with MongoDB and the JVM - Trisha GeeRapid Web Application Development with MongoDB and the JVM - Trisha Gee
Rapid Web Application Development with MongoDB and the JVM - Trisha Gee
 
Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...
Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...
Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...
 

Recently uploaded

WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )
WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )
WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )Pooja Nehwal
 
Microsoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AIMicrosoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AITatiana Gurgel
 
call girls in delhi malviya nagar @9811711561@
call girls in delhi malviya nagar @9811711561@call girls in delhi malviya nagar @9811711561@
call girls in delhi malviya nagar @9811711561@vikas rana
 
NATIONAL ANTHEMS OF AFRICA (National Anthems of Africa)
NATIONAL ANTHEMS OF AFRICA (National Anthems of Africa)NATIONAL ANTHEMS OF AFRICA (National Anthems of Africa)
NATIONAL ANTHEMS OF AFRICA (National Anthems of Africa)Basil Achie
 
Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...
Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...
Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...NETWAYS
 
Genesis part 2 Isaiah Scudder 04-24-2024.pptx
Genesis part 2 Isaiah Scudder 04-24-2024.pptxGenesis part 2 Isaiah Scudder 04-24-2024.pptx
Genesis part 2 Isaiah Scudder 04-24-2024.pptxFamilyWorshipCenterD
 
Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝
Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝
Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝soniya singh
 
Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...
Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...
Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...Salam Al-Karadaghi
 
Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...
Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...
Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...NETWAYS
 
SBFT Tool Competition 2024 -- Python Test Case Generation Track
SBFT Tool Competition 2024 -- Python Test Case Generation TrackSBFT Tool Competition 2024 -- Python Test Case Generation Track
SBFT Tool Competition 2024 -- Python Test Case Generation TrackSebastiano Panichella
 
Philippine History cavite Mutiny Report.ppt
Philippine History cavite Mutiny Report.pptPhilippine History cavite Mutiny Report.ppt
Philippine History cavite Mutiny Report.pptssuser319dad
 
Work Remotely with Confluence ACE 2.pptx
Work Remotely with Confluence ACE 2.pptxWork Remotely with Confluence ACE 2.pptx
Work Remotely with Confluence ACE 2.pptxmavinoikein
 
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdfCTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdfhenrik385807
 
The 3rd Intl. Workshop on NL-based Software Engineering
The 3rd Intl. Workshop on NL-based Software EngineeringThe 3rd Intl. Workshop on NL-based Software Engineering
The 3rd Intl. Workshop on NL-based Software EngineeringSebastiano Panichella
 
OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...
OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...
OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...NETWAYS
 
Simulation-based Testing of Unmanned Aerial Vehicles with Aerialist
Simulation-based Testing of Unmanned Aerial Vehicles with AerialistSimulation-based Testing of Unmanned Aerial Vehicles with Aerialist
Simulation-based Testing of Unmanned Aerial Vehicles with AerialistSebastiano Panichella
 
OSCamp Kubernetes 2024 | Zero-Touch OS-Infrastruktur für Container und Kubern...
OSCamp Kubernetes 2024 | Zero-Touch OS-Infrastruktur für Container und Kubern...OSCamp Kubernetes 2024 | Zero-Touch OS-Infrastruktur für Container und Kubern...
OSCamp Kubernetes 2024 | Zero-Touch OS-Infrastruktur für Container und Kubern...NETWAYS
 
OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...
OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...
OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...NETWAYS
 
LANDMARKS AND MONUMENTS IN NIGERIA.pptx
LANDMARKS  AND MONUMENTS IN NIGERIA.pptxLANDMARKS  AND MONUMENTS IN NIGERIA.pptx
LANDMARKS AND MONUMENTS IN NIGERIA.pptxBasil Achie
 
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...Krijn Poppe
 

Recently uploaded (20)

WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )
WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )
WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )
 
Microsoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AIMicrosoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AI
 
call girls in delhi malviya nagar @9811711561@
call girls in delhi malviya nagar @9811711561@call girls in delhi malviya nagar @9811711561@
call girls in delhi malviya nagar @9811711561@
 
NATIONAL ANTHEMS OF AFRICA (National Anthems of Africa)
NATIONAL ANTHEMS OF AFRICA (National Anthems of Africa)NATIONAL ANTHEMS OF AFRICA (National Anthems of Africa)
NATIONAL ANTHEMS OF AFRICA (National Anthems of Africa)
 
Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...
Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...
Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...
 
Genesis part 2 Isaiah Scudder 04-24-2024.pptx
Genesis part 2 Isaiah Scudder 04-24-2024.pptxGenesis part 2 Isaiah Scudder 04-24-2024.pptx
Genesis part 2 Isaiah Scudder 04-24-2024.pptx
 
Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝
Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝
Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝
 
Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...
Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...
Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...
 
Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...
Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...
Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...
 
SBFT Tool Competition 2024 -- Python Test Case Generation Track
SBFT Tool Competition 2024 -- Python Test Case Generation TrackSBFT Tool Competition 2024 -- Python Test Case Generation Track
SBFT Tool Competition 2024 -- Python Test Case Generation Track
 
Philippine History cavite Mutiny Report.ppt
Philippine History cavite Mutiny Report.pptPhilippine History cavite Mutiny Report.ppt
Philippine History cavite Mutiny Report.ppt
 
Work Remotely with Confluence ACE 2.pptx
Work Remotely with Confluence ACE 2.pptxWork Remotely with Confluence ACE 2.pptx
Work Remotely with Confluence ACE 2.pptx
 
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdfCTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
 
The 3rd Intl. Workshop on NL-based Software Engineering
The 3rd Intl. Workshop on NL-based Software EngineeringThe 3rd Intl. Workshop on NL-based Software Engineering
The 3rd Intl. Workshop on NL-based Software Engineering
 
OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...
OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...
OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...
 
Simulation-based Testing of Unmanned Aerial Vehicles with Aerialist
Simulation-based Testing of Unmanned Aerial Vehicles with AerialistSimulation-based Testing of Unmanned Aerial Vehicles with Aerialist
Simulation-based Testing of Unmanned Aerial Vehicles with Aerialist
 
OSCamp Kubernetes 2024 | Zero-Touch OS-Infrastruktur für Container und Kubern...
OSCamp Kubernetes 2024 | Zero-Touch OS-Infrastruktur für Container und Kubern...OSCamp Kubernetes 2024 | Zero-Touch OS-Infrastruktur für Container und Kubern...
OSCamp Kubernetes 2024 | Zero-Touch OS-Infrastruktur für Container und Kubern...
 
OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...
OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...
OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...
 
LANDMARKS AND MONUMENTS IN NIGERIA.pptx
LANDMARKS  AND MONUMENTS IN NIGERIA.pptxLANDMARKS  AND MONUMENTS IN NIGERIA.pptx
LANDMARKS AND MONUMENTS IN NIGERIA.pptx
 
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
 

Building effective Java applications for the Cloud: The DHARMA principles - Daniel Bryant

  • 1. Building Java applica.ons for the Cloud: The DHARMA principles Daniel Bryant Principal Consultant, Open Credo daniel.bryant@opencredo.com @danielbryantuk
  • 2. What to expect • Problems when developing for the Cloud – “LiG and shiG” – Smashing the monolith – Greenfield (“Cloud na.ve”) • Some sugges.ons on where to focus efforts – Not specific plaPorm/framework reviews • Tools and techniques • Lots of informa.on… (slides will be available) 14/10/2014 @danielbryantuk
  • 3. Who Am I? • LJC • Principal Associate • Adopt Consultant at OpenCredo ü Agile transforma.ons ü DevOps ü Microservices and Cloud OpenJDK and JSR 14/10/2014 @danielbryantuk
  • 4. The Current Industry Wish List… • Service-­‐Oriented Architecture • Cloud-­‐based deployments • DevOps Culture 14/10/2014 @danielbryantuk
  • 5. The Current Industry Wish List… • Service-­‐Oriented Architecture – Twi`er’s Story (bit.ly/1j1WbmI) • Cloud-­‐based deployments – Today! • DevOps Culture – Devoxx UK talk (bit.ly/1BylnZb) – Previous LJC Event (bit.ly/1elVPJz) 14/10/2014 @danielbryantuk
  • 6. Common Cloud Problems TL;DR… 14/10/2014 @danielbryantuk
  • 7. Not respec<ng the underlying environment 14/10/2014 @danielbryantuk
  • 8. Lack of applica<on/plaDorm monitoring… 14/10/2014 @danielbryantuk
  • 9. Bizarre failure modes… 14/10/2014 @danielbryantuk
  • 10. Difficulty in understanding the new architecture 14/10/2014 @danielbryantuk
  • 11. Confusion over environment provisioning and config 14/10/2014 @danielbryantuk
  • 12. Not tes<ng in the Cloud… (hint: here be dragons!) 14/10/2014 @danielbryantuk
  • 13. We’ve created the “Cloud DHARMA Principles” to act as a checklist when building Cloud apps 14/10/2014 @danielbryantuk
  • 14. 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) 14/10/2014 @danielbryantuk
  • 15. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly An.fragile 14/10/2014 @danielbryantuk
  • 16. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly An.fragile 14/10/2014 @danielbryantuk
  • 18. Documenta.on (just enough) • Provide a map for developers • Component purpose (and contract) • Ini.alisa.on instruc.ons (mocks/stubs) • Highlights areas of opera.onal risk 14/10/2014 @danielbryantuk
  • 19. Simon Brown’s C4 Model 14/10/2014 @danielbryantuk www.codingthearchitecture.com
  • 22. API Docs with Swagger 14/10/2014 @danielbryantuk helloreverb.com/developers/swagger
  • 23. Create a PACT 14/10/2014 @danielbryantuk github.com/DiUS/pact-­‐jvm
  • 24. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly An.fragile 14/10/2014 @danielbryantuk
  • 25. High Cohesion / Loose Coupling (all the way down…) • Code • Architecture – Components – Services • Public API – PayPal (bit.ly/1hnZNly) 14/10/2014 @danielbryantuk
  • 26. Smashing the Monolith… • Business func.onality -­‐“Cart Service” • Technology chunk -­‐ “Email Service” • Ver.cal Slice – “Registra.on” (Groupon: vimeo.com/105880150) • Horizontal Slice – “User Repo” (Microservices: oreil.ly/1pp6qmx) 14/10/2014 @danielbryantuk
  • 27. Microservices • Probably won’t catch on… ;-­‐) 14/10/2014 @danielbryantuk
  • 28. Twelve Factor Apps 14/10/2014 @danielbryantuk h`p://12factor.net/
  • 29. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly An.fragile 14/10/2014 @danielbryantuk
  • 30. Automated from Commit to Cloud • Con.nuous Integra.on • Con.nuous Deployment • Con.nuous Delivery 14/10/2014 @danielbryantuk
  • 31. Our Build Pipeline Jenkins, with plugins… • Build Pipeline – wiki.jenkins-­‐ci.org/display/JENKINS/Build+Pipeline+Plugin • Parameterized build – wiki.jenkins-­‐ci.org/display/JENKINS/Parameterized+Build • Promoted Builds Plugin – wiki.jenkins-­‐ci.org/display/JENKINS/Promoted+Builds+Plugin 14/10/2014 @danielbryantuk
  • 32. Our Build Pipeline • Component Build – Compile – Unit Tests (surefire) – Integra.on Tests (failsafe) • Deployment onto QA Cloud – Python Scripts + Chef to provision – Verify success using Python – Serverspec serverspec.org 14/10/2014 @danielbryantuk
  • 33. Our Build Pipeline • Acceptance Tests – Cucumber (and Selenium) • Performance Tests – Jmeter + Jenkins performance plugin – Make sure environment is realis.c!! • Live Deployment? 14/10/2014 @danielbryantuk
  • 34. Automa.ng QA • Intra-­‐component integra.on tes.ng – U.lise embedded datastore/middleware – “Scassandra” (github.com/scassandra) – Service virtualisa.on (www.mbtest.org) • Inter-­‐component integra.on tes.ng – The hardest part of SOA… – Consider ‘synthe.c txns’ (ac.ve monitoring) 14/10/2014 @danielbryantuk
  • 35. Infrastructure: Say No To Snowflakes! • Automate all provisioning (store in SCM) • Fry... – Chef, Puppet, SaltStack, Ansible – Bash, Python (Fabric) – Vendor APIs • …or bake? – Packer.io – NePlix Aminator 14/10/2014 @danielbryantuk
  • 36. Infrastructure: Say No To Snowflakes! • Doing “Proper Development” – Gareth Rushgrove at CraG Conf (bit.ly/1njuc49) – Chef Conf (www.youtube.com/user/getchef) • Local tooling/tes.ng – Vagrant (www.vagrantup.com) – Docker (www.docker.io) 14/10/2014 @danielbryantuk
  • 37. Configuring the Cloud • Bundle config with app – Upload new config file – Re-­‐deploy en.re app (easier with Docker?) • Store externally – Zookeeper & Curator curator.apache.org – NePlix Archaius github.com/NePlix/archaius – etcd github.com/coreos/etcd – Consul.io www.consul.io 14/10/2014 @danielbryantuk
  • 38. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly An.fragile 14/10/2014 @danielbryantuk
  • 39. Deployment PlaPorm: What you’ve got… 14/10/2014 @danielbryantuk
  • 40. What you think you want… 14/10/2014 @danielbryantuk
  • 41. What you actually get… Fact: 9 out of 10 cheetahs prefer the taste of an Ops team over <nned food 14/10/2014 @danielbryantuk
  • 42. Thou Shalt Know thy Cloud… • AWS “Magne.c” 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 Sequen.al Write to SSD Reference for Mac sta.s.cs: bit.ly/1GJZH8 14/10/2014 @danielbryantuk
  • 43. Thou Shalt Know they Cloud… “Everything fails all the <me [in the cloud]” Werner Vogels, CTO, Amazon.com • Everything is ephemeral • Vola.lity • Noisy (virtual) neighbours – bit.ly/1w1HQy7 14/10/2014 @danielbryantuk
  • 44. Thinking/Ac.ng Opera.onally • Cul.vate “Mechanical Sympathy” • Virtualisa.on – Tech Target (bit.ly/1kDVqyG) • Networking – ‘Unix and Linux System Administra.on Handbook’ – aws.amazon.com/documenta.on 14/10/2014 @danielbryantuk
  • 45. Thinking/Ac.ng Opera.onally • Learn Linux fundamentals • Diagnos.c skills – top, netstat, vmstat, tcpdump – Java u.ls: jps, jstat, jmap, jhat – “DevOps Troubleshoo.ng” by K. Rankin 14/10/2014 @danielbryantuk
  • 46. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly An.fragile 14/10/2014 @danielbryantuk
  • 47. Monitor All The Things! • Infrastructure monitoring – Nagios / Zabbix – AppDynamics • Distributed Tracing – twi`er.github.io/zipkin • Centralised Logging – logstash.net 14/10/2014 @danielbryantuk
  • 48. Component Metrics • Dropwizard’s Metrics – metrics.codahale.com – Spring Boot (bit.ly/1rGo76V) • NePlix’s Servo – github.com/NePlix/servo • Etsy’s StatsD – github.com/etsy/statsd/wiki 14/10/2014 @danielbryantuk
  • 49. Health Checks 14/10/2014 @danielbryantuk
  • 50. Gauges, Counters, Meters, Timers… 14/10/2014 @danielbryantuk
  • 51. Graph It! 14/10/2014 @danielbryantuk dashing.io
  • 52. 14/10/2014 @danielbryantuk Phrase borrowed from Etsy!
  • 54. Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly An.fragile 14/10/2014 @danielbryantuk
  • 55. An.fragile • The opposite of fragile? – Robust… – An.fragile… • NePlix are best-­‐in-­‐class – bit.ly/1gs5n3q • System must be robust first! 14/10/2014 @danielbryantuk
  • 56. Design for Failure • Distributed Compu.ng Principles – ‘For young bloods’ (bit.ly/1pKVepz) – NePlix (bit.ly/1h5GMid) • Design pa`erns – Timeouts / retries – Bulkheads / circuit-­‐breakers 14/10/2014 @danielbryantuk
  • 57. Retries 14/10/2014 @danielbryantuk github.com/rholder/guava-­‐retrying
  • 58. Circuit-­‐breaker 14/10/2014 @danielbryantuk github.com/NePlix/Hystrix github.com/NePlix/Hystrix/tree/master/hystrix-­‐contrib/hystrix-­‐javanica java.dzone.com/ar.cles/hystrix-­‐and-­‐spring-­‐boot projects.spring.io/spring-­‐cloud/
  • 59. An.fragile Pa`erns: Async FTW Asynchronous Communica.on -­‐ queues, pub/sub Command Query Responsibility Segrega.on (CQRS) Event Sourcing (ES) mar.nfowler.com/bliki/CQRS.html 14/10/2014 @danielbryantuk
  • 60. An.fragile Pa`erns: Respect the CAP Eventual consistency (ACID vs BASE) Clever caching (soG-­‐state) en.wikipedia.org/wiki/CAP_theorem cloudshankar.blogspot.co.uk/2013/05/eventual-­‐consistency.html www.dataversity.net/acid-­‐vs-­‐base-­‐the-­‐shiGing-­‐ph-­‐of-­‐database-­‐transac.on-­‐processing/ 14/10/2014 @danielbryantuk
  • 61. An.fragile Pa`erns: Elas.c Scaling Stateless components Distributed data stores / caches 14/10/2014 @danielbryantuk
  • 62. So, Cloud Apps are ‘done’ when… Documented (just enough) Highly cohesive/loosely coupled (all the way down) Automated from commit to Cloud Resource aware Monitored thoroughly An.fragile 14/10/2014 @danielbryantuk
  • 63. Thanks For Listening • Massive thanks to all the OpenCredo team! • Ques.ons / comments? – daniel.bryant@opencredo.com – @danielbryantuk 14/10/2014 @danielbryantuk