Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
The 7 Deadly Sins of Microservices
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Tareq Abedrabbo
November 27, 2014
Technology
1.3k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
The 7 Deadly Sins of Microservices
MuCon 2014
Tareq Abedrabbo
November 27, 2014
More Decks by Tareq Abedrabbo
See All by Tareq Abedrabbo
Not a SO(A) Trivial Question!
tareqabedrabbo
0
91
Designing APIs for Data Driven Systems
tareqabedrabbo
0
73
Things I wish I'd known before I started with Microservices
tareqabedrabbo
0
700
Building a Scalable Event Service with Cassandra: Design to Code
tareqabedrabbo
1
510
The Ubiquitous Graph
tareqabedrabbo
0
240
The 7 Deadly Sins of Microservices
tareqabedrabbo
0
660
Building a Scalable Event Service with Cassandra: Design to Code
tareqabedrabbo
0
120
Time Series and Events: Storage and Querying Strategies with Cassandra
tareqabedrabbo
0
350
Building a Scalable Event Service with Cassandra
tareqabedrabbo
1
150
Other Decks in Technology
See All in Technology
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
530
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
2
310
spanner-autoscalerに学ぶ CRD設計パターン 〜自動化と緊急時対応を両立する Kubernetesコントローラーの作り方〜
tkuchiki
0
230
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
450
Codex概要
ymiya55
0
250
3人で1000GPU超を統合運用する?マルチクラウド&オンプレを跨ぐ、構築と運用のリアル!
kazukun0716
2
820
DAMOS - The Smart Cruise Control for RAM
ennael
PRO
1
110
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
150
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
290
Apache Iceberg が拓く AI 時代のオープンレイクハウス
tomtanaka
0
210
OpenClawでAzure DevOpsのWiki更新を自動化する - クラウドAIだけでは届かない場所へ
yutakaosada
0
140
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
leveragestech
PRO
0
140
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Odyssey Design
rkendrick25
PRO
2
850
The untapped power of vector embeddings
frankvandijk
2
1.9k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
450
Optimizing for Happiness
mojombo
378
71k
Marketing to machines
jonoalderson
1
5.8k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
540
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
290
Transcript
The 7 Deadly Sins of Microservices Tareq Abedrabbo - MuCon
2014
About me CTO at OpenCredo Author, developer, open-source committer, with
a long term interest in service-based architecture
Disclaimer Any resemblance to existing projects, overrunning or axed, is
purely intentional!
What are microservices?
Microservices Design Principles Tools Decoupling Separation of concerns Encapsulation Engineering
Practices Spring Boot RabbitMQ Hystrix Automation Scalability Fault-tolerance Continuous Delivery Testing Dropwizard Config Management
Why microservices anti-patterns?
1. The Enterprise-OSGI-Application-Service-Bus Building the wrong thing
There is no unique way to implement microservices
Don't build what you don't need - think about your
goals and your non-goals
Questions to ask: - What languages do I need to
support? - What libraries? - How dynamic and flexible does my implementation need to be?
Communicate goals and non-goals. Keep it simple.
2. Porcine Cosmetics Failing to adopt a contract-first design approach
Why do we need service contracts?
Abstraction
Encapsulation
Composition
Always start by designing the contract of your service (CDD,
it is like TDD but for microservices!)
Seriously, we've known this for 10 years!
3. Message in a Bottle Assuming the wrong communication protocol
Typically, microservices use http or lightweight messaging to communicate. Messages
can be binary or human-readable
Don't enforce one particular communication pattern before understanding what you
really need
Do I need: - Simple request/response paradigm? - Message persistence?
- Reliability? - Asynchronous notification?
Distinguish between services: external vs internal core vs supporting
4. The Single Domain of Failure Introducing a shared domain
model
Designing a shared domain model is common in a monolithic
architecture (it is even a best practice!)
Things domain models are used for: - drive business logic
- map business entities to the database - manage input & output
The shared domain model fallacy: we are in full control
of the context and the boundaries of the application
A shared domain model breaks encapsulation and introduces coupling between
services
Shared dependency on volatile binary artefacts makes deployments really hard
Define the domain in terms of service interaction, not service
implementation
Resource-oriented design
5. The Distributed Monolith Defining inappropriate service boundaries
A distributed monolith is an application that externalises its internal
services indiscriminately
Internal application components don't always make good microservices
Internal application services: - often have the wrong granularity -
can have interdependencies - or a dependency on a shared domain
Microservices are not a remoting abstraction
Design services that have business meaning and clear boundaries
6. The Horseless Cart Neglecting Macro System Concerns
Microservices: micro vs macro (macro is often missed)
Macro things to think about: - updating, deploying and scaling
services independently - functional, performance and regression testing - system-wide behaviour, including failure scenarios
Design for a distributed system (runtime introspection, fault-tolerance, latency, failure,
etc...)
Introduce continuous delivery and automated testing form the very start
7. The Sausage Factory Disregarding the Human Factor
In microservices world, developers need to have good understanding of:
- Messaging - Scalability, fault-tolerance and resilience - Integration and remoting And potentially learn a few new technologies and tools
Monolithic architecture is a rabbit hole!
Microservices do not make up for the gaps in your
developers' skills
Invest in your developers
–Melvin Conway “organisations which design systems […] are constrained to
produce designs which are copies of the communication structures of these organisations.”
Corollary organisations that operate in silos cannot benefit from a
microservices architecture
Microservices do not fix broken organisations
Collaboration on a microservices project between: - devs and ops
- techies and business - and across teams
The essence of microservices is collaboration
In conclusion
Microservices: it feels a little bit like quantum mechanics!
Hopefully, we can now begin to have pragmatic answers to
questions such as: - How do I design a (micro)service? - How big or small should a service be? - Should a microservices be reusable?
Links Microservice anti-patterns: http://bit.ly/ microservices-antipatterns OpenCredo: http://www.opencredo.com/blog Twitter: @tareq_abedrabbo Personal
blog: http://www.terminalstate.net Thank you! Any questions?
Credits • https://unsplash.com/ • The horseless cart: https://www.flickr.com/photos/ ellesmerefnc/4249596803/ •
Message in a bottle: https://www.flickr.com/photos/ rpenalozan/5128413528