Open Architecture - Roy T. Fielding
Transcript of Open Architecture - Roy T. Fielding
![Page 1: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/1.jpg)
Open ArchitectureRoy T. Fielding, Ph.D.Chief Scientist, Day Software
http://roy.gbiv.com/talks/200807_OpenArch_OSCON.pdf
![Page 2: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/2.jpg)
Open Architecture ?
Not talking about open exoskeleton buildings
2
![Page 3: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/3.jpg)
Open Architecture ?Not talking about Open Sourced Architecture
3
![Page 4: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/4.jpg)
Open Architecture ?
versus
Not talking about open systems
4
![Page 5: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/5.jpg)
Open Architecture ?
Not even talking about personal computer open architecture
5
![Page 6: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/6.jpg)
!"#$%&'#()*+,*-./#,+&"#.0#&$#"%
+123*.45678258942*':;8<=42>.*,?2@7A?2*.114:=56*8:
B252384=?7C2D*':;8<=42*%E:?987:3
B#''%&(.(#+"
F9AG7882D*73*1=487=?*F=87F;=587:3*:;*862*42H9742G238F*;:4*862*D2I422*:;
B+-(+&*+,*JK#/+'+JK)
73*#3;:4G=87:3*=3D*-:G19824*'572352
AL
J2LG=3*+427CL
B7FF248=87:3*-:GG78822>J4:;2FF:4*&756=4D*"M*(=L?:40*-6=74
J4:;2FF:4*B=E7D*'M*&:F23A?9GJ4:;2FF:4*B=E7D*":8N73
OPPP
Open Architecture
Talking about another UCIDoctoral Dissertation!
Peyman Oreizy, 2000
Open Architecture Software:A Flexible Approach toDecentralized Software Evolution
http://www.ics.uci.edu/~peymano/
6
![Page 7: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/7.jpg)
Why talk about Open Architecture?7
Open Development
Collaborative open source development> emphasizes community> takes advantage of the scalability
obtainable through Internet-basedvirtual organizations
> adapts to the volunteer nature of developers
![Page 8: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/8.jpg)
Why talk about Open Architecture?8
Open Development+
Conway’s Law
![Page 9: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/9.jpg)
Why talk about Open Architecture?8
Open Development+
Conway’s Law
Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.
Melvin E. Conway, Datamation, April 1968http://www.melconway.com/law/index.html
![Page 10: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/10.jpg)
Why talk about Open Architecture?9
Open Development+
Conway’s Law
True open development(a.k.a, Community-driven Design)will only occur when the design of
your system reflects the organizational structure of open development!
![Page 11: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/11.jpg)
Why talk about Open Architecture?10
Open Development+
Conway’s Law+
Change is inevitable!
![Page 12: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/12.jpg)
Why talk about Open Architecture?10
Open Development+
Conway’s Law+
Change is inevitable!
![Page 13: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/13.jpg)
Why talk about Open Architecture?10
Open Development+
Conway’s Law+
Change is inevitable!
Decentralized Software Evolution(or rapid obsolescence)
![Page 14: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/14.jpg)
11
Decentralized Software Evolution
Requires Architecture by Design
open (software) architecture
used by open development projects
to enable decentralized software evolution
so that others can continue to design the software
and fulfill Conway’s Law
leading to success over time!
![Page 15: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/15.jpg)
12
Techniques for Software Evolution
Design-time(or pre-deployment)
Evolution
Post-deploymentEvolution
Central authority(e.g., single vendor)
Design notations, methods, and tools; process systems; group communication and collaboration; configuration
management
Release management systems; binary patch files;
configurable distributed systems
Decentralized group(e.g., multiple
independent software vendors)
Same as above,with special support for loose
coordination and collaboration; open source
APIs, software plug-ins, scripting languages,
open source, component architectures, and event
architectures
When
Who
[Oreizy 98, IWPSE 1]
![Page 16: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/16.jpg)
Challenges13
Trade-off between Adaptability and Consistency> what changes are possible?> what assurances are provided?
Where to place the open points> behavioral junctions (APIs, callback hooks)> virtual machines (command tables, scripting)> data flow (filters, plug-ins)
Consistency> independent third-parties may change
the application in incompatible ways> need for consistency may depend on type of system
– no data loss, response time, no feasting while others starve, no deadlocks,never too much radiation, …
![Page 17: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/17.jpg)
14
Peyman’s approach to Open Architecture
1. Expose the application’s architecture to third-parties
2. Allow third-parties to evolve the applicationby changing its architecture
3. Verify changes against thesemantic annotationson the system model– with the assistance of
external analysis modules– if change is okay,
make the correspondingchange to theimplementation
– else, take appropriateaction• notify, prevent, …
![Page 18: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/18.jpg)
Closed Source Examples
Adobe> extensive plug-in architecture> diverse commercial community
15
![Page 19: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/19.jpg)
Closed Source Examples
Apple iPhone Ecosystem
16
![Page 20: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/20.jpg)
17
Open Development Software Evolution
What is common to all of the largest and most successful open source projects?
a software architecture
designed to promote anarchic collaboration
through extensions
while preserving control over the core interfaces
![Page 21: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/21.jpg)
18
Open Source Examples
Emacs [Stallman 84]> scripting language (elisp) + plug-in (Lisp function hooks)
Apache HTTP Server> module hooks + filters + pools (for consistency)
Linux> kernel modules + abstract APIs
Mozilla Firefox> plug-ins + extensions + themes + XUL + CSS
Eclipse> Everything is an OSGi plug-in
Apache Sling> RESTful interaction on JCR hierarchy with OSGi plugins
![Page 22: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/22.jpg)
19
Apache httpd
Started with NCSA httpd 1.3> Simple, easy to compile on many legacy platforms> Limited extensibility via CGI
Improved security, features, and performance
> Virtual hosts> Pre-forking (adaptive hunt-group) model
0.8: re-architected for extensibility (Shambhala)> Modular API for features (hook and ladder design)> Pools for memory allocation (robustness)
2.0: architecture enhanced for more extensibility> Modular Process Model (pre-fork, multithreaded, win32)> I/O filters and protocol modules
![Page 23: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/23.jpg)
20
Apache httpd: modules
[Apache Modeling Project, f-m-c.org]
Modules
• simplify core
• enable independent development
• promote experiments
Project improves
• reduced friction
• anarchic growth
• more features
• less communication
![Page 24: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/24.jpg)
21
Apache httpd: kernel
[Apache Modeling Project, f-m-c.org]
![Page 25: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/25.jpg)
22
Apache httpd: preforking MPM
[f-m-c.org]
![Page 26: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/26.jpg)
23
Apache httpd: worker MPM
[f-m-c.org]
![Page 27: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/27.jpg)
24
Apache httpd: winnt MPM
[f-m-c.org]
![Page 28: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/28.jpg)
25
Apache httpd: I/O filters
[Apache Modeling Project, f-m-c.org]
Filters provide more extensibility
• protocol replacement
• httpd, ftpd, nntpd, …
• stackable content manipulation
• extensions that can extend other extensions
![Page 29: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/29.jpg)
26
Linux Kernel Modules
Modules
• simplify core
• enable independent development
• promote experiments
Project improves
• reduced friction
• anarchic growth
• more features
• less communication[diagram from Ivan T. Bowman, 1998]
![Page 30: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/30.jpg)
27
Mozilla Firefox
Multiplatform
Lightweight
Community
Supported
Standards
Compliant
![Page 31: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/31.jpg)
28
Firefox: User-friendly
Tabbed Browsing
Integrated Search
Live Bookmarks
RSS/XML Feeds
UI Themes
![Page 32: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/32.jpg)
29
Firefox: Developer-friendly
Open Source
Extensible
Architecture
Plug-in Tools
Layered CSS
Editor Platform
![Page 33: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/33.jpg)
30
Eclipse Platform
[Birsan, ACM Queue, Mar 2005]
Taking modular extensibility to the next level
![Page 34: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/34.jpg)
31
Eclipse Platform
![Page 35: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/35.jpg)
32
Eclipse Platform
![Page 36: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/36.jpg)
Apache Sling
Drop-in
Extensibility
using
OSGi Bundles JCR backedContent-oriented
WebDAV-ableREST-based
+
![Page 37: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/37.jpg)
Apache Sling
Drop-in
Extensibility
using
OSGi Bundles jsp
rubyscala
groovyesp...
JCR backedContent-oriented
WebDAV-ableREST-based
+
![Page 38: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/38.jpg)
I2
3
Browser
J2EE WebServer
browser & sling.jsreading: json & resource GET’swriting: form-POSTs & GETs
Sling Servletstranslating requests to JCR calls
JCR CompliantContent Repository
I
2
3
![Page 39: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/39.jpg)
I2
3
Browser
J2EE WebServer
browser & sling.jsreading: json & resource GET’swriting: form-POSTs & GETs
Sling Servletstranslating requests to JCR calls
JCR CompliantContent Repository
I
2
3very simple js API to read content, Forms to write content
![Page 40: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/40.jpg)
I2
3
Browser
J2EE WebServer
browser & sling.jsreading: json & resource GET’swriting: form-POSTs & GETs
Sling Servletstranslating requests to JCR calls
JCR CompliantContent Repository
I
2
3very simple js API to read content, Forms to write content
handles all the heavy lifting, particularly security 16 tons
![Page 41: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/41.jpg)
It’s the web!URLs matter.
.../product.jsp?id=12346
![Page 42: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/42.jpg)
It’s the web!URLs matter.
.../product.jsp?id=12346
Mistake 1:Addressing the “Script”
![Page 43: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/43.jpg)
It’s the web!URLs matter.
.../product.jsp?id=12346
Mistake 1:Addressing the “Script”
Mistake 2:.jsp? What the heck?
![Page 44: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/44.jpg)
It’s the web!URLs matter.
.../product.jsp?id=12346
Mistake 1:Addressing the “Script”
Mistake 2:.jsp? What the heck?Mistake 3:Passing in “this”
![Page 45: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/45.jpg)
Content-oriented DevelopmentSling URL decomposition.
/cars/audi/s4.details.html
![Page 46: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/46.jpg)
Repository
Content-oriented DevelopmentSling URL decomposition.
/cars/audi/s4.details.html
![Page 47: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/47.jpg)
Repository
Content-oriented DevelopmentSling URL decomposition.
/cars/audi/s4.details.html
Content Repository Path
![Page 48: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/48.jpg)
Repository
Content-oriented DevelopmentSling URL decomposition.
/cars/audi/s4.details.html
Content Repository Path
![Page 49: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/49.jpg)
Repository
Content-oriented DevelopmentSling URL decomposition.
/cars/audi/s4.details.html
Content Repository Path
...selects a particular script
![Page 50: Open Architecture - Roy T. Fielding](https://reader036.fdocuments.us/reader036/viewer/2022071602/613d6186736caf36b75ca764/html5/thumbnails/50.jpg)
Conclusions
The best open source projects have learned> the importance of designing an open architecture> the value of decentralized software evolution
Or, perhaps we should say> that’s what differentiates the best from the obsolete!
There is so much more to learn> I hardly scratched the surface of Peyman’s dissertation> many more successful examples> how do we compare one design for over another?> is OSGi bundling significantly better than others (for Java)
And I ignored more fundamental paradigm changes> Erlang (designed around a shared-nothing architecture)
37