The Zero Bullshit Architecture

Post on 09-May-2015

10.225 views 5 download

description

Lars Trieloff's presentation "The Zero Bullshit Architecture" on how not to design your enterprise content centric application. (And tips on how to do it better)

Transcript of The Zero Bullshit Architecture

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

Thank you

27

Learn more at www.day.comor ask lars.trieloff@day.com