SlideShare a Scribd company logo
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

PDF
Scalability, Availability & Stability Patterns
PDF
A Thorough Comparison of Delta Lake, Iceberg and Hudi
PPTX
Microservices Architecture - Bangkok 2018
PPTX
SSO introduction
PDF
Monitoring with prometheus
PDF
Trino: A Ludicrously Fast Query Engine - Pulsar Summit NA 2021
PPTX
How to Move from Monitoring to Observability, On-Premises and in a Multi-Clou...
PPTX
Liquibase for java developers
Scalability, Availability & Stability Patterns
A Thorough Comparison of Delta Lake, Iceberg and Hudi
Microservices Architecture - Bangkok 2018
SSO introduction
Monitoring with prometheus
Trino: A Ludicrously Fast Query Engine - Pulsar Summit NA 2021
How to Move from Monitoring to Observability, On-Premises and in a Multi-Clou...
Liquibase for java developers

What's hot (20)

PDF
MySQL InnoDB Cluster HA Overview & Demo
PPSX
Microservices, DevOps & SRE
PPTX
From cache to in-memory data grid. Introduction to Hazelcast.
PDF
Tracing 2000+ polyglot microservices at Uber with Jaeger and OpenTracing
PDF
Maximum Availability Architecture - Best Practices for Oracle Database 19c
PDF
Grafana introduction
PPTX
PPT
Galera Cluster Best Practices for DBA's and DevOps Part 1
PDF
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
PDF
[2018] MySQL 이중화 진화기
PPTX
Unique ID generation in distributed systems
PDF
Introduction to SAML 2.0
PDF
Design patterns for microservice architecture
PDF
Kinh nghiệm triển khai Microservices tại Sapo.vn
PPTX
Kafka Tutorial: Kafka Security
PPTX
Mulesoft Anypoint platform introduction
PDF
Overview of Site Reliability Engineering (SRE) & best practices
PDF
ProxySQL High Avalability and Configuration Management Overview
PPTX
Oracle GoldenGate 21c New Features and Best Practices
PDF
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL InnoDB Cluster HA Overview & Demo
Microservices, DevOps & SRE
From cache to in-memory data grid. Introduction to Hazelcast.
Tracing 2000+ polyglot microservices at Uber with Jaeger and OpenTracing
Maximum Availability Architecture - Best Practices for Oracle Database 19c
Grafana introduction
Galera Cluster Best Practices for DBA's and DevOps Part 1
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
[2018] MySQL 이중화 진화기
Unique ID generation in distributed systems
Introduction to SAML 2.0
Design patterns for microservice architecture
Kinh nghiệm triển khai Microservices tại Sapo.vn
Kafka Tutorial: Kafka Security
Mulesoft Anypoint platform introduction
Overview of Site Reliability Engineering (SRE) & best practices
ProxySQL High Avalability and Configuration Management Overview
Oracle GoldenGate 21c New Features and Best Practices
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
Ad

Similar to EVOLVE'13 | Keynote | Roy Fielding (20)

PDF
Be My API How to Implement an API Strategy Everyone will Love
PDF
Fundamentals of Web Development For Non-Developers
PDF
Designing your API Server for mobile apps
PPTX
Flashback: QCon San Francisco 2012
PPTX
Building Software Backend (Web API)
PDF
Codecentric At Ajax World Conference San Jose
PDF
PHP At 5000 Requests Per Second: Hootsuite’s Scaling Story
KEY
Social dev camp_2011
PDF
High Scalability Toronto: Meetup #2
PPTX
Splunk All the Things: Our First 3 Months Monitoring Web Service APIs - Splun...
PDF
Tech for the Non Technical - Anatomy of an Application Stack
PPTX
Design Reviews for Operations - Velocity Europe 2014
PPT
API Management and Community Development layer 7 in london 2012
PDF
Past, Present and Future of APIs of Mobile and Web Apps
PDF
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
PPTX
Your API is not a Website!
PPTX
The Professional Programmer
PDF
REST in ( a mobile ) peace @ WHYMCA 05-21-2011
PPTX
REST Presentation
PDF
Download full ebook of Restfulnet 1st Edition Jon Flanders instant download pdf
Be My API How to Implement an API Strategy Everyone will Love
Fundamentals of Web Development For Non-Developers
Designing your API Server for mobile apps
Flashback: QCon San Francisco 2012
Building Software Backend (Web API)
Codecentric At Ajax World Conference San Jose
PHP At 5000 Requests Per Second: Hootsuite’s Scaling Story
Social dev camp_2011
High Scalability Toronto: Meetup #2
Splunk All the Things: Our First 3 Months Monitoring Web Service APIs - Splun...
Tech for the Non Technical - Anatomy of an Application Stack
Design Reviews for Operations - Velocity Europe 2014
API Management and Community Development layer 7 in london 2012
Past, Present and Future of APIs of Mobile and Web Apps
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
Your API is not a Website!
The Professional Programmer
REST in ( a mobile ) peace @ WHYMCA 05-21-2011
REST Presentation
Download full ebook of Restfulnet 1st Edition Jon Flanders instant download pdf
Ad

More from Evolve The Adobe Digital Marketing Community (20)

PDF
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
PPTX
Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5
PPTX
Evolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to Avoid
PPTX
Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...
PPTX
Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...
PPTX
Evolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM Projects
PPTX
Evolve19 | Nick Panagopoulos | World Focus: Translation Tips and Trends
PPTX
Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...
PPTX
Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...
PPTX
Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...
PPTX
Evolve 19 | Gina Petruccelli | Let’s Dig Into Requirements
PPTX
Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...
PDF
Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...
PPTX
Evolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe Sensei
PPTX
Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...
PPTX
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
PPTX
Evolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver Everywhere
PPTX
Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5
PDF
Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...
PPTX
Evolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go Live
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5
Evolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to Avoid
Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...
Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...
Evolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM Projects
Evolve19 | Nick Panagopoulos | World Focus: Translation Tips and Trends
Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...
Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...
Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...
Evolve 19 | Gina Petruccelli | Let’s Dig Into Requirements
Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...
Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...
Evolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe Sensei
Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
Evolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver Everywhere
Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5
Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...
Evolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go Live

Recently uploaded (20)

PPTX
A Presentation on Artificial Intelligence
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPT
Teaching material agriculture food technology
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
A Presentation on Artificial Intelligence
Advanced methodologies resolving dimensionality complications for autism neur...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
The Rise and Fall of 3GPP – Time for a Sabbatical?
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Chapter 3 Spatial Domain Image Processing.pdf
Big Data Technologies - Introduction.pptx
Review of recent advances in non-invasive hemoglobin estimation
20250228 LYD VKU AI Blended-Learning.pptx
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Teaching material agriculture food technology
Building Integrated photovoltaic BIPV_UPV.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Network Security Unit 5.pdf for BCA BBA.
Understanding_Digital_Forensics_Presentation.pptx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy

EVOLVE'13 | Keynote | Roy Fielding

  • 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