circuit 2015 keynote - carsten ziegeler
TRANSCRIPT
CIRCUIT – An Adobe Developer Event Presented by ICF Interactive
State of the Platform
Avoiding the Clutter in Architecture
Y = 8 + X Y >> 8
2
• 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
@cziegeler
So what?
4
Motivation
• How to build a large enterprise application? • Sustainable, surviving hypes • Ready for “The Fog”
5
From the Marketing Department
6
Back to the Future
7
Back in the Days…CQ 4
8
Day/Adobe CQ5
9
Adobe Experience Manager
10
Sustainability
11
Y = 8 + X
Turning the Tide in 2006
• Aged code base – Monolithic – Highly entangled – Growing complexity and functionality
• API or Implementation?
12
The Downside of Success
• Increasing customer base • Team growth
13
The „standard“ architecture in 2006
MySQL
Hibernate
SQL Server
SOAP Bridge
ADO.NET
Oracle
EJB 3.0
Lucene Index
Crawlers
JSF Flash
Spring
14
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
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?
Architectural Failure
• Implementation too expensive • Operations too expensive • Fragile, too many things can go wrong • Not scalable / too expensive • Unflexible (Features / Integration)
17
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
19
Developers, Developers, Developers!
• Destroy the death star • Join the rebel forces • And ignore Jar Jar Bings
20
Keep IT Simple
• Think and Resist
21
Modularity, Modularity, Modularity!
• Manage growing complexity • Support (dynamic) extensibility • Clear contracts
22
Plethora of Choice in 2006
• Spring? • Other open source component frameworks? • DIY? • OSGi????
23
Benefits of OSGi
• Modules • Versions • COP • SoC • LC, DB
24
The Road to Modularity
• Start with a single big module? • Embedding OSGi framework? • Complete rewrite?
25
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
KISS
Content Repository
OSGi
Apache Sling ScripLng Extensions Extensions Extensions Extensions
Frontend
27
World Happiness
• Quickstart • Webapp • Portal vs Portlet
28
Road to Perdition?
• OSGi ?!? • Apache Sling ? • Best Practices? • And…Tooling?
29
Can We Fix It? Yes We Can, Bob!
• OSGi Spec Implementations • Tooling • Processes • Operations • Bazaar
30
A New Star Was Born Productive, efficient, high quality development of maintainable, extensible, scalable web solution
31
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
Architecting the Web
• URL Space – Meaningful URLs – REST principles
• Content vs. Technology
33
Resource Tree
• One (simple) API to rule them all • Direct mapping • Built-in Security • Flexibility
34
Benefits in a Nutshell
• Stable RESTful architecture • Service model • Modules • Clear separation
35
Hitting the Real World
• High load / high concurrency • Dynamic nature of OSGi • Developer habits • FUD
36
37
Multi Tenancy
• 3P5O problem (not C3PO)
38
Multi Tenancy Considerations
• Friendly vs hostile • Content • Code • Services / Configurations • Billing J
39
Today‘s Challenges
• Quickly adapt • Integrations • Massive scale • IoT • Reduce (operational) cost
40
Amount of Software
41
2015
2008
2001
1994
1987
1980
2022
Surviving the Super Bowl
42
Website traffic
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
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
Keep IT Simple
• Think and Resist
45
Resistance is NOT fuLle!
46
47
Instances
48
Pets vs cattles
Farmville
49
Herding
50
Repository
Web 1 Web 2 Web 3
Worker A 1
Worker B 1
Worker B 2
Maximize Resource Usage - Containers
51
Maximize Resource Usage - Containers
52
Modularity ^2
• Spezialized instances • Create / Destroy on demand • Independent scaling • Faster dev/test/prod cycles
53
New Kid on the Block
54
MICROSERVICES
Traditional vs MS Architecture
55
Database
Business Logic
Frontend Frontend
Database
MS1
MS2
MS3
MS2 MS2
BTDT
56
Frontend
Database
MS1
MS2
MS3
Games without Frontiers
• Topology • REST • Distributed OSGi
57
Single Instance
58
Bundle C
Service Z
Bundle A
Service X
Bundle B
Service Y
Two Instances
59
Bundle C
Service Z
Bundle A
Service X
Bundle B
Service Y
Up
60
ArLfact Repository
Model Repository
Orchestrator
Fully automated: auto diagnosis and self healing
61
ArLfact Repository
Model Repository
Orchestrator
Cowboy
In the Cloud
• The Twelve-Factor App (12factor.net) • Logging • Monitoring • Administration
62
DRY KISS
63
OrchestraLon Herding
CDN
ELB
DB
Logging
Monitoring
Interstellar
• Flexible deployment model • Easily customizable • Versions easily diffable • Elastic Scaling • Updates without downtime
64
Take Away
• Architecture should be simple • Modularity is key • KISS • DRY • Think • Resist
65
Ready for the Fog
66
CIRCUIT – An Adobe Developer Event Presented by ICF Interactive
The END
67