Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Whoops! Where did my architecture go?
Search
Oliver Drotbohm
October 13, 2016
Programming
2
780
Whoops! Where did my architecture go?
Slides of the talk I gave at GOTO London, 2016.
Oliver Drotbohm
October 13, 2016
Tweet
Share
More Decks by Oliver Drotbohm
See All by Oliver Drotbohm
What's new in Spring Modulith?
olivergierke
1
200
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
4
1.3k
It Takes Two to Tango – Designing Module Interactions in Modulithic Spring Applications
olivergierke
5
760
Bottom-Up Architecture – Bridging the Achitecture Code Gap
olivergierke
4
1k
Spring Modulith – A Deep Dive
olivergierke
9
4.8k
Spring for the Architecturally Curious Developer
olivergierke
5
1.9k
Spring Boot 3 & Spring Framework 6
olivergierke
4
2.1k
Architecturally-evident Java Applications with jMolecules
olivergierke
9
3k
A Deep Dive into Spring Application Events
olivergierke
12
3.4k
Other Decks in Programming
See All in Programming
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
8
3.3k
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
360
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
960
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
3.8k
TestingOsaka6_Ozono
o3
0
170
マスタデータ問題、マイクロサービスでどう解くか
kts
0
120
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
3
1.1k
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
160
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
570
SwiftUIで本格音ゲー実装してみた
hypebeans
0
490
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
130
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
630
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
190
Why Our Code Smells
bkeepers
PRO
340
57k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
250
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
91k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
0
950
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
Building Adaptive Systems
keathley
44
2.9k
Transcript
Whoops! Where did my architecture go? In between a monolith
and a system of systems mess… / @olivergierke
None
None
Background Consulting & engineering @ Pivotal Lots of code reviews
Eoin Woods‘ talk on InfoQ
Roadmap Divide and conquer Of layers and slices The modular
monolith
Divide and conquer
Component Single unit to understand
Component Single unit to change
Component Scope of risk of change
B Smaller unit to understand A
B Reduced risk of change A
B Cost of separation A
B Definition and maintenance of dependencies A
Of layers and slices…
Presentation Service Data Access Billing Inventory Order
Layers Well understood Known to developers Less important to business
Slices Hardly understood New to developers Key for business requirements
Presentation Service Data Access Billing Inventory Order
Monolith VS. System of Systems
Monolith VS. System of Systems Order Inventory Billing Order Inventory
Billing
In-process calls VS. Inter-process calls Order Inventory Billing Order Inventory
Billing
Performance? Overhead? Error scenarios? Order Inventory Billing Order Inventory Billing
" If you can’t build a modular monolith, why do
you think microservices are the answer? — Simon Brown
How to manage modularity in different architectural contexts?
Means to enforce context boundaries? Order Inventory Billing Order Inventory
Billing
The modular monolith
How to implement a modular monolith?
How to maintain a modular monolith?
Bounded Context all the things! Domain-Driven Design is a great
idea! Surprise! In a monolith, too!
Architecturally- evident code
Code analysis jDepend Sonarcube Structure 101 / Sonargraph jQAssistant
A plain Java based approach
How to write code that’s less likely to deteoriate?
Presentation Service Data Access Billing Inventory Orders
Packages
….layer.slice ….slice.layer ….slice
….web.core ….service.core ….repository.core
….core.web ….core.service ….core.repository
….core ….customer ….account
Does it make a difference?
Dependency management
Orders Inventory Billing Orders Inventory Billing
A rule violation is just an @Inject away! Orders Inventory
Billing
You only need to manage what you can refer to…
Layers first Leaks slice internals Lower layers visible to everyone
Needs to be public :( Allows other code to circumvent
business logic
Slices only Keeps technical division private Encapsulates business module Internals
understood anyway
All package protected Compiler induced dependency control
Presentation Service Data Access Billing Inventory Order
Presentation Service Data Access Billing Inventory Order
Resources Blogpost Sonargraph jQAssistant Spring Data JPA @ GitHub
Sample Code http://github.com/olivergierke/ whoops-architecture
Thanks & Credits Eoin Woods — Talk @ InfoQ Stefan
Tilkov — Talk @ InfoQ