SlideShare a Scribd company logo
1 of 46
Download to read offline
1
Scrambled Eggs
• Roy T. Fielding, Ph.D. | Senior Principal Scientist, Adobe
IT’S A MYSTERY
2
IT’S A MYSTERY
Open Source
Apache
2
IT’S A MYSTERY
Open Source
Apache
Standards
HTTPbis + HTTP/2
Do Not Track
2
IT’S A MYSTERY
Open Source
Apache
Standards
HTTPbis + HTTP/2
Do Not Track
So!ware
Architecture
REST
2
IT’S A MYSTERY
Open Source
Apache
Standards
HTTPbis + HTTP/2
Do Not Track
So!ware
Architecture
REST
2
IT’S A MYSTERY
Open Source
Apache
Standards
HTTPbis + HTTP/2
Do Not Track
So!ware
Architecture
REST
Wouldn’t it be nice if
CQ supported …
2
STANDARDS: HTTP
HTTP/1.1
Almost done, really
IESG last call next week or so
HTTP/2.0
Standardization of Google’s SPDY
Session-layer Tunnel for HTTP with Compression (?)
• Should have been called TCP++, or TLS++
Improvement for session-heavy, authenticated sites
• http://trac.tools.ietf.org/wg/httpbis/trac/wiki
3
STANDARDS: DO NOT TRACK
Tracking is pervasive
because it feeds personalization and UX
4
5
profile data
Green arrows represent the flow of consumer data.
Blue arrows represent the flow of 3rd party information & offerings.
This diagram represents a typical flow of information related to some online behavioral advertising.
Not all online behavioral advertising operates exactly like this diagram.
.
.
Browser on Personal Computer
Ad Network
BUY ONE,
GET ONE!
SPECIAL
OFFER!
Web Analytics Provider
News Website
Other Websites
Merchant
Secondary Ad Networks
Profiling Service
AGE
INCOME
LEVEL
HOBBIES
statistics &
consumer behavior
contextual &
tailored ads
contextual &
tailored ads
demographics &
online activity
demographic
data
(from registration)
demographics,
past purchases
aggregate
analytics data
* depending on contract limitations
webpage
interest
segments
BUY ONE,
GET ONE!
SPECIAL
OFFER!
URL +
analytics
cookie
URL +
ad cookie1
URL +
pre-existing
cookie
redirect URL
Online Behavioral Advertising
URL +
ad cookie2
URL +
news site
cookie
STANDARDS: DO NOT TRACK
Tracking is pervasive
because it feeds personalization and UX
Data collection across unrelated contexts
is a privacy concern
6
7
Doctor
Medical Prescriptions
Green arrows represent the flow of consumer data.
Blue arrows represent the flow of 3rd party information & offerings.
This diagram represents a typical flow of information related to some medical and pharmaceutical companies.
Not all medical and pharmaceutical companies operate exactly like this diagram.
Patient
Pharmaceutical Company
Health Insurance
Pharmacy Public Health Agency
(disease tracking)
prescription
billing
marketing
prescription
refill reminders
Pharmacy Analytics
Company
marketing
prescription
data
aggregate
prescription
statistics
aggregate
prescription
statistics
aggregate
prescription
statistics
personal
profile data
[FTC]
7
Doctor
Medical Prescriptions
Green arrows represent the flow of consumer data.
Blue arrows represent the flow of 3rd party information & offerings.
This diagram represents a typical flow of information related to some medical and pharmaceutical companies.
Not all medical and pharmaceutical companies operate exactly like this diagram.
Patient
Pharmaceutical Company
Health Insurance
Pharmacy Public Health Agency
(disease tracking)
prescription
billing
marketing
prescription
refill reminders
Pharmacy Analytics
Company
marketing
prescription
data
aggregate
prescription
statistics
aggregate
prescription
statistics
aggregate
prescription
statistics
personal
profile data
[FTC]
profile data
Other Websites
Profiling Service
AGE
INCOME
LEVEL
HOBBIES
demographics &
online activity
STANDARDS: DO NOT TRACK
Tracking is pervasive
because it feeds personalization and UX
Data collection across unrelated contexts
is a privacy concern
Governments want to stop it,
but they don’t know how
Privacy advocates incite fear and doubt
Poor business data practices justify them!
This should be
an easy problem to fix
8
9
Online Advertising
Industry
US FTC European Commission
Privacy Advocates
BUT ONLY IF WE WORK TOGETHER
… and now state governments are getting involved too …
SOFTWARE ARCHITECTURE
What is
the best practice for
versioning
a REST API?
10
SERIOUSLY, WHICH IS BETTER?
Should I include a version number in the URL hierarchy?
• http://example.com/v1/users
Should I include a version number on the resource name?
• http://example.com/users.v1
Should I include a version number as a query parameter?
• http://example.com/users?api=v1
Should I include a version number in the media type?
• Content-Type: application/vnd.myname.v1+json
11
REST
REST
is so!ware engineering on the scale of
DECADES
12
REST
REST
is designed primarily to improve
EVOLVABILITY
13
14
EVOLVABILITY
Evolvability is the ability to change over time,
in response to changing user needs
or a changing environment,
without starting over
15
Degree of Evolvability
ArchitecturalScale
So!ware
Evolution
Independent
Evolution
Self-Modifying
So!ware
15
Degree of Evolvability
ArchitecturalScale
So!ware
Evolution
Independent
Evolution
Self-Modifying
So!ware
15
Degree of Evolvability
ArchitecturalScale
So!ware
Evolution
Independent
Evolution
Self-Modifying
So!ware
REST
Hypertext as the Engine of Application State
16
S0 S2S1 S3
R o y
*
*
REST
Follow Your Nose
17
S0 S2S1 S3
R o y
*
*
REST
Follow Your Nose
18
S0 S2S1 S3
R o y
*
*
REST
Follow Your Nose
19
S0 S2S1 S3
R o y
*
*
REST
Follow Your Nose
20
S0 S2S1 S3
R o y
*
*
REST
Hypertext as the Engine of Application State
each state can be dynamic
each transition can be redirected
21
S0 S2S1 S3
R o y
*
*
REST
What is
the best practice for
versioning
a REST API?
22
REST
What is
the best practice for
versioning
a REST API?
22
DON’T
Versioning an interface
is just a “polite” way
to kill deployed applications
SERIOUSLY?
23
SERIOUSLY?
When was the last time you saw
a version number on a website?
23
SERIOUSLY?
When was the last time you saw
a version number on a website?
a REST API is just a website
for users with a limited vocabulary
(machine to machine interaction)
23
BREAKING COMPATIBILITY IS BAD
Websites are supposed to retain
backwards compatibility
(avoid broken links)
If you want to break with the past,
use a different hostname,
with new branding!
24
25
ALWAYS SHIP TRUNK
why web applications are different …
problems that none of the
revision control systems solve …
how you can solve some of them yourself
[Paul Hammond (Typekit)] http://www.paulhammond.org/2010/06/trunk/
based on real deployment experience at Flickr, Etsy, Typekit, ...
26
ALWAYS SHIP TRUNK
26
ALWAYS SHIP TRUNK
What would a revision control system built for
supporting deployed web applications be like?
26
ALWAYS SHIP TRUNK
What would a revision control system built for
supporting deployed web applications be like?
right?
26
ALWAYS SHIP TRUNK
What would a revision control system built for
supporting deployed web applications be like?
right?
Wouldn’t it be nice if CQ supported …
FRAGS
Feature Flags
for conditional activation
of content fragments during
continuous deployment
27
GLOBAL CONFIGURATION SETTINGS
28
if (frags(“saml_auth”)) {
credentials = saml.authenticate(user);
}
else {
credentials = httpAuth.check(user);
}
• testable for conditional content (i.e., everything)
• readable via all development interfaces
• writable with ops authority
FLIP SWITCHES VIA CONSOLE
29
• easy UI for (proportional) enabling or disabling of frags
• activation by frag, recorded with timestamps
• activation by AB testing, recorded for comparative analytics
[Ross Harmes, http://www.flickr.com/photos/rossharmes/4153769740/]
ACTIVATION-AWARE MONITORING
30
• dashboard interfaces for time-series graphs with activation markers
• AB comparisons based on automated percentile activation
• data available as more resources, for reuse by enterprise monitoring
FRAGS
Are you a CQ/AEM customer/prospect?
Do you want a feature like Frags?
Do you need more than what I described?
Ask for it!
(we prioritize features by customer demand)
31
32

More Related Content

What's hot

Self healing test automation with Healenium and Minimization of regression su...
Self healing test automation with Healenium and Minimization of regression su...Self healing test automation with Healenium and Minimization of regression su...
Self healing test automation with Healenium and Minimization of regression su...Dmitriy Gumeniuk
 
Releasing High Quality Packages - Longhorn PHP 2021
Releasing High Quality Packages - Longhorn PHP 2021Releasing High Quality Packages - Longhorn PHP 2021
Releasing High Quality Packages - Longhorn PHP 2021Colin O'Dell
 
Five Ways to Fix Your Oracle Dev-Test Problems
Five Ways to Fix Your Oracle Dev-Test Problems Five Ways to Fix Your Oracle Dev-Test Problems
Five Ways to Fix Your Oracle Dev-Test Problems Catalogic Software
 
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Martin Bergljung
 
Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile DevicesExtreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile DevicesMaximiliano Firtman
 
InterConnect2016 Monitoring Nodejs
InterConnect2016 Monitoring NodejsInterConnect2016 Monitoring Nodejs
InterConnect2016 Monitoring NodejsChris Bailey
 
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...Symphony Software Foundation
 
Navigating the Incubator at the Apache Software Foundation
Navigating the Incubator at the Apache Software FoundationNavigating the Incubator at the Apache Software Foundation
Navigating the Incubator at the Apache Software FoundationBrett Porter
 
Testing a Microservices Architecture
Testing a Microservices ArchitectureTesting a Microservices Architecture
Testing a Microservices ArchitectureParasoft
 
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco StudiosPerforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco StudiosPerforce
 
Is Enterprise Java Still Relevant (JavaOne 2015 session)
Is Enterprise Java Still Relevant (JavaOne 2015 session)Is Enterprise Java Still Relevant (JavaOne 2015 session)
Is Enterprise Java Still Relevant (JavaOne 2015 session)Ian Robinson
 
Debugging Microservices - key challenges and techniques - Microservices Odesa...
Debugging Microservices - key challenges and techniques - Microservices Odesa...Debugging Microservices - key challenges and techniques - Microservices Odesa...
Debugging Microservices - key challenges and techniques - Microservices Odesa...Lohika_Odessa_TechTalks
 
External Master Data in Alfresco: Integrating and Keeping Metadata Consistent...
External Master Data in Alfresco: Integrating and Keeping Metadata Consistent...External Master Data in Alfresco: Integrating and Keeping Metadata Consistent...
External Master Data in Alfresco: Integrating and Keeping Metadata Consistent...ITD Systems
 
How Gear4Music Went from 0-1000+ API Tests
How Gear4Music Went from 0-1000+ API TestsHow Gear4Music Went from 0-1000+ API Tests
How Gear4Music Went from 0-1000+ API TestsPostman
 
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battleSimple tools to fight bigger quality battle
Simple tools to fight bigger quality battleAnand Ramdeo
 
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The FutureQA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The FutureQAFest
 
Test Gap Analysis and regression minimization with Drill4j. Observability on ...
Test Gap Analysis and regression minimization with Drill4j. Observability on ...Test Gap Analysis and regression minimization with Drill4j. Observability on ...
Test Gap Analysis and regression minimization with Drill4j. Observability on ...Dmitriy Gumeniuk
 
JavaOne 2015 - Swimming upstream in the container revolution
JavaOne 2015 - Swimming upstream in the container revolutionJavaOne 2015 - Swimming upstream in the container revolution
JavaOne 2015 - Swimming upstream in the container revolutionBert Jan Schrijver
 

What's hot (20)

Self healing test automation with Healenium and Minimization of regression su...
Self healing test automation with Healenium and Minimization of regression su...Self healing test automation with Healenium and Minimization of regression su...
Self healing test automation with Healenium and Minimization of regression su...
 
Releasing High Quality Packages - Longhorn PHP 2021
Releasing High Quality Packages - Longhorn PHP 2021Releasing High Quality Packages - Longhorn PHP 2021
Releasing High Quality Packages - Longhorn PHP 2021
 
Five Ways to Fix Your Oracle Dev-Test Problems
Five Ways to Fix Your Oracle Dev-Test Problems Five Ways to Fix Your Oracle Dev-Test Problems
Five Ways to Fix Your Oracle Dev-Test Problems
 
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
 
Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile DevicesExtreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile Devices
 
InterConnect2016 Monitoring Nodejs
InterConnect2016 Monitoring NodejsInterConnect2016 Monitoring Nodejs
InterConnect2016 Monitoring Nodejs
 
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
 
Navigating the Incubator at the Apache Software Foundation
Navigating the Incubator at the Apache Software FoundationNavigating the Incubator at the Apache Software Foundation
Navigating the Incubator at the Apache Software Foundation
 
Taking Database Development to the 21st Century
Taking Database Development to the 21st CenturyTaking Database Development to the 21st Century
Taking Database Development to the 21st Century
 
Testing a Microservices Architecture
Testing a Microservices ArchitectureTesting a Microservices Architecture
Testing a Microservices Architecture
 
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco StudiosPerforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
 
Is Enterprise Java Still Relevant (JavaOne 2015 session)
Is Enterprise Java Still Relevant (JavaOne 2015 session)Is Enterprise Java Still Relevant (JavaOne 2015 session)
Is Enterprise Java Still Relevant (JavaOne 2015 session)
 
Debugging Microservices - key challenges and techniques - Microservices Odesa...
Debugging Microservices - key challenges and techniques - Microservices Odesa...Debugging Microservices - key challenges and techniques - Microservices Odesa...
Debugging Microservices - key challenges and techniques - Microservices Odesa...
 
External Master Data in Alfresco: Integrating and Keeping Metadata Consistent...
External Master Data in Alfresco: Integrating and Keeping Metadata Consistent...External Master Data in Alfresco: Integrating and Keeping Metadata Consistent...
External Master Data in Alfresco: Integrating and Keeping Metadata Consistent...
 
How Gear4Music Went from 0-1000+ API Tests
How Gear4Music Went from 0-1000+ API TestsHow Gear4Music Went from 0-1000+ API Tests
How Gear4Music Went from 0-1000+ API Tests
 
Don.Dunning
Don.DunningDon.Dunning
Don.Dunning
 
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battleSimple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
 
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The FutureQA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future
 
Test Gap Analysis and regression minimization with Drill4j. Observability on ...
Test Gap Analysis and regression minimization with Drill4j. Observability on ...Test Gap Analysis and regression minimization with Drill4j. Observability on ...
Test Gap Analysis and regression minimization with Drill4j. Observability on ...
 
JavaOne 2015 - Swimming upstream in the container revolution
JavaOne 2015 - Swimming upstream in the container revolutionJavaOne 2015 - Swimming upstream in the container revolution
JavaOne 2015 - Swimming upstream in the container revolution
 

Viewers also liked

Apache 3.0 (a tall tale)
Apache 3.0 (a tall tale)Apache 3.0 (a tall tale)
Apache 3.0 (a tall tale)Roy Fielding
 
How we built Lingr - ITpro Challenge Presentation
How we built Lingr - ITpro Challenge PresentationHow we built Lingr - ITpro Challenge Presentation
How we built Lingr - ITpro Challenge PresentationKenn Ejima
 
Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術Tomohiko Himura
 
lua_nginx_module JSON-RPC 2.0 Batch Request
lua_nginx_module JSON-RPC 2.0 Batch Requestlua_nginx_module JSON-RPC 2.0 Batch Request
lua_nginx_module JSON-RPC 2.0 Batch Requestmosa siru
 
Perl Dancer for Python programmers
Perl Dancer for Python programmersPerl Dancer for Python programmers
Perl Dancer for Python programmersxSawyer
 
クロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おうクロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おうkitfactory
 
Bitbucketを活用したコードレビュー改善事例
Bitbucketを活用したコードレビュー改善事例Bitbucketを活用したコードレビュー改善事例
Bitbucketを活用したコードレビュー改善事例Kosuke Ito
 
Continous Delivery with CQ
Continous Delivery with CQContinous Delivery with CQ
Continous Delivery with CQolibur
 
今日から始めるDigitalOcean
今日から始めるDigitalOcean今日から始めるDigitalOcean
今日から始めるDigitalOceanMasahito Zembutsu
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでRyo Nakamaru
 
The six key steps to AEM architecture
The six key steps to AEM architectureThe six key steps to AEM architecture
The six key steps to AEM architectureAshokkumar T A
 
少人数チームにおけるプロジェクト管理のベストプラクティス
少人数チームにおけるプロジェクト管理のベストプラクティス少人数チームにおけるプロジェクト管理のベストプラクティス
少人数チームにおけるプロジェクト管理のベストプラクティスCake YOSHIDA
 
AEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentAEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentGabriel Walt
 
Stop Worrying about Prodweb001 and Start Loving i-98fb9856 (ARC201) | AWS re:...
Stop Worrying about Prodweb001 and Start Loving i-98fb9856 (ARC201) | AWS re:...Stop Worrying about Prodweb001 and Start Loving i-98fb9856 (ARC201) | AWS re:...
Stop Worrying about Prodweb001 and Start Loving i-98fb9856 (ARC201) | AWS re:...Amazon Web Services
 
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPCZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPCYoshifumi Kawai
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門Masahito Zembutsu
 
AEM GEMS Session SAML authentication in AEM
AEM GEMS Session SAML authentication in AEMAEM GEMS Session SAML authentication in AEM
AEM GEMS Session SAML authentication in AEMAdobeMarketingCloud
 

Viewers also liked (18)

Apache 3.0 (a tall tale)
Apache 3.0 (a tall tale)Apache 3.0 (a tall tale)
Apache 3.0 (a tall tale)
 
REST in AEM
REST in AEMREST in AEM
REST in AEM
 
How we built Lingr - ITpro Challenge Presentation
How we built Lingr - ITpro Challenge PresentationHow we built Lingr - ITpro Challenge Presentation
How we built Lingr - ITpro Challenge Presentation
 
Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術
 
lua_nginx_module JSON-RPC 2.0 Batch Request
lua_nginx_module JSON-RPC 2.0 Batch Requestlua_nginx_module JSON-RPC 2.0 Batch Request
lua_nginx_module JSON-RPC 2.0 Batch Request
 
Perl Dancer for Python programmers
Perl Dancer for Python programmersPerl Dancer for Python programmers
Perl Dancer for Python programmers
 
クロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おうクロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おう
 
Bitbucketを活用したコードレビュー改善事例
Bitbucketを活用したコードレビュー改善事例Bitbucketを活用したコードレビュー改善事例
Bitbucketを活用したコードレビュー改善事例
 
Continous Delivery with CQ
Continous Delivery with CQContinous Delivery with CQ
Continous Delivery with CQ
 
今日から始めるDigitalOcean
今日から始めるDigitalOcean今日から始めるDigitalOcean
今日から始めるDigitalOcean
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
The six key steps to AEM architecture
The six key steps to AEM architectureThe six key steps to AEM architecture
The six key steps to AEM architecture
 
少人数チームにおけるプロジェクト管理のベストプラクティス
少人数チームにおけるプロジェクト管理のベストプラクティス少人数チームにおけるプロジェクト管理のベストプラクティス
少人数チームにおけるプロジェクト管理のベストプラクティス
 
AEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentAEM Best Practices for Component Development
AEM Best Practices for Component Development
 
Stop Worrying about Prodweb001 and Start Loving i-98fb9856 (ARC201) | AWS re:...
Stop Worrying about Prodweb001 and Start Loving i-98fb9856 (ARC201) | AWS re:...Stop Worrying about Prodweb001 and Start Loving i-98fb9856 (ARC201) | AWS re:...
Stop Worrying about Prodweb001 and Start Loving i-98fb9856 (ARC201) | AWS re:...
 
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPCZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
AEM GEMS Session SAML authentication in AEM
AEM GEMS Session SAML authentication in AEMAEM GEMS Session SAML authentication in AEM
AEM GEMS Session SAML authentication in AEM
 

Similar to EVOLVE`13 Keynote: Scrambled Eggs

Simple Ways to Get Your Organization to Adopt the AsyncAPI Spec
Simple Ways to Get Your Organization to Adopt the AsyncAPI SpecSimple Ways to Get Your Organization to Adopt the AsyncAPI Spec
Simple Ways to Get Your Organization to Adopt the AsyncAPI SpecAxway
 
Building APIs for Core Systems with Anypoint Platform
Building APIs for Core Systems with Anypoint PlatformBuilding APIs for Core Systems with Anypoint Platform
Building APIs for Core Systems with Anypoint PlatformMuleSoft
 
CA Service Virtualization
CA Service VirtualizationCA Service Virtualization
CA Service VirtualizationPablo Gutierrez
 
Combining Healthcare Standards with Other RESTful APIs
Combining Healthcare Standards with Other RESTful APIsCombining Healthcare Standards with Other RESTful APIs
Combining Healthcare Standards with Other RESTful APIsBrad Genereaux
 
Open source-secret-sauce-rit-2010
Open source-secret-sauce-rit-2010Open source-secret-sauce-rit-2010
Open source-secret-sauce-rit-2010Ted Husted
 
QConSF 2014 - How we learned to stop worrying and start deploying the Netflix...
QConSF 2014 - How we learned to stop worrying and start deploying the Netflix...QConSF 2014 - How we learned to stop worrying and start deploying the Netflix...
QConSF 2014 - How we learned to stop worrying and start deploying the Netflix...Sangeeta Narayanan
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018Christophe Rochefolle
 
Practical guide to building public APIs
Practical guide to building public APIsPractical guide to building public APIs
Practical guide to building public APIsReda Hmeid MBCS
 
Automation and Release in Federal
Automation and Release in FederalAutomation and Release in Federal
Automation and Release in FederalSerena Software
 
Starting Your DevOps Journey – Practical Tips for Ops
Starting Your DevOps Journey – Practical Tips for OpsStarting Your DevOps Journey – Practical Tips for Ops
Starting Your DevOps Journey – Practical Tips for OpsDynatrace
 
How APIs are Changing Software Development
How APIs are Changing Software DevelopmentHow APIs are Changing Software Development
How APIs are Changing Software Development3scale
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to MicroservicesAd van der Veer
 
RESTful Microservices
RESTful MicroservicesRESTful Microservices
RESTful MicroservicesShaun Abram
 
Explainable Artificial Intelligence (XAI) 
to Predict and Explain Future Soft...
Explainable Artificial Intelligence (XAI) 
to Predict and Explain Future Soft...Explainable Artificial Intelligence (XAI) 
to Predict and Explain Future Soft...
Explainable Artificial Intelligence (XAI) 
to Predict and Explain Future Soft...Chakkrit (Kla) Tantithamthavorn
 
The Nitty Gritty of Affiliate Marketing Compliance
The Nitty Gritty of Affiliate Marketing ComplianceThe Nitty Gritty of Affiliate Marketing Compliance
The Nitty Gritty of Affiliate Marketing ComplianceAffiliate Summit
 
Getting to Grips with RESTful APIs
Getting to Grips with RESTful APIsGetting to Grips with RESTful APIs
Getting to Grips with RESTful APIsPetko Mikhailov
 
Monitoring As Code: How to Integrate App Monitoring Into Your Developer Cycle
Monitoring As Code: How to Integrate App Monitoring Into Your Developer CycleMonitoring As Code: How to Integrate App Monitoring Into Your Developer Cycle
Monitoring As Code: How to Integrate App Monitoring Into Your Developer CycleAtlassian
 
From Monoliths to Microservices at Realestate.com.au
From Monoliths to Microservices at Realestate.com.auFrom Monoliths to Microservices at Realestate.com.au
From Monoliths to Microservices at Realestate.com.auevanbottcher
 
Case study for software architect
Case study for software architectCase study for software architect
Case study for software architectOsama Mustafa
 

Similar to EVOLVE`13 Keynote: Scrambled Eggs (20)

Simple Ways to Get Your Organization to Adopt the AsyncAPI Spec
Simple Ways to Get Your Organization to Adopt the AsyncAPI SpecSimple Ways to Get Your Organization to Adopt the AsyncAPI Spec
Simple Ways to Get Your Organization to Adopt the AsyncAPI Spec
 
Building APIs for Core Systems with Anypoint Platform
Building APIs for Core Systems with Anypoint PlatformBuilding APIs for Core Systems with Anypoint Platform
Building APIs for Core Systems with Anypoint Platform
 
CA Service Virtualization
CA Service VirtualizationCA Service Virtualization
CA Service Virtualization
 
Combining Healthcare Standards with Other RESTful APIs
Combining Healthcare Standards with Other RESTful APIsCombining Healthcare Standards with Other RESTful APIs
Combining Healthcare Standards with Other RESTful APIs
 
Open source-secret-sauce-rit-2010
Open source-secret-sauce-rit-2010Open source-secret-sauce-rit-2010
Open source-secret-sauce-rit-2010
 
QConSF 2014 - How we learned to stop worrying and start deploying the Netflix...
QConSF 2014 - How we learned to stop worrying and start deploying the Netflix...QConSF 2014 - How we learned to stop worrying and start deploying the Netflix...
QConSF 2014 - How we learned to stop worrying and start deploying the Netflix...
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
 
Practical guide to building public APIs
Practical guide to building public APIsPractical guide to building public APIs
Practical guide to building public APIs
 
Automation and Release in Federal
Automation and Release in FederalAutomation and Release in Federal
Automation and Release in Federal
 
Starting Your DevOps Journey – Practical Tips for Ops
Starting Your DevOps Journey – Practical Tips for OpsStarting Your DevOps Journey – Practical Tips for Ops
Starting Your DevOps Journey – Practical Tips for Ops
 
How APIs are Changing Software Development
How APIs are Changing Software DevelopmentHow APIs are Changing Software Development
How APIs are Changing Software Development
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to Microservices
 
TEC-Roundtable-API
TEC-Roundtable-APITEC-Roundtable-API
TEC-Roundtable-API
 
RESTful Microservices
RESTful MicroservicesRESTful Microservices
RESTful Microservices
 
Explainable Artificial Intelligence (XAI) 
to Predict and Explain Future Soft...
Explainable Artificial Intelligence (XAI) 
to Predict and Explain Future Soft...Explainable Artificial Intelligence (XAI) 
to Predict and Explain Future Soft...
Explainable Artificial Intelligence (XAI) 
to Predict and Explain Future Soft...
 
The Nitty Gritty of Affiliate Marketing Compliance
The Nitty Gritty of Affiliate Marketing ComplianceThe Nitty Gritty of Affiliate Marketing Compliance
The Nitty Gritty of Affiliate Marketing Compliance
 
Getting to Grips with RESTful APIs
Getting to Grips with RESTful APIsGetting to Grips with RESTful APIs
Getting to Grips with RESTful APIs
 
Monitoring As Code: How to Integrate App Monitoring Into Your Developer Cycle
Monitoring As Code: How to Integrate App Monitoring Into Your Developer CycleMonitoring As Code: How to Integrate App Monitoring Into Your Developer Cycle
Monitoring As Code: How to Integrate App Monitoring Into Your Developer Cycle
 
From Monoliths to Microservices at Realestate.com.au
From Monoliths to Microservices at Realestate.com.auFrom Monoliths to Microservices at Realestate.com.au
From Monoliths to Microservices at Realestate.com.au
 
Case study for software architect
Case study for software architectCase study for software architect
Case study for software architect
 

Recently uploaded

QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...itnewsafrica
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 

Recently uploaded (20)

QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 

EVOLVE`13 Keynote: Scrambled Eggs

  • 1. 1 Scrambled Eggs • Roy T. Fielding, Ph.D. | Senior Principal Scientist, Adobe
  • 3. IT’S A MYSTERY Open Source Apache 2
  • 4. IT’S A MYSTERY Open Source Apache Standards HTTPbis + HTTP/2 Do Not Track 2
  • 5. IT’S A MYSTERY Open Source Apache Standards HTTPbis + HTTP/2 Do Not Track So!ware Architecture REST 2
  • 6. IT’S A MYSTERY Open Source Apache Standards HTTPbis + HTTP/2 Do Not Track So!ware Architecture REST 2
  • 7. IT’S A MYSTERY Open Source Apache Standards HTTPbis + HTTP/2 Do Not Track So!ware Architecture REST Wouldn’t it be nice if CQ supported … 2
  • 8. STANDARDS: HTTP HTTP/1.1 Almost done, really IESG last call next week or so HTTP/2.0 Standardization of Google’s SPDY Session-layer Tunnel for HTTP with Compression (?) • Should have been called TCP++, or TLS++ Improvement for session-heavy, authenticated sites • http://trac.tools.ietf.org/wg/httpbis/trac/wiki 3
  • 9. STANDARDS: DO NOT TRACK Tracking is pervasive because it feeds personalization and UX 4
  • 10. 5 profile data Green arrows represent the flow of consumer data. Blue arrows represent the flow of 3rd party information & offerings. This diagram represents a typical flow of information related to some online behavioral advertising. Not all online behavioral advertising operates exactly like this diagram. . . Browser on Personal Computer Ad Network BUY ONE, GET ONE! SPECIAL OFFER! Web Analytics Provider News Website Other Websites Merchant Secondary Ad Networks Profiling Service AGE INCOME LEVEL HOBBIES statistics & consumer behavior contextual & tailored ads contextual & tailored ads demographics & online activity demographic data (from registration) demographics, past purchases aggregate analytics data * depending on contract limitations webpage interest segments BUY ONE, GET ONE! SPECIAL OFFER! URL + analytics cookie URL + ad cookie1 URL + pre-existing cookie redirect URL Online Behavioral Advertising URL + ad cookie2 URL + news site cookie
  • 11. STANDARDS: DO NOT TRACK Tracking is pervasive because it feeds personalization and UX Data collection across unrelated contexts is a privacy concern 6
  • 12. 7 Doctor Medical Prescriptions Green arrows represent the flow of consumer data. Blue arrows represent the flow of 3rd party information & offerings. This diagram represents a typical flow of information related to some medical and pharmaceutical companies. Not all medical and pharmaceutical companies operate exactly like this diagram. Patient Pharmaceutical Company Health Insurance Pharmacy Public Health Agency (disease tracking) prescription billing marketing prescription refill reminders Pharmacy Analytics Company marketing prescription data aggregate prescription statistics aggregate prescription statistics aggregate prescription statistics personal profile data [FTC]
  • 13. 7 Doctor Medical Prescriptions Green arrows represent the flow of consumer data. Blue arrows represent the flow of 3rd party information & offerings. This diagram represents a typical flow of information related to some medical and pharmaceutical companies. Not all medical and pharmaceutical companies operate exactly like this diagram. Patient Pharmaceutical Company Health Insurance Pharmacy Public Health Agency (disease tracking) prescription billing marketing prescription refill reminders Pharmacy Analytics Company marketing prescription data aggregate prescription statistics aggregate prescription statistics aggregate prescription statistics personal profile data [FTC] profile data Other Websites Profiling Service AGE INCOME LEVEL HOBBIES demographics & online activity
  • 14. STANDARDS: DO NOT TRACK Tracking is pervasive because it feeds personalization and UX Data collection across unrelated contexts is a privacy concern Governments want to stop it, but they don’t know how Privacy advocates incite fear and doubt Poor business data practices justify them! This should be an easy problem to fix 8
  • 15. 9 Online Advertising Industry US FTC European Commission Privacy Advocates BUT ONLY IF WE WORK TOGETHER … and now state governments are getting involved too …
  • 16. SOFTWARE ARCHITECTURE What is the best practice for versioning a REST API? 10
  • 17. SERIOUSLY, WHICH IS BETTER? Should I include a version number in the URL hierarchy? • http://example.com/v1/users Should I include a version number on the resource name? • http://example.com/users.v1 Should I include a version number as a query parameter? • http://example.com/users?api=v1 Should I include a version number in the media type? • Content-Type: application/vnd.myname.v1+json 11
  • 18. REST REST is so!ware engineering on the scale of DECADES 12
  • 19. REST REST is designed primarily to improve EVOLVABILITY 13
  • 20. 14 EVOLVABILITY Evolvability is the ability to change over time, in response to changing user needs or a changing environment, without starting over
  • 24. REST Hypertext as the Engine of Application State 16 S0 S2S1 S3 R o y * *
  • 25. REST Follow Your Nose 17 S0 S2S1 S3 R o y * *
  • 26. REST Follow Your Nose 18 S0 S2S1 S3 R o y * *
  • 27. REST Follow Your Nose 19 S0 S2S1 S3 R o y * *
  • 28. REST Follow Your Nose 20 S0 S2S1 S3 R o y * *
  • 29. REST Hypertext as the Engine of Application State each state can be dynamic each transition can be redirected 21 S0 S2S1 S3 R o y * *
  • 30. REST What is the best practice for versioning a REST API? 22
  • 31. REST What is the best practice for versioning a REST API? 22 DON’T Versioning an interface is just a “polite” way to kill deployed applications
  • 33. SERIOUSLY? When was the last time you saw a version number on a website? 23
  • 34. SERIOUSLY? When was the last time you saw a version number on a website? a REST API is just a website for users with a limited vocabulary (machine to machine interaction) 23
  • 35. BREAKING COMPATIBILITY IS BAD Websites are supposed to retain backwards compatibility (avoid broken links) If you want to break with the past, use a different hostname, with new branding! 24
  • 36. 25 ALWAYS SHIP TRUNK why web applications are different … problems that none of the revision control systems solve … how you can solve some of them yourself [Paul Hammond (Typekit)] http://www.paulhammond.org/2010/06/trunk/ based on real deployment experience at Flickr, Etsy, Typekit, ...
  • 38. 26 ALWAYS SHIP TRUNK What would a revision control system built for supporting deployed web applications be like?
  • 39. 26 ALWAYS SHIP TRUNK What would a revision control system built for supporting deployed web applications be like? right?
  • 40. 26 ALWAYS SHIP TRUNK What would a revision control system built for supporting deployed web applications be like? right? Wouldn’t it be nice if CQ supported …
  • 41. FRAGS Feature Flags for conditional activation of content fragments during continuous deployment 27
  • 42. GLOBAL CONFIGURATION SETTINGS 28 if (frags(“saml_auth”)) { credentials = saml.authenticate(user); } else { credentials = httpAuth.check(user); } • testable for conditional content (i.e., everything) • readable via all development interfaces • writable with ops authority
  • 43. FLIP SWITCHES VIA CONSOLE 29 • easy UI for (proportional) enabling or disabling of frags • activation by frag, recorded with timestamps • activation by AB testing, recorded for comparative analytics [Ross Harmes, http://www.flickr.com/photos/rossharmes/4153769740/]
  • 44. ACTIVATION-AWARE MONITORING 30 • dashboard interfaces for time-series graphs with activation markers • AB comparisons based on automated percentile activation • data available as more resources, for reuse by enterprise monitoring
  • 45. FRAGS Are you a CQ/AEM customer/prospect? Do you want a feature like Frags? Do you need more than what I described? Ask for it! (we prioritize features by customer demand) 31
  • 46. 32