“Good Enough” Architecture
Stefan Tilkov stefan.tilkov@innoq.com @stilkov
GOTO Berlin 2019
"Tegel Airport TXL Berlin May 2012 - 19" by andynash is licensed under CC BY-SA 2.0
Good Enough Architecture Stefan Tilkov stefan.tilkov@innoq.com - - PowerPoint PPT Presentation
GOTO Berlin 2019 Good Enough Architecture Stefan Tilkov stefan.tilkov@innoq.com @stilkov "Tegel Airport TXL Berlin May 2012 - 19" by andynash is licensed under CC BY-SA 2.0 (Software) Architecture De f initions Fundamental
Stefan Tilkov stefan.tilkov@innoq.com @stilkov
GOTO Berlin 2019
"Tegel Airport TXL Berlin May 2012 - 19" by andynash is licensed under CC BY-SA 2.0
@stilkov
Fundamental concepts or properties of a system in its environment embodied in its elements, relationships, and in the principles of its design and evolution (ISO 42010) Whatever the architect considers important enough to merit their attention Architecture represents the significant design decisions that shape a system, where significant is measured by cost
@stilkov
@stilkov
@stilkov
https:/ /iso25000.com/index.php/en/iso-25000-standards/iso-25010
written in a day depends on German tax law a dozen users half
planet
@stilkov
@stilkov
Context:
Observation(s):
Lesson(s) learned:
@stilkov
@stilkov
Large customers (“strategic”) Small customers (“long tail”) Specific General High Low (Acceptable) Cost Customization (Need) The Solution
@stilkov
@stilkov
@stilkov
@stilkov
Team 1 Team 3 Team 2
@stilkov Order Service Support Fulfillment Billing Checkout
@stilkov
@stilkov
@stilkov
@stilkov Order Service Support Fulfillment Billing Checkout
@stilkov Support Fulfillment Billing Checkout Order Service
@stilkov
globally
@stilkov
@stilkov
Modeling Business Concept
3 6 4 5 2 1
Technical Concept Implementation Module Test Integration Test Rollout Vision
Modeling
@stilkov
Policy Holder Clause
* *
regionCode
Model Name New Name (Meaning) Description Release Introduced taxClass regionCode … 10.3 …
@stilkov
be found
acceptable
@stilkov
@stilkov
number of developers strength of decoupling methods modules components μservices systems
@stilkov
System Logic Data UI Module Module Module
@stilkov
System System System Logic Data UI Logic Data UI Logic Data UI
@stilkov
In-page Cross-page JavaScript method calls Links & redirects Shared abstractions & frameworks Micro-architecture Common language runtime HTTP HTML 5 JS platform Standard Browser
@stilkov
at runtime
created needless extra work
created a new bottle neck
@stilkov
@stilkov
@stilkov
@stilkov
brokers as clients
@stilkov
Oracle DB Oracle Forms App
@stilkov
Oracle DB
Java/JSP Web App Lots of PL/SQL
@stilkov
Oracle DB
Java/JSP Web App Lots of PL/SQL .NET Web Service .NET Web Service .NET Web Service .NET Web Service
@stilkov
Oracle DB
Java/JSP Web App Lots of PL/SQL .NET Web Service .NET Web Service .NET Web Service .NET Web Service
Oracle DB
Java/JSP Web App Lots of PL/SQL .NET Web Service .NET Web Service .NET Web Service .NET Web Service
Company A Company B
@stilkov
Java/JSP Web App Lots of PL/SQL .NET Web Service .NET Web Service .NET Web Service .NET Web Service
Oracle DB
Java/JSP Web App Lots of PL/SQL .NET Web Service .NET Web Service .NET Web Service .NET Web Service
Company A Company B
@stilkov
Java/JSP Web App .NET Web Service .NET Web Service .NET Web Service .NET Web Service
Oracle DB
Java/JSP Web App .NET Web Service .NET Web Service .NET Web Service .NET Web Service
Company A Company B
Mongo Couch/Pouch Mongo MySQL
@stilkov
Java/JSP Web App .NET Web Service .NET Web Service .NET Web Service .NET Web Service
Oracle DB
Java/JSP Web App .NET Web Service .NET Web Service .NET Web Service .NET Web Service
Company A Company B
Mongo Couch/Pouch Mongo MySQL
C++ Encryption Lib
@stilkov
@stilkov
vendor
@stilkov
Magical Integration Broker
Custom App CotS DB External Partner Other Group Company Parent Company External Partner Custom App Custom App CotS
@stilkov
Magical Integration Broker
Custom App CotS DB External Partner Other Group Company Parent Company External Partner Custom App Custom App CotS
Magical Integration Broker
Routing Conversion Transformation Transcoding Transport Error handling Business logic …
@stilkov Custom App CotS DB External Partner Other Group Company Parent Company External Partner Custom App Custom App CotS Pub/Sub Messaging
@stilkov Custom App CotS DB External Partner Other Group Company Parent Company External Partner Custom App Custom App CotS Pub/Sub Messaging
Pub Sub Messaging
Pub/Sub routing Transport Error handling
Adapter (Docker Container)
Conversion Transformation Transcoding Error handling Business logic
@stilkov
@stilkov
@stilkov
@stilkov
@stilkov
@stilkov
@stilkov
Stefan Tilkov @stilkov stefan.tilkov@innoq.com Phone: +49 170 471 2625
innoQ Deutschland GmbH
40789 Monheim am Rhein Germany Phone: +49 2173 3366-0 innoQ Schweiz GmbH
CH-6330 Cham Switzerland Phone: +41 41 743 0116
www.innoq.com
Ohlauer Straße 43 10999 Berlin Germany Phone: +49 2173 3366-0
63067 Offenbach Germany Phone: +49 2173 3366-0 Kreuzstraße 16 80331 München Germany Phone: +49 2173 3366-0
@stilkov
www.innoq.com
OFFICES
Monheim Berlin Offenbach Munich Hamburg Zurich
FACTS
~150 employees Privately owned Vendor-independent
SERVICES
Strategy & technology consulting Digital business models Software architecture & development Digital platforms & infrastructures Knowledge transfer, coaching & trainings
CLIENTS
Finance Telecommunications Logistics E-commerce Fortune 500 SMBs Startups
@stilkov
@stilkov