jaxlondon 2017 "continuous delivery with containers and java"
TRANSCRIPT
![Page 1: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/1.jpg)
ContinuousDeliverywithContainers:TheGood,theBad,andtheUgly
DanielBryant@danielbryantuk
![Page 2: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/2.jpg)
Containers:Expectationsversusreality
10/10/2017 @danielbryantuk
“DevOps”
![Page 3: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/3.jpg)
Settingthescene…
• Continuousdeliveryisalargetopic• Nobusinessfocustoday(valuestreametc)• PaaSandServerless aresuperinteresting…• ButI’massumingyou’reall-inoncontainers
• Focusingtodayontheprocessandtooling• Nolivecodingtoday• Mini-bookcontainsmoredetails(thanksnginx!)
10/10/2017 @danielbryantuk
bit.ly/2jWDSF7
![Page 4: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/4.jpg)
TL;DR– ContainersandCD
• Containerimagebecomesthebuildpipeline‘singlebinary’
• Addingmetadatatocontainersimagesisvital,butchallenging
• Mustvalidatecontainerconstraints(NFRs)• Cultivatecontainer‘mechanicalsympathy’
10/10/2017 @danielbryantuk
![Page 5: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/5.jpg)
@danielbryantuk
• IndependentTechnicalConsultant,CTOatSpectoLabs• Architecture,DevOps,Java,microservices,cloud,containers
• ContinuousDelivery(CI/CD)advocate
• Leadingchangethroughtechnologyandteams
10/10/2017 @danielbryantuk
![Page 6: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/6.jpg)
ContinuousDelivery
10/10/2017 @danielbryantuk
![Page 7: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/7.jpg)
ContinuousDelivery
• Producevaluableandrobustsoftwareinshortcycles
• Optimising forfeedbackandlearning
• Not (necessarily)ContinuousDeployment
10/10/2017 @danielbryantuk
![Page 8: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/8.jpg)
Creationofabuildpipelineismandatoryforcontinuousdelivery
10/10/2017 @danielbryantuk
![Page 9: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/9.jpg)
10/10/2017 @danielbryantuk
![Page 10: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/10.jpg)
TheImpactofcontainersonCD
10/10/2017 @danielbryantuk
![Page 11: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/11.jpg)
Containertechnology(andCD)
• OS-levelvirtualisation• cgroups,namespaces,rootfs
• Packageandexecutesoftware
• Containerimage==‘singlebinary’
10/10/2017 @danielbryantuk
![Page 12: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/12.jpg)
10/10/2017 @danielbryantuk
![Page 13: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/13.jpg)
10/10/2017 @danielbryantuk
![Page 14: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/14.jpg)
Creatingapipelineforcontainers
10/10/2017 @danielbryantuk
![Page 15: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/15.jpg)
10/10/2017 @danielbryantuk
![Page 16: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/16.jpg)
Makeyourdevenvironmentlikeproduction
• Developlocallyorcopy/codeincontainer
• Mustbuild/testcontainerslocally• Perform(atleast)happypathtests
10/10/2017 @danielbryantuk
![Page 17: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/17.jpg)
QuickAside:Running*entire*systemlocally
10/10/2017 @danielbryantuk
https://news.ycombinator.com/item?id=13960107https://opencredo.com/working-locally-with-microservices/https://www.datawire.io/telepresence/ |https://hoverfly.io/
![Page 18: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/18.jpg)
Makeyourdevenvironmentlikeproduction
• Developlocallyorcopy/codeincontainer
• Mustbuild/testcontainerslocally• Perform(atleast)happypathtests
• Useidenticalbaseimagesfromproduction• Withsameconfiguration
10/10/2017 @danielbryantuk
![Page 19: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/19.jpg)
Lessonlearned:Dockerfile contentissuper important
• OSchoice
• Configuration
• Buildartifacts
• Exposingports
• Java• JDKvsJREandOraclevsOpenJDK?
• Golang• Staticallycompiledbinaryinscratch?
• Python• Virtualenv?
10/10/2017 @danielbryantuk
![Page 20: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/20.jpg)
Pleasetalktothesysadminpeople:Theiroperationalknowledgeisinvaluable
10/10/2017 @danielbryantuk
![Page 21: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/21.jpg)
Differenttestandprodcontainers?
• Create“test”versionofcontainer• FullOS(e.g.Ubuntu)• Testtoolsanddata
• Easytoseeapp/configurationdrift
• Usetestsidecarcontainersinstead
• ONTESTproposalbyAlexiLedenev
10/10/2017 @danielbryantuk
http://blog.terranillius.com/post/docker_testing/
![Page 22: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/22.jpg)
Dockermulti-stagebuilds
10/10/2017 @danielbryantuk
http://blog.alexellis.io/mutli-stage-docker-builds/https://github.com/moby/moby/pull/31257https://github.com/moby/moby/pull/32063
![Page 23: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/23.jpg)
Javaspecificstuff…
10/10/2017 @danielbryantuk
github.com/oracle/docker-images/tree/master/OracleJava jdk.java.net/9/ea
![Page 24: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/24.jpg)
Hotoffthepress:Modularity
• Createminimalruntimeimages
• “jlink deliversaself-containeddistributionofyourapplicationandtheJVM,readytobeshipped.”
• Benefits:• Reducedfootprint• Performance• Security
10/10/2017 @danielbryantuk
![Page 25: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/25.jpg)
10/10/2017 @danielbryantuk
![Page 26: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/26.jpg)
BuildingimageswithJenkins
• Myreportcoversthis
• Buildasusual…
• BuildDockerImage• CloudbeesDockerBuildandPublishPlugin
• Pushimagetoregistry
10/10/2017 @danielbryantuk
![Page 27: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/27.jpg)
Storinginanimageregistry(DockerHub)
10/10/2017 @danielbryantuk
![Page 28: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/28.jpg)
Metadata– Bewareof“latest”DockerTag
• Bewareofthe‘latest’Dockertag
• “Latest”simplymeans• thelastbuild/tagthatranwithoutaspecifictag/versionspecified
• Ignore“latest”tag• Versionyourtags,everytime• danielbryantuk/test:2.4.1
10/10/2017 @danielbryantuk
![Page 29: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/29.jpg)
Lessonlearned:Metadataisvaluable
• Applicationmetadata• Version/GITSHA
• Buildmetadata• Builddate• Imagename• Vendor
• Qualitymetadata• QAcontrol,signedbinaries,ephemeralsupport• Securityprofiles(AppArmor),Securityauditedetc
10/10/2017 @danielbryantuk
![Page 30: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/30.jpg)
Metadata- AddingLabelsatbuildtime
• DockerLabels
• Addkey/valuedatatoimage
10/10/2017 @danielbryantuk
![Page 31: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/31.jpg)
Metadata- AddingLabelsatbuildtime
• Microscaling Systems’Makefile
• LabellingautomatedbuildsonDockerHub (h/tRossFairbanks)• Createfile‘/hooks/build’
• label-schema.org• microbadger.com
10/10/2017 @danielbryantuk
![Page 32: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/32.jpg)
Metadata- AddingLabelsatruntime
10/10/2017 @danielbryantuk
$ docker run -d --labeluk.co.danielbryant.lbname=frontdoor nginx
• Can’docker commit’,butcreatesnewimage
• Notpossibletoupdaterunningcontainer
• DockerProposal:Updatelabels #21721
![Page 33: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/33.jpg)
LizRice(andAqua)totherescue!
10/10/2017 @danielbryantuk
github.com/aquasecurity/manifesto
![Page 34: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/34.jpg)
Externalregistrywithmetadatasupport
10/10/2017 @danielbryantuk
![Page 35: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/35.jpg)
10/10/2017 @danielbryantuk
![Page 36: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/36.jpg)
Componenttesting
10/10/2017 @danielbryantuk
![Page 37: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/37.jpg)
Testing:JenkinsPipeline(ascode)
10/10/2017 @danielbryantuk
![Page 38: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/38.jpg)
10/10/2017 @danielbryantuk
![Page 39: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/39.jpg)
Testingindividualcontainers
10/10/2017 @danielbryantuk
![Page 40: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/40.jpg)
Integrationtesting
10/10/2017 @danielbryantuk
![Page 41: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/41.jpg)
IntroducingDockerCompose
10/10/2017 @danielbryantuk
![Page 42: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/42.jpg)
DockerCompose&JenkinsPipeline
10/10/2017 @danielbryantuk
![Page 43: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/43.jpg)
EphemeralKubernetesClusters
• Kubernaut (WIP)
• Managesapoolofclusters
• ”Claim”afreshcluster
• UseHelmtoinstalldependencies
10/10/2017 @danielbryantuk
![Page 44: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/44.jpg)
TestingNFRsinthebuildpipeline
• PerformanceandLoadtesting• Gatling/jmeter• Flood.io
• Securitytesting• Findsecbugs /OWASPDependencycheck• Bdd-security(OWASPZAP)/Arachni• Gauntlt /Serverspec• DockerBenchforSecurity/CoreOSClair
10/10/2017 @danielbryantuk
![Page 45: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/45.jpg)
DelayingNFRstothe‘LastResponsibleMoment’
• Newsflash!• Sometimesthelastresponsiblemomentisup-front!
• Containers/microservices don’tmakethiseasier• Sometimesmoredifficult…
10/10/2017 @danielbryantuk
![Page 46: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/46.jpg)
Mechanicalsympathy:DockerandJava
• WatchforJVMcgroup/taskset awareness• getAvailableProcessors()mayincorrectlyreportthenumberofcpus inDocker(JDK-8140793)• Runtime.availableProcessors()ignoresLinuxtaskset command(JDK-6515172)• Default fork/jointhreadpoolsizes(andothers)isbasedfromhostCPUcount
• Setcontainermemoryappropriately• JVMrequirements=Heapsize(Xmx)+Metaspace +JVMoverhead• Accountfornativethreadrequirementse.g.threadstacksize(Xss)
• Entropy• Hostentropycansoonbeexhaustedbycryptooperations
10/10/2017 @danielbryantuk 46
![Page 47: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/47.jpg)
Deployment
10/10/2017 @danielbryantuk
skillsmatter.com/skillscasts/10668-looking-forward-to-daniel-bryant-talk
docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.deploy-existing-version.html
![Page 48: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/48.jpg)
Observabilityiscoretocontinuousdelivery
10/10/2017 @danielbryantuk
www.infoq.com/articles/monitoring-containers-at-scale
![Page 49: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/49.jpg)
Containersarenotasilverbullet
10/10/2017 @danielbryantuk
![Page 50: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/50.jpg)
Movingtocontainers:Goingall-in?
10/10/2017 @danielbryantuk
OR
![Page 51: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/51.jpg)
ShouldIbuildmyowncontainerplatform?
Probablynot(UnlessyouareGoogle,AWSorIBM)
Whateveryoudecide…pushitthroughapipelineASAP!
10/10/2017 @danielbryantuk
![Page 52: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/52.jpg)
Usingcontainersdoesnotobviatetheneedforgoodarchitecturalpractices
10/10/2017 @danielbryantuk
![Page 53: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/53.jpg)
10/10/2017 @danielbryantuk
https://speakerdeck.com/caseywest/containercon-north-america-cloud-anti-patterns
![Page 54: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/54.jpg)
Summary
10/10/2017 @danielbryantuk
![Page 55: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/55.jpg)
Insummary
• Continuousdeliveryisvitallyimportantinmodernarchitectures/ops
• Containerimagesmustbethe(single)sourceoftruthwithinpipeline• Andmetadataaddedasappropriate…
• Mechanicalsympathyisimportant(assertpropertiesinthepipeline)• Notalldevelopersareoperationallyaware
• Thetoolingisnowbecomingstable/mature• Weneedtore-applyexistingCDpracticeswithnewtechnologies/tooling
10/10/2017 @danielbryantuk
![Page 56: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/56.jpg)
Bedtimereading
10/10/2017 @danielbryantuk
![Page 57: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/57.jpg)
Thanksforlistening
• Anyquestions?
• Feelfreetocontactme• @danielbryantuk• [email protected]
10/10/2017 @danielbryantuk
bit.ly/2jWDSF7
Comingsoon!
![Page 58: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/58.jpg)
Bonusslides(forextracontext)
10/10/2017 @danielbryantuk
![Page 59: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/59.jpg)
Containerise anexisting(monolithic)app?
• For
• Weknowthemonolithwell
• Allowshomogenizationofthepipelineanddeploymentplatform
• Canbeademonstrablewinfortechandthebusiness
• Against
• Canbedifficult(100+linescripts)
• Oftennotdesignedforoperationwithincontainers,norcloudnative
• Puttinglipstickonapig?
10/10/2017 @danielbryantuk
![Page 60: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/60.jpg)
Keylessonslearned
• Conductanarchitecturalreview• ArchitectureforDevelopers,bySimonBrown• ArchitectureInterview,bySusanFowler
• Lookfordataingress/egress• Filesystemaccess
• Supportresourceconstraints/transience• Optimise forquickstartupandshutdown• Evaluateapproachtoconcurrency• Storeconfiguration(secrets)remotely
10/10/2017 @danielbryantuk
![Page 61: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/61.jpg)
Newdesignpatterns
10/10/2017 @danielbryantuk
bit.ly/2efe0TP
![Page 62: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/62.jpg)
Microservices…
Containersandmicroservices arecomplementary
Testinganddeploymentchange
10/10/2017 @danielbryantuk
https://specto.io/blog/recipe-for-designing-building-testing-microservices.html
![Page 63: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/63.jpg)
10/10/2017 @danielbryantuk
![Page 64: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/64.jpg)
10/10/2017 @danielbryantuk
![Page 65: JAXLondon 2017 "Continuous Delivery with Containers and Java"](https://reader031.vdocument.in/reader031/viewer/2022021815/5a64797e7f8b9a27568b489d/html5/thumbnails/65.jpg)
10/10/2017 @danielbryantuk