The document discusses how to avoid "bullshit architecture" when building web applications. It notes that architectural failure can result in expensive implementation and operation costs. Such failures often happen due to making technology choices based on hype, personal preference, or inertia rather than actual requirements. The presentation advocates using a modular architecture with well-defined interfaces between components to provide flexibility and avoid expensive rework later.
1. The Zero Bullshit Architecture
Day Business & Tech Summit Chicago,
May 2008
Lars Trieloff, Product Manager
1
2. Before I start
“ One of the most salient
features of our culture is that
”
there is so much bullshit.
—Prof. Harry G. Frankfurt
2
3. Hello, my name is Lars Trieloff
! Product Manager Collaboration
and Digital Asset Management
! With Day since November 2007
! Background:
! Open Source Software Development
! Collaboration Software
! Technical Documentation (DocBook)
! Blogging
! IT Systems Engineering
3
4. Hello, my name is Lars Trieloff
! Product Manager Collaboration
and Digital Asset Management
Product
! With Day ManagNovember 2007
since ement
Department of “n:o
! Background: t
yet”
! Open Source Software Development
! Collaboration Software
! Technical Documentation (DocBook)
! Blogging
! IT Systems Engineering
3
6. Goal Review
We want to build web
applications
4
7. Goal Review
We want to build web
applications to deliver value to our users
4
8. Goal Review
We want to build web
applications to deliver value to our users
web applications that allow
integration
4
9. Goal Review
We want to build web
applications to deliver value to our users
web applications that allow
integration and enable personalization
4
10. Goal Review
We want to build web
applications to deliver value to our users
web applications that allow
integration and enable personalization
that establish new communication
channels
4
11. Goal Review
We want to build web
applications to deliver value to our users
web applications that allow
integration and enable personalization
that establish new communication
channels , increase usability
4
12. Goal Review
We want to build web
applications to deliver value to our users
web applications that allow
integration and enable personalization
that establish new communication
channels , increase usability
and scale to large amounts of users
and content
4
13. Goal Review
We want to build web
applications to deliver value to our users
web applications that allow
integration and enable personalization
that establish new communication
channels , increase usability
and scale to large amounts of users
and content within limited time & budget.
4
28. Architectural Failure
! Results of Architectural Failure
! Implementation and Operation too expensive
! Implementation too heavyweight, needs to much expensive
resources
! Implementation not scalable, scaling becomes expensive
! Implementation not flexible, implementing new features becomes
expensive
! System Components do not fit, integration becomes expensive
7
29. Architectural Failure
! Results of Architectural Failure
! Implementation and Operation too expensive
! Implementation too heavyweight, needs to much expensive
resources
! Implementation not scalable, scaling becomes expensive
! Implementation not flexible, implementing new features becomes
expensive
! System Components do not fit, integration becomes expensive
You can fix everything later on, if you pay for it
7
32. Why does Architectural Failure
happen?
“ No b o d y ego r
“Nob od y ve t
g o t fire drf o r
fired fo
b u y ing
buic ro s oIBM”
M y ing f t ”
8
33. Why does Architectural Failure
happen?
“ No b o d y ego r
“Nob od y ve t “ We h ave
g o t fire drf o r
fired fo be e n do i ng i t
b u y ing t h is way
buic ro s oIBM”
M y ing f t ” f o re ve r ”
8
34. Why does Architectural Failure
happen?
“ No b o d y ego r
“Nob od y ve t “ We h ave
g o t fire drf o r
fired fo be e n do i ng i t
b u y ing t h is way
buic ro s oIBM”
M y ing f t ” f o re ve r ”
“ L e t ’s us e
R uby o n R a il s,
e ve r y b o d y is
t a lk ing a b o u t
it.”
8
35. Why does Architectural Failure
happen?
“ No b o d y ego r
“Nob od y ve t “ We h ave
g o t fire drf o r
fired fo be e n do i ng i t
b u y ing t h is way
buic ro s oIBM”
M y ing f t ” f o re ve r ”
“ L e t ’s us e
R uby o n R a il s, “H o w w i l l
e ve r y b o d y is EJ B 3.0 lo o k
t a lk ing a b o u t on my
it.” re s ume? ”
8
36. Why does Architectural Failure
happen?
“ No b o d y ego r
“Nob od y ve t “ We h ave
g o t fire drf o r
fired fo be e n do i ng i t
b u y ing t h is way
buic ro s oIBM”
M y ing f t ” f o re ve r ”
“ L e t ’s us e “I do n o t nee d
R uby o n R a il s, “H o w w i l l
n o ca p aci ty
e ve r y b o d y is EJ B 3.0 lo o k p la n n ing . I am
t a lk ing a b o u t on my us ing a sc a la ble
it.” re s ume? ” la ngu age .”
8
37. Why does Architectural Failure
happen?
“ No b o d y ego r
“Nob od y ve t “ We h ave
g o t fire drf o r
fired fo be e n do i ng i t
b u y ing t h is way
buic ro s oIBM”
M y ing f t ” f o re ve r ”
“ L e t ’s us e “I do n o t nee d
R uby o n R a il s, “H o w w i l l
n o ca p aci ty
e ve r y b o d y is EJ B 3.0 lo o k p la n n ing . I am
t a lk ing a b o u t on my us ing a sc a la ble
it.” re s ume? ” la ngu age .”
8
38. Why does Architectural Failure
happen?
“ No b o d y ego r
“Nob od y ve t “ We h ave
Result: Bulls**t
g o t fire drf o r
fired fo
b u y ing
buic ro s oIBM”
M y ing f t ”
be e n do i ng i t
t h is way
f o re ve r ”
Architecture
“ L e t ’s us e
“H o w w i l l “I do n o t nee d
R uby o n R a il s, n o ca p aci ty
e ve r y b o d y is EJ B 3.0 lo o k p la n n ing . I am
t a lk ing a b o u t on my us ing a sc a la ble
it.” re s ume? ” la ngu age .”
8
48. Fighting Bullshit Architecture by
Example
SOAP
Bridge
Hibernate
Custom
ADO.NET EJB 3.0
Crawler
Lucene
SQL Server MySQL Oracle
Index
9
49. Fighting Bullshit Architecture by
Example
SOAP
Spring Webflow
Bridge
Hibernate
Custom
ADO.NET EJB 3.0
Crawler
Lucene
SQL Server MySQL Oracle
Index
9
50. Fighting Bullshit Architecture by
Example
JSF
SOAP
Spring Webflow
Bridge
Hibernate
Custom
ADO.NET EJB 3.0
Crawler
Lucene
SQL Server MySQL Oracle
Index
9
51. Fighting Bullshit Architecture by
Example
JSF Flash
SOAP
Spring Webflow
Bridge
Hibernate
Custom
ADO.NET EJB 3.0
Crawler
Lucene
SQL Server MySQL Oracle
Index
9
52. Fighting Bullshit Architecture by
Example
JSF Flash
SOAP
Spring Webflow
Bridge
Hibernate
Custom
ADO.NET EJB 3.0
Crawler
Active Lucene
SQL Server MySQL Oracle
Directory Index
9
53. Fighting Bullshit Architecture by
Example
JSF Flash
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active Lucene
SQL Server MySQL Oracle
Directory Index
9
54. Fighting Bullshit Architecture by
Example
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active Lucene
SQL Server MySQL Oracle
Directory Index
9
55. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active Lucene
SQL Server MySQL Oracle
Directory Index
9
56. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active Lucene
Directory
SQL Server MySQL
MySQL Oracle
Index
9
57. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active MySQL Lucene
Directory
SQL Server MySQ
MySQL Oracle
Index
9
58. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active MySQL Lucene
Directory
SQL Server MySQ
MySQL Oracle
Oracle Index
9
59. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active MySQL Lucene
Directory
SQL Server MySQ
MySQL Oracle
Oracle
Oracle Index
9
60. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active MySQL Lucene
Directory SQL Server
SQL Server MySQ
MySQL Oracle
Oracle
Oracle Index
9
61. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active SQL Ser ver
er MySQL Lucene
Directory
SQL Server
SQL MySQ
MySQL Oracle
Oracle
Oracle Index
9
62. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active SQL Ser ver
er MySQL Lucene
Directory
SQL Server
SQL MySQ
MySQL Oracle
Oracle
Oracle Index
9
63. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Hibernate
Custom
Kerberos ADO.NET
ADO.NET EJB 3.0
Crawler
Active SQL Ser ver
er MySQL Lucene
Directory
SQL Server
SQL MySQ
MySQL Oracle
Oracle
Oracle Index
9
64. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
SOAP
Bridge Spring Webflow
Bridge
Hibernate
Hibernate
Custom
Kerberos ADO.NET
ADO.NET EJB 3.0
Crawler
Active SQL Ser ver
er MySQL Lucene
Directory
SQL Server
SQL MySQ
MySQL Oracle
Oracle
Oracle Index
9
65. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
SOAP
Bridge Spring Webflow
Bridge
Hibernate
Hibernate
Custom
Kerberos ADO.NET
ADO.NET EJB 3.0
EJB 3.0
Crawler
Active SQL Ser ver
er MySQL Lucene
Directory
SQL Server
SQL MySQ
MySQL Oracle
Oracle
Oracle Index
9
66. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
SOAP
Bridge
Bridge Spring Webflow
Spring Webflow
Hibernate
Hibernate
Custom
Kerberos ADO.NET
ADO.NET EJB 3.0
EJB 3.0
Crawler
Active SQL Ser ver
er MySQL Lucene
Directory
SQL Server
SQL MySQ
MySQL Oracle
Oracle
Oracle Index
9
67. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
SOAP
Bridge
Bridge Spring Webflow
Spring Webflow
Hibernate
Hibernate
Custom
Kerberos ADO.NET
ADO.NET EJB 3.0
EJB 3.0
Crawler
Active SQL Ser ver
er MySQL Lucene
Directory
SQL Server
SQL MySQ
MySQL Oracle
Oracle
Oracle Index
10
68. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
SOAP
Bridge
Bridge Spring Webflow
Spring Webflow
Hibernate
Hibernate
Custom
Kerberos ADO.NET
ADO.NET EJB 3.0
EJB 3.0
Crawler
Active SQL Ser ver
er MySQL Lucene
Directory
SQL Server
SQL MySQ
MySQL Oracle
Oracle
Oracle Index
10
69. Fighting Bullshit Architecture by
Example
Can we please Portal
create an AIR app to
NTLM
JSF Flash
get it to the
SOAP
SOAP
Bridge
Bridge Spring Webflow
Spring Webflow
Hibernate
Hibernate
desktop?
Custom
Kerberos ADO.NET
ADO.NET EJB 3.0
EJB 3.0
Crawler
Active SQL Ser ver
er MySQL Lucene
Directory
SQL Server
SQL MySQ
MySQL Oracle
Oracle
Oracle Index
10
70. Fighting Bullshit Architecture by
Example
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active Lucene
SQL Server MySQL Oracle
Directory Index
11
71. Fighting Bullshit Architecture by
Example
Wait, I have some Portal
questions
NTLM
JSF Flash
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active Lucene
SQL Server MySQL Oracle
Directory Index
11
72. Where is our data stored?
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active Lucene
SQL Server MySQL Oracle
Directory Index
12
73. And where is our content? I
cannot see it.
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active Lucene
SQL Server MySQL Oracle
Directory Index
13
74. This is a n-tier architecture.
But how many layers are there?
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active Lucene
SQL Server MySQL Oracle
Directory Index
14
75. Where is the frontend? And
who controls the application?
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active Lucene
SQL Server MySQL Oracle
Directory Index
15
76. How does this scale? And why
should it scale?
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active Lucene
SQL Server MySQL Oracle
Directory Index
16
77. Let me extend this: DB migration, EJB
annotation, POJO definition, Spring XML, ...
Portal
JSF Flash
NTLM
SOAP
Spring Webflow
Bridge
Hibernate
Custom
Kerberos ADO.NET EJB 3.0
Crawler
Active Lucene
SQL Server MySQL Oracle
Directory Index
17
80. Best of both worlds
data base fil es yste m
hier-
integ archi
rity structure es
read streams
tx query write locking access
control
multi-
value un- ning
structured “full- obser- versio
text” sort vation
order
content reposit or y
19
97. Comparing approaches - Languages
Portal
JSF Flash
NTLM
SOAP
SOAP
Bridge
Bridge Spring Webflow
Spring Webflow
Hibernate
Hibernate
Custom
Kerberos ADO.NET
ADO.NET EJB 3.0
EJB 3.0
Crawler
Active SQL Ser ver
er MySQL Lucene
Directory
SQL Server
SQL MySQ
MySQL Oracle
Oracle
Oracle Index
22
99. Comparing approaches - Interfaces
Portal
JSF Flash
NTLM
SOAP
SOAP
Bridge
Bridge Spring Webflow
Spring Webflow
Hibernate
Hibernate
Custom
Kerberos ADO.NET
ADO.NET EJB 3.0
EJB 3.0
Crawler
Active SQL Ser ver
er MySQL Lucene
Directory
SQL Server
SQL MySQ
MySQL Oracle
Oracle
Oracle Index
24
100. Building an alternative
Web Browser (Frontend Runtime)
Widgets Gadgets Sling.js
OSGi Scripting O/C Mapping
Apache Sling
CRX (+Connectors)
25
101. Building an alternative
Web Browser (Frontend Runtime)
If you need a
Widgets Gadgets Sling.js
desktop client: try
Prism & Fluid
OSGi Scripting
Apache Sling
O/C Mapping
CRX (+Connectors)
25