circuit 2015 keynote - carsten ziegeler

67
CIRCUIT – An Adobe Developer Event Presented by ICF Interactive State of the Platform Avoiding the Clutter in Architecture

Upload: circuit

Post on 19-Aug-2015

47 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Circuit 2015 Keynote -  Carsten Ziegeler

CIRCUIT – An Adobe Developer Event Presented by ICF Interactive

State of the Platform

Avoiding the Clutter in Architecture

Page 2: Circuit 2015 Keynote -  Carsten Ziegeler

Y = 8 + X Y >> 8

2

Page 3: Circuit 2015 Keynote -  Carsten Ziegeler

•  RnD Adobe Research Switzerland •  Team Lead / Founder of Adobe

Granite •  Member of the Apache Software

Foundation •  VP of Apache Felix and Sling •  OSGi Core Platform and Enterprise

Expert Groups •  Member of the OSGi Board •  Book / article author, technical

reviewer, conference speaker

3

[email protected]

@cziegeler

Page 4: Circuit 2015 Keynote -  Carsten Ziegeler

So what?

4

Page 5: Circuit 2015 Keynote -  Carsten Ziegeler

Motivation

•  How to build a large enterprise application? •  Sustainable, surviving hypes •  Ready for “The Fog”

5

Page 6: Circuit 2015 Keynote -  Carsten Ziegeler

From the Marketing Department

6

Page 7: Circuit 2015 Keynote -  Carsten Ziegeler

Back to the Future

7

Page 8: Circuit 2015 Keynote -  Carsten Ziegeler

Back in the Days…CQ 4

8

Page 9: Circuit 2015 Keynote -  Carsten Ziegeler

Day/Adobe CQ5

9

Page 10: Circuit 2015 Keynote -  Carsten Ziegeler

Adobe Experience Manager

10

Page 11: Circuit 2015 Keynote -  Carsten Ziegeler

Sustainability

11

Y = 8 + X

Page 12: Circuit 2015 Keynote -  Carsten Ziegeler

Turning the Tide in 2006

•  Aged code base – Monolithic – Highly entangled – Growing complexity and functionality

•  API or Implementation?

12

Page 13: Circuit 2015 Keynote -  Carsten Ziegeler

The Downside of Success

•  Increasing customer base •  Team growth

13

Page 14: Circuit 2015 Keynote -  Carsten Ziegeler

The „standard“ architecture in 2006

MySQL  

Hibernate  

SQL  Server  

SOAP  Bridge  

ADO.NET  

Oracle  

EJB  3.0  

Lucene  Index  

Crawlers  

JSF   Flash  

Spring  

14

Page 15: Circuit 2015 Keynote -  Carsten Ziegeler

Portal          

The „standard“ architecture in 2006

MySQL  

Hibernate  

SQL  Server  

SOAP  Bridge  

ADO.NET  

Oracle  

EJB  3.0  

Lucene  Index  

Crawlers  

JSF   Flash  

Spring  

15

Page 16: Circuit 2015 Keynote -  Carsten Ziegeler

Portal          

The „standard“ architecture in 2006

MySQL  

Hibernate  

SQL  Server  

SOAP  Bridge  

ADO.NET  

Oracle  

EJB  3.0  

Lucene  Index  

Crawlers  

JSF   Flash  

Spring  

16

Where  is  the  data?  Really?  Content?  

Layered  Architecture?  Frontend?  Driving  System?  

Bo>lenecks?  Scaling?  

Page 17: Circuit 2015 Keynote -  Carsten Ziegeler

Architectural Failure

•  Implementation too expensive •  Operations too expensive •  Fragile, too many things can go wrong •  Not scalable / too expensive •  Unflexible (Features / Integration)

17

Page 18: Circuit 2015 Keynote -  Carsten Ziegeler

Sounds Familiar?

•  Nobody got fired for buying $$$ •  We have been doing it this way forever •  Let‘s use BLA, everybody is talking about it •  How will FOO look on my resume?

18

Page 19: Circuit 2015 Keynote -  Carsten Ziegeler

19

Page 20: Circuit 2015 Keynote -  Carsten Ziegeler

Developers, Developers, Developers!

•  Destroy the death star •  Join the rebel forces •  And ignore Jar Jar Bings

20

Page 21: Circuit 2015 Keynote -  Carsten Ziegeler

Keep IT Simple

•  Think and Resist

21

Page 22: Circuit 2015 Keynote -  Carsten Ziegeler

Modularity, Modularity, Modularity!

•  Manage growing complexity •  Support (dynamic) extensibility •  Clear contracts

22

Page 23: Circuit 2015 Keynote -  Carsten Ziegeler

Plethora of Choice in 2006

• Spring? •  Other open source component frameworks? •  DIY? •  OSGi????

23

Page 24: Circuit 2015 Keynote -  Carsten Ziegeler

Benefits of OSGi

•  Modules •  Versions •  COP •  SoC •  LC, DB

24

Page 25: Circuit 2015 Keynote -  Carsten Ziegeler

The Road to Modularity

•  Start with a single big module? •  Embedding OSGi framework? •  Complete rewrite?

25

Page 26: Circuit 2015 Keynote -  Carsten Ziegeler

The Fun Way : Complete Rewrite

•  New architecture – New backend (Apache Jackrabbit) – New web application framework (Apache Sling) – New UI

•  Think modules from the start •  Control evolution •  (Provide tools for migration from old solution)

26

Page 27: Circuit 2015 Keynote -  Carsten Ziegeler

KISS

Content  Repository  

OSGi  

Apache  Sling   ScripLng  Extensions  Extensions  Extensions  Extensions  

Frontend  

27

Page 28: Circuit 2015 Keynote -  Carsten Ziegeler

World Happiness

•  Quickstart •  Webapp •  Portal vs Portlet

28

Page 29: Circuit 2015 Keynote -  Carsten Ziegeler

Road to Perdition?

•  OSGi ?!? •  Apache Sling ? •  Best Practices? •  And…Tooling?

29

Page 30: Circuit 2015 Keynote -  Carsten Ziegeler

Can We Fix It? Yes We Can, Bob!

•  OSGi Spec Implementations •  Tooling •  Processes •  Operations •  Bazaar

30

Page 31: Circuit 2015 Keynote -  Carsten Ziegeler

A New Star Was Born Productive, efficient, high quality development of maintainable, extensible, scalable web solution

31

Page 32: Circuit 2015 Keynote -  Carsten Ziegeler

AEM Stack

32

Java Runtime Environment

REST Framework

JCR Repository

Servlet Engine

OSGI Framework

AEM 6 Product Family Sites, Assets, Communities, Apps, Forms

Application Services

Custom Project Code

Page 33: Circuit 2015 Keynote -  Carsten Ziegeler

Architecting the Web

•  URL Space – Meaningful URLs – REST principles

•  Content vs. Technology

33

Page 34: Circuit 2015 Keynote -  Carsten Ziegeler

Resource Tree

•  One (simple) API to rule them all •  Direct mapping •  Built-in Security •  Flexibility

34

Page 35: Circuit 2015 Keynote -  Carsten Ziegeler

Benefits in a Nutshell

•  Stable RESTful architecture •  Service model •  Modules •  Clear separation

35

Page 36: Circuit 2015 Keynote -  Carsten Ziegeler

Hitting the Real World

•  High load / high concurrency •  Dynamic nature of OSGi •  Developer habits •  FUD

36

Page 37: Circuit 2015 Keynote -  Carsten Ziegeler

37

Page 38: Circuit 2015 Keynote -  Carsten Ziegeler

Multi Tenancy

•  3P5O problem (not C3PO)

38

Page 39: Circuit 2015 Keynote -  Carsten Ziegeler

Multi Tenancy Considerations

•  Friendly vs hostile •  Content •  Code •  Services / Configurations •  Billing J

39

Page 40: Circuit 2015 Keynote -  Carsten Ziegeler

Today‘s Challenges

•  Quickly adapt •  Integrations •  Massive scale •  IoT •  Reduce (operational) cost

40

Page 41: Circuit 2015 Keynote -  Carsten Ziegeler

Amount of Software

41

2015  

2008  

2001  

1994  

1987  

1980  

2022  

Page 42: Circuit 2015 Keynote -  Carsten Ziegeler

Surviving the Super Bowl

42

Website traffic

Page 43: Circuit 2015 Keynote -  Carsten Ziegeler

A Short History of Infrastructure/Deployment

43

2000 Physical Hardware

2006 Virtual Servers Hardware disappeared

Deploys into all public clouds

Now Containers Operating systems disappear

Page 44: Circuit 2015 Keynote -  Carsten Ziegeler

Docker, Foo, Bar and Friends

•  http://blog.circleci.com/its-the-future/ •  http://blog.circleci.com/it-really-is-the-future/

44

Do  do  do  

Thief  

De  

Enimy  

Police  

De  

Director  

Da  da  da  

Who  

Foo   Bar  

Friend  

Page 45: Circuit 2015 Keynote -  Carsten Ziegeler

Keep IT Simple

•  Think and Resist

45

Resistance  is  NOT  fuLle!  

Page 46: Circuit 2015 Keynote -  Carsten Ziegeler

46

Page 47: Circuit 2015 Keynote -  Carsten Ziegeler

47

Page 48: Circuit 2015 Keynote -  Carsten Ziegeler

Instances

48

Pets vs cattles

Page 49: Circuit 2015 Keynote -  Carsten Ziegeler

Farmville

49

Page 50: Circuit 2015 Keynote -  Carsten Ziegeler

Herding

50

Repository

Web 1 Web 2 Web 3

Worker A 1

Worker B 1

Worker B 2

Page 51: Circuit 2015 Keynote -  Carsten Ziegeler

Maximize Resource Usage - Containers

51

Page 52: Circuit 2015 Keynote -  Carsten Ziegeler

Maximize Resource Usage - Containers

52

Page 53: Circuit 2015 Keynote -  Carsten Ziegeler

Modularity ^2

•  Spezialized instances •  Create / Destroy on demand •  Independent scaling •  Faster dev/test/prod cycles

53

Page 54: Circuit 2015 Keynote -  Carsten Ziegeler

New Kid on the Block

54

MICROSERVICES  

Page 55: Circuit 2015 Keynote -  Carsten Ziegeler

Traditional vs MS Architecture

55

Database  

Business  Logic  

Frontend   Frontend  

Database  

MS1  

MS2  

MS3  

MS2  MS2  

Page 56: Circuit 2015 Keynote -  Carsten Ziegeler

BTDT

56

Frontend  

Database  

MS1  

MS2  

MS3  

Page 57: Circuit 2015 Keynote -  Carsten Ziegeler

Games without Frontiers

•  Topology •  REST •  Distributed OSGi

57

Page 58: Circuit 2015 Keynote -  Carsten Ziegeler

Single Instance

58

Bundle  C  

Service  Z  

Bundle  A  

Service  X  

Bundle  B  

Service  Y  

Page 59: Circuit 2015 Keynote -  Carsten Ziegeler

Two Instances

59

Bundle  C  

Service  Z  

Bundle  A  

Service  X  

Bundle  B  

Service  Y  

Page 60: Circuit 2015 Keynote -  Carsten Ziegeler

Up

60

ArLfact  Repository  

Model  Repository  

Orchestrator  

Page 61: Circuit 2015 Keynote -  Carsten Ziegeler

Fully automated: auto diagnosis and self healing

61

ArLfact  Repository  

Model  Repository  

Orchestrator  

Cowboy  

Page 62: Circuit 2015 Keynote -  Carsten Ziegeler

In the Cloud

•  The Twelve-Factor App (12factor.net) •  Logging •  Monitoring •  Administration

62

Page 63: Circuit 2015 Keynote -  Carsten Ziegeler

DRY KISS

63

OrchestraLon  Herding  

CDN  

ELB  

DB  

Logging  

Monitoring  

Page 64: Circuit 2015 Keynote -  Carsten Ziegeler

Interstellar

•  Flexible deployment model •  Easily customizable •  Versions easily diffable •  Elastic Scaling •  Updates without downtime

64

Page 65: Circuit 2015 Keynote -  Carsten Ziegeler

Take Away

•  Architecture should be simple •  Modularity is key •  KISS •  DRY •  Think •  Resist

65

Page 66: Circuit 2015 Keynote -  Carsten Ziegeler

Ready for the Fog

66

Page 67: Circuit 2015 Keynote -  Carsten Ziegeler

CIRCUIT – An Adobe Developer Event Presented by ICF Interactive

The END

67