SlideShare a Scribd company logo
{
Monolithic Delivery
ACCU Conference 2018
Chris Oldwood
{Exploring coupling
Monoliths
1. a large single upright block of stone, especially one
shaped into or serving as a pillar or monument.
- a very large and characterless building.
- a large block of concrete sunk in water, e.g. in the
building of a dock.
2. a large, impersonal political, corporate, or social
structure regarded as indivisible and slow to change.
Monolith (n)
https://www.google.co.uk/search?q=define+monolith
The Archetypal Monolith
https://cdn-images-1.medium.com/max/1200/1*QVCRxfsQwXHIlBlRDxIrLg.png
Monolithic Systems
http://static.righto.com/images/IBM_1406_Storage_Unit/machines.jpg
https://en.wikipedia.org/wiki/Commodore_PET#/media/File:Commodore_2001_Series-IMG_0448b.jpg
Monolithic Architecture
http://83.133.184.251/winworldpc.com/res/img/screenshots
https://pathowe.co.uk/wp-content/uploads/2017/02/iis-sql-750x503.png
 Monitors upstream data feeds
 Decides when to process data feeds
 Manages compute grid
 Processes data feeds in parallel
 Dispatches work to grid
 Aggregate results in parallel
“The Scheduler”
Monolithic Enterprises
http://www.hns.net/assets/img/data-centres/bristol.jpg
Microservices
https://i.stack.imgur.com/G0Syx.jpg
Monolithic Delivery
https://www.aanavandi.com/blog/wp-content/uploads/2016/11/securedownload-44.jpg
{Techniques for smaller deliveries
Decoupling Delivery
Smaller Units of Change
http://parkinsurance.co.uk/wp-content/uploads/2015/06/Josephine-Reitzel-2013-bike-messenger-worlds.jpg
Always Be Ready To Ship
http://wiki.c2.com/?AlwaysBeReadyToShip
“A principle (or consequence) of
highly iterative software
development methodologies is that
after the first iteration, the product
is always ‘ready to ship’. That is,
the product does something useful
and is in a releasable state.”
An example: sharing loyalty points:
 View shared balance
 Accrue shared value
 Spend shared value
 Join customers
 Split customers
Partial Deliveries
Emergent Design
https://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf
“Software is not limited by physics,
like buildings are. It is limited by
imagination, by design, by
organization. In short, it is limited by
properties of people, not by properties
of the world. ‘We have met the enemy,
and he is us.’”
-- Ralph Johnson
Console
app
v0.1 v1.0
DB
Services
Services
Command
line tools
File-
system
Command
line tools
Scripts
Emergent Design is the continued
borrowing and repaying of short term
technical debt to allow practical
experience to drive evolution.
Refactor All The Things
“Perfection is achieved, not when
there is nothing more to add, but
when there is nothing left to take
away”
-- Antoine de Saint-Exupery
Deploy Frequently
https://qz.com/wp-content/uploads/2018/02/spacex-falcon-heavy-elon-musk-china-europe-esa-nasa-mars-sls-boeing.jpg
Monitoring
https://news.artnet.com/app/news-upload/2016/03/spy-booth-01-e1459190262771.jpg
{Friction inducing behaviours
Barriers to Delivery
Identify the Real Waste
https://twitter.com/raganwald/status/794527181225357312
Minimise Branching
https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Clapham_Junction_railway_statio
n_MMB_03_458XXX_458XXX_450XXX_377XXX_377XXX_455XXX_455XXX_455XXX.jpg
Shared Binaries
http://www.telford-live.com/2017/08/abandoned-house-in-telford/
{Sources of inspiration
References
http://cdn.loot.co.za/static/gallery/previews/f/n/w/fnwc-97-g120/preview.fnwc-97-g120.1.front.0566086654.jpg
http://www.systemsguild.com/tdmbooks/WWBCover.jpg
{Filling in the gaps
Q & A
Blog:
http://chrisoldwood.blogspot.co.uk
Articles:
http://chrisoldwood.com/articles.htm

More Related Content

More from Chris Oldwood

Becoming a Bitter Programmer
Becoming a Bitter ProgrammerBecoming a Bitter Programmer
Becoming a Bitter Programmer
Chris Oldwood
 
Waltzing with Branches [Agile o/t Beach]
Waltzing with Branches [Agile o/t Beach]Waltzing with Branches [Agile o/t Beach]
Waltzing with Branches [Agile o/t Beach]
Chris Oldwood
 
Using xUnit as a Swiss-Aarmy Testing Toolkit
Using xUnit as a Swiss-Aarmy Testing ToolkitUsing xUnit as a Swiss-Aarmy Testing Toolkit
Using xUnit as a Swiss-Aarmy Testing Toolkit
Chris Oldwood
 
xUnit Style Database Testing
xUnit Style Database TestingxUnit Style Database Testing
xUnit Style Database Testing
Chris Oldwood
 
Robust Software
Robust SoftwareRobust Software
Robust Software
Chris Oldwood
 
Version Control - Patterns and Practices
Version Control - Patterns and PracticesVersion Control - Patterns and Practices
Version Control - Patterns and Practices
Chris Oldwood
 
Requiem (For Windows XP)
Requiem (For Windows XP)Requiem (For Windows XP)
Requiem (For Windows XP)
Chris Oldwood
 
(Re)Reading the Classics
(Re)Reading the Classics(Re)Reading the Classics
(Re)Reading the Classics
Chris Oldwood
 
Recycle Bin 101
Recycle Bin 101Recycle Bin 101
Recycle Bin 101
Chris Oldwood
 
The Art of Code
The Art of CodeThe Art of Code
The Art of Code
Chris Oldwood
 

More from Chris Oldwood (10)

Becoming a Bitter Programmer
Becoming a Bitter ProgrammerBecoming a Bitter Programmer
Becoming a Bitter Programmer
 
Waltzing with Branches [Agile o/t Beach]
Waltzing with Branches [Agile o/t Beach]Waltzing with Branches [Agile o/t Beach]
Waltzing with Branches [Agile o/t Beach]
 
Using xUnit as a Swiss-Aarmy Testing Toolkit
Using xUnit as a Swiss-Aarmy Testing ToolkitUsing xUnit as a Swiss-Aarmy Testing Toolkit
Using xUnit as a Swiss-Aarmy Testing Toolkit
 
xUnit Style Database Testing
xUnit Style Database TestingxUnit Style Database Testing
xUnit Style Database Testing
 
Robust Software
Robust SoftwareRobust Software
Robust Software
 
Version Control - Patterns and Practices
Version Control - Patterns and PracticesVersion Control - Patterns and Practices
Version Control - Patterns and Practices
 
Requiem (For Windows XP)
Requiem (For Windows XP)Requiem (For Windows XP)
Requiem (For Windows XP)
 
(Re)Reading the Classics
(Re)Reading the Classics(Re)Reading the Classics
(Re)Reading the Classics
 
Recycle Bin 101
Recycle Bin 101Recycle Bin 101
Recycle Bin 101
 
The Art of Code
The Art of CodeThe Art of Code
The Art of Code
 

Recently uploaded

Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 

Recently uploaded (20)

Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 

Monolithic Delivery

Editor's Notes

  1. I’m a freelance developer working with “enterprise grade” technology. This talk is about the misconception that monolithic architectures are inherently bad, the problem is not necessarily the system’s architecture but might be the method of delivery.
  2. What is a “monolith” anyway?
  3. Possibly the most common visual metaphor for a monolith – opaque, impenetrable, undiscoverable, etc.
  4. True monolithic systems involved the delivery of a single piece of hardware and software, e.g. a mainframe or home computer.
  5. What do we mean today by a monolithic architecture?
  6. An example of a monolithic service.
  7. Is it possible to apply the same rigid approach to an entire suite of services? Of course – multiple supposedly discrete systems can be tightly coupled by their service contracts. Example of multiple systems needing upgrading together due to coupling.
  8. But nobody would design an entire enterprise to be tightly coupled, would they? Microservices are an organisational pattern intended to decouple delivery by spreading around the jam.
  9. My message - it’s not the architecture’s fault per-se, it’s the method of delivery that is tightly coupled.
  10. Smaller units of work (stories / tasks). The MVP is not “everything”. Okay to deliver partially implemented features. Hide behind toggle if necessary.
  11. An example of how to decompose into smaller deliverables and how ordering can be overcome.
  12. Evolution of calculation engine from single simple console app to multiple services, data stores, scripts, tools, etc.
  13. No just functions and methods but the structure and architecture. See Michael Stal’s blog.
  14. Even deploying to a development or test environment is deploying – do it regularly. Minimise the time it takes to get a fix or feature from idea into production. Deploying regularly gets you good at it and minimises the impact of changes as they are smaller and the time-to-fix is shorter.
  15. Know your system’s behaviour. Instrument everything you can afford to – see the trends and compensate before performance drops off a cliff. Know your clients. Help your clients to help themselves by providing you with non-functional data, e.g. version number, correlation ID, etc.
  16. Prefer trunk based development by default. Branching has its uses, but know the costs and keep it short, e.g. Spikes. If branching for release, do it late, aim for higher quality first to avoid needing to in future.