SlideShare ist ein Scribd-Unternehmen logo
1 von 49
HomeAway’s Core API
Or how I learned to stop worrying and love the abstraction layer…
My History
Gordon Weakliem
Professional dev for 21 years
Mostly in the travel industry
CORBA, COM, SOAP, REST…
I started with VRBO.com in February,
2007.
HomeAway’s History
Founded in 2005
Went public in June 2011 (NASDAQ:AWAY)
20+ Acquisitions
 Mostly full-stack “listing sites”
 Diverse tech stacks and teams
 Old code bases
 World-wide dev teams
Complex Marketplace + Products
VRBO’s History
 Started in 1995 advertising our founder’s ski condo.
 By 2006, we were a mix of ASP and ASP.NET in a
roughly 3 tier architecture talking to SQL Server.
 At the time of the HomeAway acquisition in 2006,
there were 4 full time developers. This grew to a
manager, 8 dev + 2 QA in the next couple years.
 VRBO had 65,000 active listings and was growing
100% YOY.
Growth through acquisition
We’re a long way from advertising a ski
condo from a basement server.
How do you integrate all these companies?
Platform Evolution
Pub/Sub – initial consolidation strategy
Solves distribution – enabled growth
Evolution to platform
Apps need single (logical) SoR per
resource type
Apps need a clean abstraction
Must interop with 200+ existing apps
Growing Pains
 During the pub-sub era:
 The architecture was baroque.
 It was really painful to figure out why things went
wrong.
 Listing sites had to implement missing
infrastructure themselves – administration,
caching. Feature set wasn’t unified across
brands.
 There were some shared services (inquiries,
reviews) but each one implemented their own
provisioning, interface standards, and API
conventions.
HomeAway’s Core API
REST API
Unified Architecture
XML/JSON over HTTP (polyglot access)
Many teams contributing
Façade over existing systems
Java/Spring/Jersey/Mybatis/MS SQL
REST API!
Why?
HTTP methods – standard verbs
Resources – standardize nouns
URLs – standardize references
Layered – enterprise features globally
Focused on interface/contract, not on
implementation
api.homeaway.com
API Architecture
API endpoint API endpoint API endpoint
Legacy app
Legacy svc
Legacy svc Legacy app
app app app
cache
oauth
versioning
etc…
Access routed
through a single
hostname at the
load balancer
Endpoints service
a set of nouns,
routed by URL
path
Enterprise
features layered
in across the API
API endpoints
coexist with
legacy apps
and services
The “Grand Vision” of Platform
We designed the API we wanted
but couldn’t build (right away)
We built it anyways
As a façade to the existing systems
New App development benefits
Minimized Risk for Legacy Sunsets
API -> Platform Refactoring
API
Application
Application
Application
REST – Constraints (a refresher)
Client-Server
Stateless
Cacheable
Layers
Uniform Interface!!
Urls
Manipulation
mime-types
HATEOAS
Code on Demand
REST - Representation
Urls
/{entityCollection}/{systemCode}/{entityUuid}
Resource Oriented
Noun centric (/listings, /accounts)
REST - Representation
HATEOAS / Strongly Linked
REST - Representation
Resource representations are
XML / JSON
Defined by an XSD
.NET, ruby, python, javascript bindings
Declarative Validation
REST - Representation
Versioning
X-HomeAway-ApiVersion: 1.81
Version “ratchet” via bi-directional
XSL chain
REST - Representation
Version=1.2
Version=1.3
XSL
XSL
REST – State Transfer
Etags Versioning
Etag: “34310538”
Etags Optimistic Concurrency
If-Match: “34310538”
REST – State Transfer
Caching
Conditional GETs
If-None-Match: “34310538”
Expires: Thu, 29 Aug 2013 04:45:54 GMT
Last-Modified: Wed, 28 Aug 2013 18:00:00 GMT
Cache-Control: max-age=60, must-revalidate
Authentication
OAuth2-based Authentication
Authorization / ACL
Self-serve provisioning for credentials
Access to certain features requires a
review
Implemented as a Filter (layered!)
api-framework
Large company
250+ developers
APIs existed before our “grand vision”
We could not have got this far without
a good foundation.
api-framework
Rails, Sinatra, Django, web.py, JAX-RS
are general purpose web frameworks
Teams develop unique philosophies
Organization
URL Structure
Media
api-framework
“There should be one – and
preferably only one – obvious way to
do it.”
Consistency
API developers can easily work
with(and on) any API endpoint
URL Structure
Entity Collection
System Code
Entity UUID
SubResource
URL Structure
/listings
/listings/0000
 /listings/0000/af6ffb31-ec1b-47b4-8f55-9cc33d0341dd
 /listings/0000/af6ffb31-ec1b-47b4-8f55-
9cc33d0341dd/hitCounter
 /listings/legacy?id=vrbo/980 -> an entity
URL Structure
Opaque – “thou shalt not reason
about a URL’s structure”
Provides an obvious pattern of
organization
Confined vocabulary directly related
to features in the framework
Interface Contracts
There’s a fundamental client/server
mismatch
Clients reason about APIs at the HTTP
level
Developers are deeply nested in
implementation
You could just scrape request vars…
But it’s better to define an interface
Mismatch
Easy to make to assumptions that are
not shared with clients
Leads to backwards incompatibilities
Design By Contract
Force API developers to think about
the “contract of invocation”
Preconditions / Post conditions
Fine grained requirements
Statically declared contracts
Developers do not enforce contracts
Design By Contract
Contract tightly coupled with the
interface
Change is not “free”
Forces developers to think about
backwards compatibility
Contract Documentation
Humans like this form…
HomeAway API Stats
8,266,885,627 calls week ending 2015-03-
09
From 264,570,522 week ending 2013-03-04
99.3% of all calls < 250ms
100+ internal clients
Monitoring for errors/SLA across API
Adoption
Operational Concerns
 We rely on this API
 Outages are a big deal
 We need to be able to develop new features
quickly
 A lot of people are working on this
 It can’t be a free-for-all
 REST isn’t the end-all. Sometimes it’s inefficient
 Polling
 Following links
Filters
HomeAway ops filter
Jersey Servlet
Caching
Versioning
OAuth
Auditing
Auditing
Versioning
Caching
api-framework
code code app
Endpoint
developers
code java
methods
here
App
request/respons
e goes through
many layers of
functionality
Analytics
 We use Splunk, heavily
 Framework log format is the same for
everyone. Splunk queries work for all core
services.
 HomeAway has an entire Big Data team.
 Big Data is kind of a big deal at HomeAway
Caching
 We handle a LOT of traffic
 Connecting consumer endpoints to core API is
operationally challenging.
 In-memory caching on each box
 Elastic Search to support distributed caching
 Developers must enable caching per endpoint
Eventing (AMQP/RabbitMQ)
 POST/PUT/DELETEs are events
 API Endpoints publish events to AMQP topic
 Consumers bind Queues to the topic
Entity Search Service
 Before, developers wrote /findByXXX methods
to support search functions
 ESS – based on Elastic Search
 Dev annotates indexable
 Indexer job automatically builds indexes
 Index exposed under /search
 No free lunch – we have to maintain strict
policies around adding new indexes
Search Examples
 https://api.homeaway.com/reservations/findByEmail?email
=gweakliem@yahoo.com
 https://api.homeaway.com/reservations/search?q=contact.em
ail=%22gweakliem@yahoo.com%22
 https://api.homeaway.com/reservations/findByDate?url=/dr
uids/0060/ef151f3b-ad64-423d-9102-
10fccac084fa&start=2015-01-01&end=2015-03-31
 https://api-
stage.homeaway.com/reservations/search?q=reservationDates
.beginDate=2015-01-
01%20AND%20reservationDates.endDate=2015-03-
31%20AND%20propertyProfile.druid.rel=%22/druids/0060/ef151f3
b-ad64-423d-9102-10fccac084fa%22
Tool Support
 We have a dedicated Developer Tools team
 Manages things like github, Team City, Jira,
deployments
 End to end support, from starting the project to
deploying to production.
 Central repository for application registration
 Developers can self-serve deployment all the
way to production.
BizOps
 Our platform needs are evolving
 BizOps are the next level above the domain API
 Intended an an intermediate integration point
for services that need to combine data from
several core API entities.
 JSON is the default format because the primary
client is an AJAX client – these are consumed
by our consumer-facing sites.
Summary
Domain-specific framework provides
a consistent organizational pattern
Layers permit adding functionality
without changing code in multiple
projects
Summary
First-class contracts reduce risk of
backwards incompatibility
Derive documentation from contracts
Dedicated Tools & Data teams
Operational concerns drive certain
compromises
Thanks!
 Questions?
 Email me: gordon@vrbo.com

Weitere ähnliche Inhalte

Was ist angesagt?

Visbility at the Edge - Deep Insights from Your API
 Visbility at the Edge - Deep Insights from Your API Visbility at the Edge - Deep Insights from Your API
Visbility at the Edge - Deep Insights from Your APIApigee | Google Cloud
 
APIdays Paris 2018 - Platform: How to Product? Jessica Ulyate, Product Owner,...
APIdays Paris 2018 - Platform: How to Product? Jessica Ulyate, Product Owner,...APIdays Paris 2018 - Platform: How to Product? Jessica Ulyate, Product Owner,...
APIdays Paris 2018 - Platform: How to Product? Jessica Ulyate, Product Owner,...apidays
 
APIdays Paris 2018 - The Lord of API Design, Arnaud Lauret, API Handyman & AP...
APIdays Paris 2018 - The Lord of API Design, Arnaud Lauret, API Handyman & AP...APIdays Paris 2018 - The Lord of API Design, Arnaud Lauret, API Handyman & AP...
APIdays Paris 2018 - The Lord of API Design, Arnaud Lauret, API Handyman & AP...apidays
 
Essential API Facade Patterns: Synchronous to Asynchronous Conversion (Episod...
Essential API Facade Patterns: Synchronous to Asynchronous Conversion (Episod...Essential API Facade Patterns: Synchronous to Asynchronous Conversion (Episod...
Essential API Facade Patterns: Synchronous to Asynchronous Conversion (Episod...Apigee | Google Cloud
 
WebSphere Connect and API Discovery
WebSphere Connect and API DiscoveryWebSphere Connect and API Discovery
WebSphere Connect and API Discovery Arthur De Magalhaes
 
API Best Practices
API Best PracticesAPI Best Practices
API Best PracticesSai Koppala
 
Cross platform mobile web apps
Cross platform mobile web appsCross platform mobile web apps
Cross platform mobile web appsJames Pearce
 
Web, Mobile, App and Back!
Web, Mobile, App and Back!Web, Mobile, App and Back!
Web, Mobile, App and Back!Gabriel Walt
 
The API Facade Pattern: Technology - Episode 3
The API Facade Pattern: Technology - Episode 3The API Facade Pattern: Technology - Episode 3
The API Facade Pattern: Technology - Episode 3Apigee | Google Cloud
 
Websites go Serverless - AWS Summit Berlin
Websites go Serverless - AWS Summit BerlinWebsites go Serverless - AWS Summit Berlin
Websites go Serverless - AWS Summit BerlinBoaz Ziniman
 
Why Would A Programmer Fall In Love With SPA?
Why Would A Programmer Fall In Love With SPA?Why Would A Programmer Fall In Love With SPA?
Why Would A Programmer Fall In Love With SPA?Netguru
 
Business Applications Integration In The Cloud
Business Applications Integration In The CloudBusiness Applications Integration In The Cloud
Business Applications Integration In The CloudAnna Brzezińska
 
usable rest apis, by Javier Ramirez from teowaki (Apidays Mediterranea)
usable rest apis, by Javier Ramirez from teowaki (Apidays Mediterranea)usable rest apis, by Javier Ramirez from teowaki (Apidays Mediterranea)
usable rest apis, by Javier Ramirez from teowaki (Apidays Mediterranea)javier ramirez
 
An Introduction to WAI-ARIA
An Introduction to WAI-ARIAAn Introduction to WAI-ARIA
An Introduction to WAI-ARIAIWMW
 
API Design - When to buck the trend (Webcast)
API Design - When to buck the trend (Webcast)API Design - When to buck the trend (Webcast)
API Design - When to buck the trend (Webcast)Apigee | Google Cloud
 
Best Practices You Must Apply to Secure Your APIs - Scott Morrison, SVP & Dis...
Best Practices You Must Apply to Secure Your APIs - Scott Morrison, SVP & Dis...Best Practices You Must Apply to Secure Your APIs - Scott Morrison, SVP & Dis...
Best Practices You Must Apply to Secure Your APIs - Scott Morrison, SVP & Dis...CA API Management
 
Amazon API Gateway
Amazon API GatewayAmazon API Gateway
Amazon API GatewayMark Bate
 
Bringing the App Economy to Enterprise IT
Bringing the App Economy to Enterprise ITBringing the App Economy to Enterprise IT
Bringing the App Economy to Enterprise ITApigee | Google Cloud
 

Was ist angesagt? (20)

Visbility at the Edge - Deep Insights from Your API
 Visbility at the Edge - Deep Insights from Your API Visbility at the Edge - Deep Insights from Your API
Visbility at the Edge - Deep Insights from Your API
 
API Façade Pattern
API Façade PatternAPI Façade Pattern
API Façade Pattern
 
APIdays Paris 2018 - Platform: How to Product? Jessica Ulyate, Product Owner,...
APIdays Paris 2018 - Platform: How to Product? Jessica Ulyate, Product Owner,...APIdays Paris 2018 - Platform: How to Product? Jessica Ulyate, Product Owner,...
APIdays Paris 2018 - Platform: How to Product? Jessica Ulyate, Product Owner,...
 
APIdays Paris 2018 - The Lord of API Design, Arnaud Lauret, API Handyman & AP...
APIdays Paris 2018 - The Lord of API Design, Arnaud Lauret, API Handyman & AP...APIdays Paris 2018 - The Lord of API Design, Arnaud Lauret, API Handyman & AP...
APIdays Paris 2018 - The Lord of API Design, Arnaud Lauret, API Handyman & AP...
 
Essential API Facade Patterns: Synchronous to Asynchronous Conversion (Episod...
Essential API Facade Patterns: Synchronous to Asynchronous Conversion (Episod...Essential API Facade Patterns: Synchronous to Asynchronous Conversion (Episod...
Essential API Facade Patterns: Synchronous to Asynchronous Conversion (Episod...
 
WebSphere Connect and API Discovery
WebSphere Connect and API DiscoveryWebSphere Connect and API Discovery
WebSphere Connect and API Discovery
 
API Best Practices
API Best PracticesAPI Best Practices
API Best Practices
 
Cross platform mobile web apps
Cross platform mobile web appsCross platform mobile web apps
Cross platform mobile web apps
 
Web, Mobile, App and Back!
Web, Mobile, App and Back!Web, Mobile, App and Back!
Web, Mobile, App and Back!
 
The API Facade Pattern: Technology - Episode 3
The API Facade Pattern: Technology - Episode 3The API Facade Pattern: Technology - Episode 3
The API Facade Pattern: Technology - Episode 3
 
Websites go Serverless - AWS Summit Berlin
Websites go Serverless - AWS Summit BerlinWebsites go Serverless - AWS Summit Berlin
Websites go Serverless - AWS Summit Berlin
 
Why Would A Programmer Fall In Love With SPA?
Why Would A Programmer Fall In Love With SPA?Why Would A Programmer Fall In Love With SPA?
Why Would A Programmer Fall In Love With SPA?
 
Business Applications Integration In The Cloud
Business Applications Integration In The CloudBusiness Applications Integration In The Cloud
Business Applications Integration In The Cloud
 
usable rest apis, by Javier Ramirez from teowaki (Apidays Mediterranea)
usable rest apis, by Javier Ramirez from teowaki (Apidays Mediterranea)usable rest apis, by Javier Ramirez from teowaki (Apidays Mediterranea)
usable rest apis, by Javier Ramirez from teowaki (Apidays Mediterranea)
 
An Introduction to WAI-ARIA
An Introduction to WAI-ARIAAn Introduction to WAI-ARIA
An Introduction to WAI-ARIA
 
Html5 aria-css-ibm-csun-2016
Html5 aria-css-ibm-csun-2016Html5 aria-css-ibm-csun-2016
Html5 aria-css-ibm-csun-2016
 
API Design - When to buck the trend (Webcast)
API Design - When to buck the trend (Webcast)API Design - When to buck the trend (Webcast)
API Design - When to buck the trend (Webcast)
 
Best Practices You Must Apply to Secure Your APIs - Scott Morrison, SVP & Dis...
Best Practices You Must Apply to Secure Your APIs - Scott Morrison, SVP & Dis...Best Practices You Must Apply to Secure Your APIs - Scott Morrison, SVP & Dis...
Best Practices You Must Apply to Secure Your APIs - Scott Morrison, SVP & Dis...
 
Amazon API Gateway
Amazon API GatewayAmazon API Gateway
Amazon API Gateway
 
Bringing the App Economy to Enterprise IT
Bringing the App Economy to Enterprise ITBringing the App Economy to Enterprise IT
Bringing the App Economy to Enterprise IT
 

Ähnlich wie All Things API Presentation - Gordon Weakleim [HomeAway]

RefCard API Architecture Strategy
RefCard API Architecture StrategyRefCard API Architecture Strategy
RefCard API Architecture StrategyOCTO Technology
 
Connect js nodejs_api_shubhra
Connect js nodejs_api_shubhraConnect js nodejs_api_shubhra
Connect js nodejs_api_shubhraShubhra Kar
 
REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)Sascha Wenninger
 
Building enterprise depth APIs with the IBM hybrid integration portfolio
Building enterprise depth APIs with the IBM hybrid integration portfolioBuilding enterprise depth APIs with the IBM hybrid integration portfolio
Building enterprise depth APIs with the IBM hybrid integration portfolioKim Clark
 
Oracle API Platform Cloud Service Best Practices & Lessons Learnt
Oracle API Platform Cloud Service Best Practices & Lessons LearntOracle API Platform Cloud Service Best Practices & Lessons Learnt
Oracle API Platform Cloud Service Best Practices & Lessons Learntluisw19
 
MyMobileWeb Certification Part I
MyMobileWeb Certification Part IMyMobileWeb Certification Part I
MyMobileWeb Certification Part Icrdlc
 
LAJUG Napster REST API
LAJUG Napster REST APILAJUG Napster REST API
LAJUG Napster REST APIstephenbhadran
 
REST: So What's It All About? (SAP TechEd 2011, MOB107)
REST: So What's It All About? (SAP TechEd 2011, MOB107)REST: So What's It All About? (SAP TechEd 2011, MOB107)
REST: So What's It All About? (SAP TechEd 2011, MOB107)Sascha Wenninger
 
Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015Bluegrass Digital
 
Triangle Node Meetup : APIs in Minutes with Node.js
Triangle Node Meetup :  APIs in Minutes with Node.jsTriangle Node Meetup :  APIs in Minutes with Node.js
Triangle Node Meetup : APIs in Minutes with Node.jsShubhra Kar
 
Angular jS Introduction by Google
Angular jS Introduction by GoogleAngular jS Introduction by Google
Angular jS Introduction by GoogleASG
 
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019Haufe-Lexware GmbH & Co KG
 
Getting Started with the Node.js LoopBack APi Framework
Getting Started with the Node.js LoopBack APi FrameworkGetting Started with the Node.js LoopBack APi Framework
Getting Started with the Node.js LoopBack APi FrameworkJimmy Guerrero
 
Creating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services APICreating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services APIDavid Keener
 
Web API or WCF - An Architectural Comparison
Web API or WCF - An Architectural ComparisonWeb API or WCF - An Architectural Comparison
Web API or WCF - An Architectural ComparisonAdnan Masood
 
API Gateways are going through an identity crisis
API Gateways are going through an identity crisisAPI Gateways are going through an identity crisis
API Gateways are going through an identity crisisChristian Posta
 
Seattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js WorkshopSeattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js WorkshopJimmy Guerrero
 
Extend soa with api management Sangam18
Extend soa with api management Sangam18Extend soa with api management Sangam18
Extend soa with api management Sangam18Vinay Kumar
 

Ähnlich wie All Things API Presentation - Gordon Weakleim [HomeAway] (20)

RefCard API Architecture Strategy
RefCard API Architecture StrategyRefCard API Architecture Strategy
RefCard API Architecture Strategy
 
Connect js nodejs_api_shubhra
Connect js nodejs_api_shubhraConnect js nodejs_api_shubhra
Connect js nodejs_api_shubhra
 
REST full API Design
REST full API DesignREST full API Design
REST full API Design
 
REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)
 
Building enterprise depth APIs with the IBM hybrid integration portfolio
Building enterprise depth APIs with the IBM hybrid integration portfolioBuilding enterprise depth APIs with the IBM hybrid integration portfolio
Building enterprise depth APIs with the IBM hybrid integration portfolio
 
Oracle API Platform Cloud Service Best Practices & Lessons Learnt
Oracle API Platform Cloud Service Best Practices & Lessons LearntOracle API Platform Cloud Service Best Practices & Lessons Learnt
Oracle API Platform Cloud Service Best Practices & Lessons Learnt
 
MyMobileWeb Certification Part I
MyMobileWeb Certification Part IMyMobileWeb Certification Part I
MyMobileWeb Certification Part I
 
LAJUG Napster REST API
LAJUG Napster REST APILAJUG Napster REST API
LAJUG Napster REST API
 
REST: So What's It All About? (SAP TechEd 2011, MOB107)
REST: So What's It All About? (SAP TechEd 2011, MOB107)REST: So What's It All About? (SAP TechEd 2011, MOB107)
REST: So What's It All About? (SAP TechEd 2011, MOB107)
 
Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015
 
Triangle Node Meetup : APIs in Minutes with Node.js
Triangle Node Meetup :  APIs in Minutes with Node.jsTriangle Node Meetup :  APIs in Minutes with Node.js
Triangle Node Meetup : APIs in Minutes with Node.js
 
Angular jS Introduction by Google
Angular jS Introduction by GoogleAngular jS Introduction by Google
Angular jS Introduction by Google
 
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
 
Getting Started with the Node.js LoopBack APi Framework
Getting Started with the Node.js LoopBack APi FrameworkGetting Started with the Node.js LoopBack APi Framework
Getting Started with the Node.js LoopBack APi Framework
 
Creating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services APICreating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services API
 
Web API or WCF - An Architectural Comparison
Web API or WCF - An Architectural ComparisonWeb API or WCF - An Architectural Comparison
Web API or WCF - An Architectural Comparison
 
API Gateways are going through an identity crisis
API Gateways are going through an identity crisisAPI Gateways are going through an identity crisis
API Gateways are going through an identity crisis
 
Seattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js WorkshopSeattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js Workshop
 
Extend soa with api management Sangam18
Extend soa with api management Sangam18Extend soa with api management Sangam18
Extend soa with api management Sangam18
 
Getting Started with API Management
Getting Started with API ManagementGetting Started with API Management
Getting Started with API Management
 

Mehr von Cloud Elements

10 Step Guide to API Integrations
10 Step Guide to API Integrations10 Step Guide to API Integrations
10 Step Guide to API IntegrationsCloud Elements
 
How to Build Platforms, Not Products
How to Build Platforms, Not ProductsHow to Build Platforms, Not Products
How to Build Platforms, Not ProductsCloud Elements
 
State of API Integration Report 2017
State of API Integration Report 2017State of API Integration Report 2017
State of API Integration Report 2017Cloud Elements
 
Cloud Elements | State of API Integration Report 2018
Cloud Elements | State of API Integration Report 2018Cloud Elements | State of API Integration Report 2018
Cloud Elements | State of API Integration Report 2018Cloud Elements
 
Atlassianconnectadd onsforeveryplatform-tanguycrusson-140925195129-phpapp01
Atlassianconnectadd onsforeveryplatform-tanguycrusson-140925195129-phpapp01Atlassianconnectadd onsforeveryplatform-tanguycrusson-140925195129-phpapp01
Atlassianconnectadd onsforeveryplatform-tanguycrusson-140925195129-phpapp01Cloud Elements
 
Lean Product Development 101
Lean Product Development 101Lean Product Development 101
Lean Product Development 101Cloud Elements
 
Building Event Driven API Services Using Webhooks
Building Event Driven API Services Using WebhooksBuilding Event Driven API Services Using Webhooks
Building Event Driven API Services Using WebhooksCloud Elements
 
Lean Product Development 101
Lean Product Development 101Lean Product Development 101
Lean Product Development 101Cloud Elements
 
'Scalable Logging and Analytics with LogStash'
'Scalable Logging and Analytics with LogStash''Scalable Logging and Analytics with LogStash'
'Scalable Logging and Analytics with LogStash'Cloud Elements
 
The Entrepreneurial Methodology: How engineers can harness the madness in a n...
The Entrepreneurial Methodology: How engineers can harness the madness in a n...The Entrepreneurial Methodology: How engineers can harness the madness in a n...
The Entrepreneurial Methodology: How engineers can harness the madness in a n...Cloud Elements
 
Cloud Elements Documents Hub
Cloud Elements Documents HubCloud Elements Documents Hub
Cloud Elements Documents HubCloud Elements
 
Data normalization across API interactions
Data normalization across API interactionsData normalization across API interactions
Data normalization across API interactionsCloud Elements
 
Filtering From the Firehose: Real Time Social Media Streaming
Filtering From the Firehose: Real Time Social Media StreamingFiltering From the Firehose: Real Time Social Media Streaming
Filtering From the Firehose: Real Time Social Media StreamingCloud Elements
 
Lean Product Development for Startups- Denver Startup Week
Lean Product Development for Startups- Denver Startup Week Lean Product Development for Startups- Denver Startup Week
Lean Product Development for Startups- Denver Startup Week Cloud Elements
 
Lean product development for startups
Lean product development for startupsLean product development for startups
Lean product development for startupsCloud Elements
 
Using a simple Ruby program to interface with quickly provisioned cloud appli...
Using a simple Ruby program to interface with quickly provisioned cloud appli...Using a simple Ruby program to interface with quickly provisioned cloud appli...
Using a simple Ruby program to interface with quickly provisioned cloud appli...Cloud Elements
 
Money & Bitcoin & the Cloud: It's all just data streams, anyway!
Money & Bitcoin & the Cloud: It's all just data streams, anyway!Money & Bitcoin & the Cloud: It's all just data streams, anyway!
Money & Bitcoin & the Cloud: It's all just data streams, anyway!Cloud Elements
 
API Versioning in the Cloud
API Versioning in the CloudAPI Versioning in the Cloud
API Versioning in the CloudCloud Elements
 

Mehr von Cloud Elements (20)

10 Step Guide to API Integrations
10 Step Guide to API Integrations10 Step Guide to API Integrations
10 Step Guide to API Integrations
 
How to Build Platforms, Not Products
How to Build Platforms, Not ProductsHow to Build Platforms, Not Products
How to Build Platforms, Not Products
 
State of API Integration Report 2017
State of API Integration Report 2017State of API Integration Report 2017
State of API Integration Report 2017
 
Cloud Elements | State of API Integration Report 2018
Cloud Elements | State of API Integration Report 2018Cloud Elements | State of API Integration Report 2018
Cloud Elements | State of API Integration Report 2018
 
Atlassianconnectadd onsforeveryplatform-tanguycrusson-140925195129-phpapp01
Atlassianconnectadd onsforeveryplatform-tanguycrusson-140925195129-phpapp01Atlassianconnectadd onsforeveryplatform-tanguycrusson-140925195129-phpapp01
Atlassianconnectadd onsforeveryplatform-tanguycrusson-140925195129-phpapp01
 
Email As A Datasource
Email As A DatasourceEmail As A Datasource
Email As A Datasource
 
Lean Product Development 101
Lean Product Development 101Lean Product Development 101
Lean Product Development 101
 
Building Event Driven API Services Using Webhooks
Building Event Driven API Services Using WebhooksBuilding Event Driven API Services Using Webhooks
Building Event Driven API Services Using Webhooks
 
Lean Product Development 101
Lean Product Development 101Lean Product Development 101
Lean Product Development 101
 
'Scalable Logging and Analytics with LogStash'
'Scalable Logging and Analytics with LogStash''Scalable Logging and Analytics with LogStash'
'Scalable Logging and Analytics with LogStash'
 
The Entrepreneurial Methodology: How engineers can harness the madness in a n...
The Entrepreneurial Methodology: How engineers can harness the madness in a n...The Entrepreneurial Methodology: How engineers can harness the madness in a n...
The Entrepreneurial Methodology: How engineers can harness the madness in a n...
 
Cloud Elements Documents Hub
Cloud Elements Documents HubCloud Elements Documents Hub
Cloud Elements Documents Hub
 
Data normalization across API interactions
Data normalization across API interactionsData normalization across API interactions
Data normalization across API interactions
 
Filtering From the Firehose: Real Time Social Media Streaming
Filtering From the Firehose: Real Time Social Media StreamingFiltering From the Firehose: Real Time Social Media Streaming
Filtering From the Firehose: Real Time Social Media Streaming
 
Lean Product Development for Startups- Denver Startup Week
Lean Product Development for Startups- Denver Startup Week Lean Product Development for Startups- Denver Startup Week
Lean Product Development for Startups- Denver Startup Week
 
Appx for Developers
Appx for Developers   Appx for Developers
Appx for Developers
 
Lean product development for startups
Lean product development for startupsLean product development for startups
Lean product development for startups
 
Using a simple Ruby program to interface with quickly provisioned cloud appli...
Using a simple Ruby program to interface with quickly provisioned cloud appli...Using a simple Ruby program to interface with quickly provisioned cloud appli...
Using a simple Ruby program to interface with quickly provisioned cloud appli...
 
Money & Bitcoin & the Cloud: It's all just data streams, anyway!
Money & Bitcoin & the Cloud: It's all just data streams, anyway!Money & Bitcoin & the Cloud: It's all just data streams, anyway!
Money & Bitcoin & the Cloud: It's all just data streams, anyway!
 
API Versioning in the Cloud
API Versioning in the CloudAPI Versioning in the Cloud
API Versioning in the Cloud
 

Kürzlich hochgeladen

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Kürzlich hochgeladen (20)

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

All Things API Presentation - Gordon Weakleim [HomeAway]

  • 1. HomeAway’s Core API Or how I learned to stop worrying and love the abstraction layer…
  • 2. My History Gordon Weakliem Professional dev for 21 years Mostly in the travel industry CORBA, COM, SOAP, REST… I started with VRBO.com in February, 2007.
  • 3. HomeAway’s History Founded in 2005 Went public in June 2011 (NASDAQ:AWAY) 20+ Acquisitions  Mostly full-stack “listing sites”  Diverse tech stacks and teams  Old code bases  World-wide dev teams Complex Marketplace + Products
  • 4. VRBO’s History  Started in 1995 advertising our founder’s ski condo.  By 2006, we were a mix of ASP and ASP.NET in a roughly 3 tier architecture talking to SQL Server.  At the time of the HomeAway acquisition in 2006, there were 4 full time developers. This grew to a manager, 8 dev + 2 QA in the next couple years.  VRBO had 65,000 active listings and was growing 100% YOY.
  • 5. Growth through acquisition We’re a long way from advertising a ski condo from a basement server. How do you integrate all these companies?
  • 6. Platform Evolution Pub/Sub – initial consolidation strategy Solves distribution – enabled growth Evolution to platform Apps need single (logical) SoR per resource type Apps need a clean abstraction Must interop with 200+ existing apps
  • 7. Growing Pains  During the pub-sub era:  The architecture was baroque.  It was really painful to figure out why things went wrong.  Listing sites had to implement missing infrastructure themselves – administration, caching. Feature set wasn’t unified across brands.  There were some shared services (inquiries, reviews) but each one implemented their own provisioning, interface standards, and API conventions.
  • 8. HomeAway’s Core API REST API Unified Architecture XML/JSON over HTTP (polyglot access) Many teams contributing Façade over existing systems Java/Spring/Jersey/Mybatis/MS SQL
  • 9. REST API! Why? HTTP methods – standard verbs Resources – standardize nouns URLs – standardize references Layered – enterprise features globally Focused on interface/contract, not on implementation
  • 10. api.homeaway.com API Architecture API endpoint API endpoint API endpoint Legacy app Legacy svc Legacy svc Legacy app app app app cache oauth versioning etc… Access routed through a single hostname at the load balancer Endpoints service a set of nouns, routed by URL path Enterprise features layered in across the API API endpoints coexist with legacy apps and services
  • 11. The “Grand Vision” of Platform We designed the API we wanted but couldn’t build (right away) We built it anyways As a façade to the existing systems New App development benefits Minimized Risk for Legacy Sunsets
  • 12. API -> Platform Refactoring API Application Application Application
  • 13. REST – Constraints (a refresher) Client-Server Stateless Cacheable Layers Uniform Interface!! Urls Manipulation mime-types HATEOAS Code on Demand
  • 15. REST - Representation HATEOAS / Strongly Linked
  • 16. REST - Representation Resource representations are XML / JSON Defined by an XSD .NET, ruby, python, javascript bindings Declarative Validation
  • 17. REST - Representation Versioning X-HomeAway-ApiVersion: 1.81 Version “ratchet” via bi-directional XSL chain
  • 19. REST – State Transfer Etags Versioning Etag: “34310538” Etags Optimistic Concurrency If-Match: “34310538”
  • 20. REST – State Transfer Caching Conditional GETs If-None-Match: “34310538” Expires: Thu, 29 Aug 2013 04:45:54 GMT Last-Modified: Wed, 28 Aug 2013 18:00:00 GMT Cache-Control: max-age=60, must-revalidate
  • 21. Authentication OAuth2-based Authentication Authorization / ACL Self-serve provisioning for credentials Access to certain features requires a review Implemented as a Filter (layered!)
  • 22. api-framework Large company 250+ developers APIs existed before our “grand vision” We could not have got this far without a good foundation.
  • 23. api-framework Rails, Sinatra, Django, web.py, JAX-RS are general purpose web frameworks Teams develop unique philosophies Organization URL Structure Media
  • 24. api-framework “There should be one – and preferably only one – obvious way to do it.” Consistency API developers can easily work with(and on) any API endpoint
  • 25. URL Structure Entity Collection System Code Entity UUID SubResource
  • 26. URL Structure /listings /listings/0000  /listings/0000/af6ffb31-ec1b-47b4-8f55-9cc33d0341dd  /listings/0000/af6ffb31-ec1b-47b4-8f55- 9cc33d0341dd/hitCounter  /listings/legacy?id=vrbo/980 -> an entity
  • 27. URL Structure Opaque – “thou shalt not reason about a URL’s structure” Provides an obvious pattern of organization Confined vocabulary directly related to features in the framework
  • 28. Interface Contracts There’s a fundamental client/server mismatch Clients reason about APIs at the HTTP level Developers are deeply nested in implementation
  • 29. You could just scrape request vars…
  • 30. But it’s better to define an interface
  • 31. Mismatch Easy to make to assumptions that are not shared with clients Leads to backwards incompatibilities
  • 32. Design By Contract Force API developers to think about the “contract of invocation” Preconditions / Post conditions Fine grained requirements Statically declared contracts Developers do not enforce contracts
  • 33. Design By Contract Contract tightly coupled with the interface Change is not “free” Forces developers to think about backwards compatibility
  • 35. Humans like this form…
  • 36. HomeAway API Stats 8,266,885,627 calls week ending 2015-03- 09 From 264,570,522 week ending 2013-03-04 99.3% of all calls < 250ms 100+ internal clients Monitoring for errors/SLA across API
  • 38. Operational Concerns  We rely on this API  Outages are a big deal  We need to be able to develop new features quickly  A lot of people are working on this  It can’t be a free-for-all  REST isn’t the end-all. Sometimes it’s inefficient  Polling  Following links
  • 39. Filters HomeAway ops filter Jersey Servlet Caching Versioning OAuth Auditing Auditing Versioning Caching api-framework code code app Endpoint developers code java methods here App request/respons e goes through many layers of functionality
  • 40. Analytics  We use Splunk, heavily  Framework log format is the same for everyone. Splunk queries work for all core services.  HomeAway has an entire Big Data team.  Big Data is kind of a big deal at HomeAway
  • 41. Caching  We handle a LOT of traffic  Connecting consumer endpoints to core API is operationally challenging.  In-memory caching on each box  Elastic Search to support distributed caching  Developers must enable caching per endpoint
  • 42. Eventing (AMQP/RabbitMQ)  POST/PUT/DELETEs are events  API Endpoints publish events to AMQP topic  Consumers bind Queues to the topic
  • 43. Entity Search Service  Before, developers wrote /findByXXX methods to support search functions  ESS – based on Elastic Search  Dev annotates indexable  Indexer job automatically builds indexes  Index exposed under /search  No free lunch – we have to maintain strict policies around adding new indexes
  • 44. Search Examples  https://api.homeaway.com/reservations/findByEmail?email =gweakliem@yahoo.com  https://api.homeaway.com/reservations/search?q=contact.em ail=%22gweakliem@yahoo.com%22  https://api.homeaway.com/reservations/findByDate?url=/dr uids/0060/ef151f3b-ad64-423d-9102- 10fccac084fa&start=2015-01-01&end=2015-03-31  https://api- stage.homeaway.com/reservations/search?q=reservationDates .beginDate=2015-01- 01%20AND%20reservationDates.endDate=2015-03- 31%20AND%20propertyProfile.druid.rel=%22/druids/0060/ef151f3 b-ad64-423d-9102-10fccac084fa%22
  • 45. Tool Support  We have a dedicated Developer Tools team  Manages things like github, Team City, Jira, deployments  End to end support, from starting the project to deploying to production.  Central repository for application registration  Developers can self-serve deployment all the way to production.
  • 46. BizOps  Our platform needs are evolving  BizOps are the next level above the domain API  Intended an an intermediate integration point for services that need to combine data from several core API entities.  JSON is the default format because the primary client is an AJAX client – these are consumed by our consumer-facing sites.
  • 47. Summary Domain-specific framework provides a consistent organizational pattern Layers permit adding functionality without changing code in multiple projects
  • 48. Summary First-class contracts reduce risk of backwards incompatibility Derive documentation from contracts Dedicated Tools & Data teams Operational concerns drive certain compromises
  • 49. Thanks!  Questions?  Email me: gordon@vrbo.com

Hinweis der Redaktion

  1. I’m just going to give a very high-level overview here – René will go more into detail…
  2. Add a visual showing consolidation
  3. REST – 6 constraints Client-Server, Stateless, Cacheable, Layered System, Code on demand (optional), Uniform Interface (Id of resources, manipulation of resources through these representations, self-descriptive messages, HATEAOS)
  4. It’s important to note that URL structure is not necessarily a simplification for clients. Roy Fielding notes this explicitly “A REST API must not define fixed resource names or hierarchies
  5. It’s important to note that URL structure is not necessarily a simplification for clients. Roy Fielding notes this explicitly “A REST API must not define fixed resource names or hierarchies
  6. splunk, logging, resource SLA