More Related Content
The seven more deadly sins of microservices final
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
GOTO LONDON 2016: Concursus Event sourcing Evolved (Updated)
OOP/MM 2017: "Seven (More) Deadly Sins of Microservices"
Haufe #msaday: "Building a Microservice Ecosystem"
microXchg 2017: "Microservices: The People and Organisational Impact"
Devoxx US 2017 "The Seven (More) Deadly Sins of Microservices"
JAXDevOps 2017 "The Seven (More) Deadly Sins of Microservices
What's hot
CraftConf 2017 "Microservices: The Organisational and People Impact"
GOTO Chicago/CraftConf 2017 "The Seven (More) Deadly Sins of Microservices"
JAX DevOps 2018 "Continuous Delivery Patterns for Modern Architectures"
O'Reilly SACON "Continuous Delivery Patterns for Contemporary Architecture"
Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...
vJUG24 2017 "Continuous Delivery Patterns for Contemporary Architecture"
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"
DevOpsCon 2017 "Continuous Delivery with Containers"
vJUG 2017 "Continuous Delivery with Java and Docker: The Good, the Bad, and t...
AllDayDevOps: "Microservices: The People and Organisational Impact"
#AATC2017: "Continuous Delivery with Containers: The Trials and Tribulations"
Reactive Principles and Microservices
JAXLondon 2017 "Continuous Delivery with Containers and Java"
ServerlessConf: Serverless for the Enterprise - Rafal Gancarz
Microservices - Scaling Development and Service
O'Reilly SACON NY 2018 "Continuous Delivery Patterns for Contemporary Archite...
Open Source and Content Management (+audio)
How To Train Your Microservice
DockerCon EU 2018 "Continuous Delivery with Docker and Java"
Devops online training ppt
Viewers also liked
London Hashicorp Meetup #8 - Testing Programmable Infrastructure By Matt Long
Voxxed Bristol 2017 - From C to Q, one event at a time: Event Sourcing illust...
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant
Reactive Microservices By Lorenzo Nicora
QCON London 2017 - Monitoring Serverless Architectures by Rafal Gancarz
Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant
Evolving Project Management: from the sin to the virtue by Antonio Cobo
Vault: Beyond secret storage - Using Vault to harden your infrastructure
Haufe #msaday - The Actor model: an alternative approach to concurrency By Lo...
High Load Strategy 2016 - Project Management: from Stone Age to DevOps
A Visual Introduction to Event Sourcing and CQRS by Lorenzo Nicora
muCon 2016: Authentication in Microservice Systems By David Borsos
Microservices Manchester: Microservices and Macro-Economics - A Shorty Histor...
Microservices Manchester: Security, Microservces and Vault by Nicki Watt
Microservices Manchester: Authentication in Microservice Systems by David Borsos
Spring Boot Microservices vs Akka Actor Cluster
Microservices Manchester: Concursus - Event Sourcing Evolved By Domonic Fox
Low latency & mechanical sympathy issues and solutions
Java Memory Consistency Model - concepts and context
Similar to O'Reilly 2016: "Continuous Delivery with Containers: The Trials and Tribulations" By Daniel Bryant
ContainerSched 2017 "Continuous Delivery with Containers: The Good, the Bad, ...
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
SATURN 2018 "Continuous Delivery with Containers" Extended 90 version
OReilly SACON 2016 "A Practical Guide for Continuous Delivery with Containers"
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
Continuous Delivery with Containers: The Good, the Bad, and the Ugly
CodeOne SF 2018 "Continuous Delivery with Containers: Lessons Learned"
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
Docker in Production: How RightScale Delivers Cloud Applications
Containers, microservices and serverless for realists
Containers & Cloud Native Ops Cloud Foundry Approach
Introduction to Containers: From Docker to Kubernetes and everything in-between
CodeOne 2019: "Continuous Delivery with Docker and Java"
JavaOne 2014: Cloud Developer's DHARMA: Redefining 'done' for Cloud applications
All Things Containers - Docker, Kubernetes, Helm, Istio, GitOps and more
Continuous Delivery With Containers
Running eZ Platform on Kubernetes (presented by Björn Dieding at eZ Conferenc...
Container Landscape in 2019
Building a microservice ecosystem
More from OpenCredo
Webinar - Design Thinking for Platform Engineering
MuCon 2019: Exploring Your Microservices Architecture Through Network Science...
Goto Chicago; Journeys To Cloud Native Architecture: Sun, Sea And Emergencies...
Mucon 2018: Heuristics for Identifying Microservice Boundaries By Erich Eichi...
Journeys To Cloud Native Architecture: Sun, Sea And Emergencies - Nicki Watt
Machine Learning Game Changer for IT - Maartens Lourens
Kafka Summit 2018: A Journey Building Kafka Connectors - Pegerto Fernandez
MuCon 2017: A not So(A) Trivial Question by Tareq Abedrabbo
DevOpsCon Berlin 2017: Project Management from Stone Age to DevOps By Antoni...
Hashidays London 2017 - Evolving your Infrastructure with Terraform By Nicki ...
Succeeding with DevOps Transformation - Rafal Gancarz
Progscon 2017: Serverless Architectures - Rafal Gancarz
ThingMonk 2016 - Concursus Event sourcing for the IOT By Tareq Abedrabbo & Do...
Recently uploaded
IEEE VR 2026 Course on Interaction Design for XR - Lecture 6: Research Direct...
IEEE VR 2026 Course on Interaction Design for XR - Lecture 1: Introduction
IWDBAKU 2026 Presentations (13 speeches)
Digital Marketing Services at Kreativan Technologies
ANIn Bengaluru 2026 | Unlocking True Agility: The End of Story Points! by Ren...
Agile Finance Transformation Function: How Organizations Can Build a Future-...
fundamentals of large language models and their uses
IEEE VR 2026 Course on Interaction Design for XR - Lecture 3: Designing for XR
Navigating UL and CSA Standards for Flexible Heaters Used in Industrial Equip...
BFSI Digital Transformation 2026 — $421B Fintech Opportunity for Banks & NBFC...
Automatic Descriptions for Interactive Charts (CSUN Conference 2026)
Comprehensive Guide to Integrating USDT BEP-20 into Crypto Wallet Apps
IEEE VR 2026 Course on Interaction Design for XR - Lecture 4: Prototyping
IEEE VR 2026 Standardization Committee Booth Slideshow 2: Standardization Bod...
AI-Based Threat Monitoring for Enhanced Security in Web3 Applications
IEEE VR 2026 Course on Interaction Design for XR - Lecture 2: Defining Requir...
How to Integrate USDT BEP-20 into a Crypto Wallet App.pdf
ANIn Bengaluru 2026 | Does Agile have a place in the world of AI? by Shreya T...
The next frontiers in AI beyond scaling -- five paradigms replacing brute-for...
Best Kids Smart Watches with GPS Tracking in 2026
O'Reilly 2016: "Continuous Delivery with Containers: The Trials and Tribulations" By Daniel Bryant
- 1.
Continuous Delivery forContainerized Applications: The Trials and Tribulations Daniel Bryant @danielbryantuk
- 2.
Setting the scene… •Continuous delivery is a large topic • Focusing on the process and tooling • No live coding today • Mini-book contains more details • “Building a CD pipeline” by Adrian and Kevin 20/12/2016 @danielbryantuk
- 3.
TL;DR – Containersand CD • Container image becomes the build pipeline ‘single binary’ • Adding metadata to containers images is vital • Must validate container constraints (NFRs) • Cultivate containerised ‘mechanical sympathy’ 20/12/2016 @danielbryantuk
- 4.
@danielbryantuk • Chief Scientistat OpenCredo, CTO at SpectoLabs • Agile, architecture, CI/CD, DevOps • Java, Go, JS, microservices, cloud, containers • Leading change through the application of technology and teams 20/12/2016 @danielbryantuk
- 5.
- 6.
Continuous Delivery • Producevaluable and robust software in short cycles • Optimising for feedback and learning • Not (necessarily) Continuous Deployment 20/12/2016 @danielbryantuk
- 7.
Creation of abuild pipeline is mandatory for continuous delivery 20/12/2016 @danielbryantuk
- 8.
- 9.
The Impact ofcontainers on CD 20/12/2016 @danielbryantuk
- 10.
Container technology (andCD) • OS-level virtualisation • cgroups, namespaces, rootfs • Package and execute software • Container image == ‘single binary’ 20/12/2016 @danielbryantuk
- 11.
- 12.
- 13.
- 14.
- 15.
Make your devenvironment like production • Develop locally or copy/code in container • Use base images from production • Must build/test containers locally • Perform (at least) happy path tests • All tests should be runnable locally 20/12/2016 @danielbryantuk
- 16.
Lesson learned: Dockerfilecontent is super important • OS choice • Configuration • Build artifacts • Exposing ports • Java • JDK vs JRE and Oracle vs OpenJDK • Golang • Statically compiled binary • Python • Virtualenv 20/12/2016 @danielbryantuk
- 17.
Please talk tothe sysadmin people: Their operational knowledge is invaluable 20/12/2016 @danielbryantuk
- 18.
Different prod andtest containers? • Create “test” version of container • Full OS (e.g. Ubuntu) • Test tools and data • Easy to see app/configuration drift • Use test sidecar containers instead • ONTEST proposal by Alexi Ledenev 20/12/2016 @danielbryantuk http://blog.terranillius.com/post/docker_testing/
- 19.
- 20.
Building images withJenkins • My report covers this • Build as usual… • Build Docker Image • Cloudbees Docker Build and Publish Plugin • Push image to registry 20/12/2016 @danielbryantuk
- 21.
Storing in animage registry (DockerHub) 20/12/2016 @danielbryantuk
- 22.
Lesson learned: Metadatais valuable • Application metadata • Version / GIT SHA • Build metadata • Build date • Image name • Vendor • Quality metadata • QA control • Security audited etc 20/12/2016 @danielbryantuk
- 23.
Metadata – Bewareof “latest” Docker Tag • Beware of the ‘latest’ Docker tag • “Latest” simply means • the last build/tag that ran without a specific tag/version specified • Ignore “latest” tag • Version your tags, every time • Danielbryantuk/test:2.4.1 20/12/2016 @danielbryantuk
- 24.
Metadata - AddingLabels at build time • Docker Labels • Add key/value data to image 20/12/2016 @danielbryantuk
- 25.
Metadata - AddingLabels at build time • Microscaling Systems’ Makefile • Labelling automated builds on DockerHub (h/t Ross Fairbanks) • Create file /hooks/build • label-schema.org • microbadger.com 20/12/2016 @danielbryantuk
- 26.
Metadata - AddingLabels at runtime 20/12/2016 @danielbryantuk $ docker run -d --label uk.co.danielbryant.lbname=frontdoor nginx • Can ’docker commit’, but creates new image • Not possible to update running container • Docker Proposal: Update labels #21721
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
Mechanical sympathy: Dockerand Java • Watch for cgroup limits (and cgroup awareness) • getAvailableProcessors issue (bugs.openjdk.java.net/browse/JDK-8140793) • Default fork/join thread pool sizes (based from host CPU count) • Set container memory appropriately • JVM requirements = Heap size (Xmx) + Metaspace + JVM overhead • Account for native thread requirements e.g. thread stack size (Xss) • Entropy • Host entropy can soon be exhausted by crypto operations 20/12/2016 @danielbryantuk | @spoole167 35
- 36.
- 37.
- 38.
- 39.
Containerise an existing(monolithic) app? • For • We know the monolith well • Allows homogenization of the pipeline and deployment platform • Can be a demonstrable win for tech and the business • Against • Can be difficult (100+ line scripts) • Often not designed for operation within containers, nor cloud native • Putting lipstick on a pig? 20/12/2016 @danielbryantuk
- 40.
- 41.
Key lessons learned •Conduct an architectural review • Architecture for Developers, by Simon Brown • Architecture Interview, by Susan Fowler • Look for data ingress/egress • File system access • Support resource constraints/transience • Optimise for quick startup and shutdown • Evaluate approach to concurrency • Store configuration (secrets) remotely 20/12/2016 @danielbryantuk
- 42.
- 43.
Microservices… Containers and microservicesare complementary Testing and deployment change 20/12/2016 @danielbryantuk https://specto.io/blog/recipe-for-designing-building-testing-microservices.html
- 44.
- 45.
- 46.
- 47.
Microservice architectural impacton CD • Application decomposition • Bounded context • Change cadence • Risk • Performance • Scalability • Team location h/t Matthew Skelton, Adam Tornhill • Worth knowing about: • Consumer-based contracts • Service virtualisation • Synthetic transactions and semantic monitoring 20/12/2016 @danielbryantuk
- 48.
Using containers doesnot obviate the need for good architectural practices 20/12/2016 @danielbryantuk
- 49.
- 50.
- 51.
In summary • Continuousdelivery is vitally important in modern architectures/ops • Container images must be the (single) source of truth within pipeline • Mechanical sympathy is important (assert properties in the pipeline) • We’re now bundling more responsibility into our artifact (e.g. an OS) • Not all developers are operationally aware • The tooling is now becoming stable/mature • We need to re-apply old CD practices with new technologies/tooling 20/12/2016 @danielbryantuk
- 52.
- 53.
Thanks for listening •Any questions? • Feel free to contact me • @danielbryantuk • daniel.bryant@opencredo.com 20/12/2016 @danielbryantuk