Share
Embed
Architecture War Stories – E-Post 2014-02-14
Stefan Tilkov
February 24, 2014
Transcript
67 slides
-
Stefan Tilkov | @stilkov | innoQ Architecture War Stories Deutsche
Post E-Post Development 02/24/2014 Monday 24 February 14 -
Ground Rules No offense – just lessons learned Most systems
are in production Still, many {managers | users | admins} are happy Monday 24 February 14 -
Context Customer care, accounting & billing Large-scale big-bang replacement effort
> 150 developers > 20 architects/framework devs Java, Swing, CORBA, Oracle Custom persistence framework Monday 24 February 14 -
Server Identity Map 1 7 3 9 Tx1 Tx2 Transaction
Map 1 9 1 2 - Monday 24 February 14 -
Global synchronization? 2 PC? Cache notifications? Events? Transaction locality? Client
Affinity? Monday 24 February 14 -
Lessons learned Don’t cache the cache In distributed systems, application
state is your enemy If it’s “sophisticated”, you probably shouldn’t be doing it Development ≠ production Monday 24 February 14 -
Context Insurance system Maintenance 1000 person months/year Smalltalk, COBOL, C,
IMS, DB2 Homegrown COBOL OO system Monday 24 February 14 -
Online Transactions Online DB Access Layer Interface DB Batch External
Module External Module External Module Tables Foreign Keys Indexes OR/M Events Deltas Blobs Monday 24 February 14 -
Lessons learned Data should be free of code dependencies The
longer you store it, the simpler it needs to be Beware of smelly blobs Monday 24 February 14 -
Context Strategic health care platform Architecture team 20+10 people Build
foundation for 800+ person year effort Monday 24 February 14 -
Vendor Selection Collect and agree on requirements Week 0 Conduct
market research Week 8 Send out RFP to selected vendors Week 10 Evaluate responses, create shortlist, start PoC Week 14 Evaluate PoC results, recommend vendor X Week 20 Accept your CEO picked vendor Y Week 26 Monday 24 February 14 -
Vendor Selection Collect and agree on requirements Week 0 Conduct
market research Week 8 Send out RFP to selected vendors Week 10 Evaluate responses, create shortlist, start PoC Week 14 Evaluate PoC results, recommend vendor X Week 20 Shutdown company Week 26 Monday 24 February 14 -
Lessons learned Just do it Better ask for forgiveness than
permission Monday 24 February 14 -
Context Large-scale insurance system Model-driven development > 100 developers 2
Releases/year Monday 24 February 14 -
Modeling Business Concept 0 3 6 4 5 2 1
Technical Concept Implementation Module Test Integration Test Rollout Vision What if you miss your slot? Modeling Monday 24 February 14 -
Policy Holder Clause - id - value - dueDate -
name - address - status - text - validity - taxClass * * regionCode Model Name New Name (Meaning) Description Release Introduced taxClass regionCode … 10.3 … Monday 24 February 14 -
Lessons learned Centralized responsibility hurts Faced with too much rigidity,
a way around the rules will be found Just because you’re used too it doesn’t mean it’s acceptable Monday 24 February 14 -
Context Telecommunications OSS platform Support new devices without code changes
> 100 developers > 3 countries Monday 24 February 14 -
Warning ((Meta) meta) models) are a perfect means to waste
time, on a highly inspiring intellectual level, without any results for years Highly complex methodology, tool support, agreement processes Consultants with exclusive pricing strategies Monday 24 February 14 -
Upload «servlet» DB Model XML XML XML XML XML Transformation
«slsb» .pl .sh Schema .sql Interface .idl Call «ant task» Quartz Transformer «servlet» Objects «entity» Generic CRUD UI Access «slsb» Monday 24 February 14 -
Lessons learned If it makes you want to scratch your
eyes out, you might not want to do it Sometimes constraints need to be fought Beware all things “meta” Monday 24 February 14 -
Consumer/Provider Middleware Lib Transport Abstraction Messaging API Business Logic Configuration
Service Registry Service Monday 24 February 14 -
Consumer/Provider Middleware Lib Transport Abstraction Messaging API Business Logic XML
Obj Consumer/Provider Middleware Lib Transport Abstraction Messaging API Business Logic Message XML Monday 24 February 14 -
“The Product” Consumer/Provider Middleware Lib Transport Abstraction Messaging API Business
Logic XML Obj OO Mapper Obj XML Transport Abstraction HTTP CORBA JMS Object API Monday 24 February 14 -
“The Product” Transport Abstraction OO Mapper Obj XML Object API
Messaging API Interceptor Interceptor SOAP Message Header Body XML Message XML Obj null SOAP Message Header Body XML Monday 24 February 14 -
Lessons learned Fight the madness Tunneling is the root of
all evil Don’t be too smart Monday 24 February 14 -
Context E-Commerce (retail) provider Global customer base Catalog/CMS/Shop/Fulfillment Multi-tenant Highly
customizable Monday 24 February 14 -
Large customers (“strategic”) Small customers (“long tail”) Specific General High
Low (Acceptable) Cost Customization (Need) The Solution Monday 24 February 14 -
Lessons learned Don’t be all things to all people Sometimes
specific code is preferable Saying “no” might help Monday 24 February 14 -
1. The Enthusiastic Developer “This stuff is cool - let’s
build programs! For real people!” Monday 24 February 14 -
Boring, boring, boring. Create Customer Find Customer List Customers Edit
Customer Delete Customer Create Order Find Order List Orders Edit Order Delete Order Create Product Find Product List Products Edit Product Delete Product Monday 24 February 14 -
2. The Disillusioned Developer “Oh. Real people have boring problems.”
Monday 24 February 14 -
Create Customer Find Customer List Customers Edit Customer Delete Customer
Create Order Find Order List Orders Edit Order Delete Order Create Product Find Product List Products Edit Product Delete Product Monday 24 February 14 -
Create Thing Find Thing List Thing Edit Thing Delete Thing
Monday 24 February 14 -
3. The Enthusiastic Architect “Generic solutions! Cool!” Create Thing Find
Thing List Thing Edit Thing Delete Thing Monday 24 February 14 -
‘ ‘Some architects, when faced with a problem, think “Hey,
I’ll use a generic solution.” Now they have problem and a GenericProblemFactoryFacade. (with apologies to jwz) Monday 24 February 14 -
4. The Disillusioned Architect KISS YAGNI Lean Minimable viable product
Story focus Monday 24 February 14 -
Never-ending supply of {war stories | catastrophes | disasters} seems
guaranteed Monday 24 February 14 -
Q&A Stefan Tilkov, @stilkov [email protected] Phone: +49 170 471 2625
innoQ Deutschland GmbH Krischerstr. 100 40789 Monheim am Rhein Germany Phone: +49 2173 3366-0 innoQ Schweiz GmbH [email protected] Gewerbestr. 11 CH-6330 Cham Switzerland Phone: +41 41 743 0116 www.innoq.com Ohlauer Straße 43 10999 Berlin Germany Phone: +49 2173 3366-0 Robert-Bosch-Straße 7 64293 Darmstadt Germany Phone: +49 2173 3366-0 Radlkoferstraße 2 D-81373 München Telefon +49 (0) 89 741185-270 Monday 24 February 14