Lars Trieloff, Product Manager The Zero Bullshit Architecture Day Business & Tech Summit Chicago, May 2008 1
May 09, 2015
Lars Trieloff, Product Manager
The Zero Bullshit Architecture
Day Business & Tech Summit Chicago,
May 2008
1
Before I start
2
One of the most salient
features of our culture is that
there is so much bullshit.“”—Prof. Harry G. Frankfurt
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
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
Product Management: Department of “not
yet”
Goal Review
4
Goal Review
4
We want to build web applications
Goal Review
4
We want to build web applications to deliver value to our users
Goal Review
4
We want to build web applications to deliver value to our users
web applications that allow integration
Goal Review
4
We want to build web applications to deliver value to our users
web applications that allow integration and enable personalization
Goal Review
4
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
Goal Review
4
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
Goal Review
4
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
Goal Review
4
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.
Sounds easy, but
5
May you have interesting software projects
Sounds easy, but
5
Why do so many software projects end up becoming interesting?
May you have interesting software projects
Where do projects become interesting?
6
Where do projects become interesting?
6
Requirements
Concept
Where do projects become interesting?
6
Requirements
Concept
Where do projects become interesting?
6
Requirements
Architecture
Implementation
Concept
Where do projects become interesting?
6
Requirements
Architecture
Operations
Implementation
Concept
Where do projects become interesting?
6
Requirements
Architecture
Operations
Implementation
Concept
Where do projects become interesting?
6
Requirements
$$ $ $ $$ $$
Architecture
Operations
Implementation
Concept
Where do projects become interesting?
6
Requirements
$$ $ $ $$
$ $
$$
$ $$ $Architecture
Operations
Implementation
Concept
Where do projects become interesting?
6
Requirements
$
$$ $ $ $
$
$
$
$
$ $$
$
$
$$
$ $$ $Architecture
Operations
Implementation
Concept
Where do projects become interesting?
6
Requirements
$
$$ $ $
$$
$
$$
$
$
$ $
$
$
$ $$
$
$
$
$$
$ $$ $Architecture
Operations
Implementation
Concept
Where do projects become interesting?
6
Requirements
$
$
$
$
$$
$$
$$$
$ $ $
$$
$
$
$$ $
$
$
$
$ $
$
$$$
$
$$
$$
$
$
$
$$
$ $
$
$
$ $$
$
$
$
$$
$ $$ $Architecture
Operations
Implementation
Concept
Where do projects become interesting?
6
Requirements
$
$
$
$
$$
$$
$$$
$ $ $
$$
$
$
$$ $
$
$
$
$ $
$
$$$
$
$$
$$
$
$
$
$$
$ $
$
$
$ $$
$
$
$
$$
$ $$ $Architecture
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
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
You can fix everything later on, if you pay for it
Why does Architectural Failure happen?
8
Why does Architectural Failure happen?
8
“Nobody got fired for buying IBM”
Why does Architectural Failure happen?
8
“Nobody got fired for buying IBM”
“Nobody ever got fired for buying Microsoft”
Why does Architectural Failure happen?
8
“Nobody got fired for buying IBM”
“Nobody ever got fired for buying Microsoft”
“We have been doing it this way forever”
Why does Architectural Failure happen?
8
“Nobody got fired for buying IBM”
“Nobody ever got fired for buying Microsoft”
“We have been doing it this way forever”
“Let’s use Ruby on Rails, everybody is talking about it.”
Why does Architectural Failure happen?
8
“Nobody got fired for buying IBM”
“Nobody ever got fired for buying Microsoft”
“We have been doing it this way forever”
“Let’s use Ruby on Rails, everybody is talking about it.”
“How will EJB 3.0 look on my resume?”
Why does Architectural Failure happen?
8
“Nobody got fired for buying IBM”
“Nobody ever got fired for buying Microsoft”
“We have been doing it this way forever”
“Let’s use Ruby on Rails, everybody is talking about it.”
“How will EJB 3.0 look on my resume?”
“I do not need no capacity planning. I am using a scalable language.”
Why does Architectural Failure happen?
8
“Nobody got fired for buying IBM”
“Nobody ever got fired for buying Microsoft”
“We have been doing it this way forever”
“Let’s use Ruby on Rails, everybody is talking about it.”
“How will EJB 3.0 look on my resume?”
“I do not need no capacity planning. I am using a scalable language.”
Why does Architectural Failure happen?
8
“Nobody got fired for buying IBM”
“Nobody ever got fired for buying Microsoft”
“We have been doing it this way forever”
“Let’s use Ruby on Rails, everybody is talking about it.”
“How will EJB 3.0 look on my resume?”
“I do not need no capacity planning. I am using a scalable language.”
Result: Bulls**t Architecture
Fighting Bullshit Architecture by Example
9
Fighting Bullshit Architecture by Example
9
MySQL
Fighting Bullshit Architecture by Example
9
MySQL
Hibernate
Fighting Bullshit Architecture by Example
9
SQL Server MySQL
Hibernate
Fighting Bullshit Architecture by Example
9
SQL Server MySQL
Hibernate
ADO.NET
Fighting Bullshit Architecture by Example
9
SQL Server MySQL
Hibernate
ADO.NET
SOAP Bridge
Fighting Bullshit Architecture by Example
9
SQL Server MySQL Oracle
Hibernate
ADO.NET
SOAP Bridge
Fighting Bullshit Architecture by Example
9
SQL Server MySQL Oracle
Hibernate
EJB 3.0ADO.NET
SOAP Bridge
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0ADO.NET
SOAP Bridge
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Active Directory
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
Portal
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
Portal
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQL
Portal
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQL
Portal
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracle
Portal
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracleOracle
Portal
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracleOracleSQL Server
Portal
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracleOracleSQL ServerSQL Server
Portal
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracleOracleSQL ServerSQL Server
Hibernate
Portal
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracleOracleSQL ServerSQL Server
Hibernate
ADO.NET
Portal
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracleOracleSQL ServerSQL Server
Hibernate
ADO.NET
SOAP Bridge
Portal
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracleOracleSQL ServerSQL Server
Hibernate
ADO.NET
SOAP Bridge
EJB 3.0
Portal
Fighting Bullshit Architecture by Example
9
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracleOracleSQL ServerSQL Server
Hibernate
ADO.NET
SOAP Bridge
EJB 3.0
Spring Webflow
Portal
Fighting Bullshit Architecture by Example
10
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracleOracleSQL ServerSQL Server
Hibernate
ADO.NET
SOAP Bridge
EJB 3.0
Spring Webflow
Portal
Fighting Bullshit Architecture by Example
10
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracleOracleSQL ServerSQL Server
Hibernate
ADO.NET
SOAP Bridge
EJB 3.0
Spring Webflow
Portal
Fighting Bullshit Architecture by Example
10
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracleOracleSQL ServerSQL Server
Hibernate
ADO.NET
SOAP Bridge
EJB 3.0
Spring Webflow
Can we please create an AIR app to
get it to the desktop?
Portal
Fighting Bullshit Architecture by Example
11
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
Portal
Fighting Bullshit Architecture by Example
11
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
Wait, I have some questions
Portal
12
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
Where is our data stored?
Portal
13
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
And where is our content? I cannot see it.
Portal
14
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
This is a n-tier architecture. But how many layers are there?
Portal
15
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
Where is the frontend? And who controls the application?
Portal
16
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
How does this scale? And why should it scale?
Portal
17
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
Let me extend this: DB migration, EJB annotation, POJO definition, Spring XML, ...
Building an alternative
18
Building an alternative
18
CRX (+Connectors)
Best of both worlds
19
database filesystem
content repository
read
write
hier-archiesstreams
locking accesscontrol
integrity structure
tx query
un-structured “full-
text” sortorder
versioning
obser-vation
multi-value
Building an alternative
20
CRX (+Connectors)
Building an alternative
20
CRX (+Connectors)
Apache Sling
Building an alternative
20
CRX (+Connectors)
Apache Sling
OSGi
Building an alternative
20
CRX (+Connectors)
Apache Sling
OSGi Scripting
Building an alternative
20
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Building an alternative
20
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Building an alternative
20
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Widgets
Building an alternative
20
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Widgets Gadgets
Building an alternative
20
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Widgets Gadgets Sling.js
Comparing approaches - Languages
21
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Widgets Gadgets Sling.js
Comparing approaches - Languages
21
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Widgets Gadgets Sling.js
JS
Comparing approaches - Languages
21
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Widgets Gadgets Sling.js
JS JS
Comparing approaches - Languages
21
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Widgets Gadgets Sling.js
JS JS JS
Comparing approaches - Languages
21
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Widgets Gadgets Sling.js
JS JS JS
Java
Comparing approaches - Languages
21
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Widgets Gadgets Sling.js
JS JS JS
Java JSP
Comparing approaches - Languages
21
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Widgets Gadgets Sling.js
JS JS JS
Java JSP JS
Portal
Comparing approaches - Languages
22
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracleOracleSQL ServerSQL Server
Hibernate
ADO.NET
SOAP Bridge
EJB 3.0
Spring Webflow
Comparing approaches - Interfaces
23
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Widgets Gadgets Sling.js
Portal
Comparing approaches - Interfaces
24
SQL Server MySQL OracleLucene Index
Hibernate
EJB 3.0Custom Crawler
ADO.NET
SOAP Bridge
Spring Webflow
JSF Flash
Kerberos
Active Directory
NTLM
MySQLMySQLOracleOracleSQL ServerSQL Server
Hibernate
ADO.NET
SOAP Bridge
EJB 3.0
Spring Webflow
Building an alternative
25
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Widgets Gadgets Sling.js
Building an alternative
25
CRX (+Connectors)
Apache Sling
OSGi Scripting O/C Mapping
Web Browser (Frontend Runtime)
Widgets Gadgets Sling.jsIf you need a desktop client: try
Prism & Fluid
26
1 Don’t bullshit
26
1 Don’t bullshit
2 think before you act
26
1 Don’t bullshit
2 think before you act
3 consider CRX