SlideShare a Scribd company logo
The Great API Redesign
Simone Carle,, DNSimple
LF_APIStrat17_The Great API Redesign
LF_APIStrat17_The Great API Redesign
LF_APIStrat17_The Great API Redesign
"This PR is a first step towards API versioning and
using a dedicated hostname for API."
"This PR is a first step towards API versioning and
using a dedicated hostname for API."
Dec 28, 2013
Dec 28, 2013
v0
API v0
API v0
• Same hostname as website
• No versioning
• No metrics
• Shared Rails controllers
It worked ™ 😬
GET https://dnsimple.com/domains.json
GET https://dnsimple.com/domains.json
Jan 14, 2014Dec 28, 2013
v0 v1
API v1
API v1
• Introduce hostname api.dnsimple.com
• Introduce path-based versioning
• SGll uses the same Rails controllers
• Simple transiGon through minimal changes
GET https://api.dnsimple.com/v1/domains
Why a separate hostname?
• Easily flag requests as API requests
• Improved error handling due to clear indicaGon of what
is an API call
• Adds the ability to extract API code from controllers
• Provides easier scaling
Why path-based versioning?
The approach I followed is simple.
May be not the most restful, but it's the one very
commonly adopted that will also allow us to
switch to a mime-based approach (in case we
want to follow that route in the future).
Why path-based versioning?
• API version is embedded in the path and it prefixes the URL
• Everything in the URL is easily visible in logs
• Easiest implementaGon for both producGon and
consumpGon
• Hi,ng path-based versioned APIs with a browser is easy
• New versions increase the major number
• Path and verb changes can be introduced at major version
Jan 14, 2014Dec 28, 2013
v0 v1
API v1
Jan 14, 2014Dec 28, 2013
v0 v1 v2
API v2
Separate ApplicaDon
• Use of a separate
(sub)applicaGon
• No longer Gghtly coupled to
the Rails controllers
hWp://hanamirb.org
hWp://confreaks.tv/videos/railsconf2016-developing-and-maintaining-a-plaorm-with-rails-and-lotus
the Roadmap
• MulG-account
• Reusable shared business logic
• Response serializaGon
• PaginaGon, SorGng and Filtering
• AuthenGcaGon
• Rate limiGng
• Webhooks
• API clients
LF_APIStrat17_The Great API Redesign
LF_APIStrat17_The Great API Redesign
May 2, 2016
API clients
Java PHP
May 2, 2016 Sep 6, 2016 Sep 13, 2016
hWps://slidr.io/weppos/using-go-to-guide-api-design-decisions-dotgo-2016
API clients
• Developing clients gets easier with each new client
• Common design paWerns emerge
• Shared HTTP fixtures
• We built a foundaGon for API clients development
hWps://blog.dnsimple.com/2017/01/api-client-tesGng-with-hWp-fixtures/
PrioriDes
• Gathered metrics on v1 endpoint usage
• PrioriGzed implementaGon based on usage
Jan 14, 2014 Mar 9, 2016 (Beta)
Dec 13, 2016 (GA)
Dec 28, 2013
v0 v1 v2
API v2
Stats
• 717 Days from "Start" to "Finish"
• 3 (almost) full-Gme team members out of 11 total, with a
collaboraGve effort from the enGre DNSimple team
• 4 official API clients, with 2 more under development
• 75 API methods currently available (*)
• 251 Dckets across 7 major milestones
• ~423 API related support Dckets handled in the last year
• ~1934 commits across the 4 API clients and applicaGon
What's next?
• Facilitate transiGon to API v2
• Implement new methods (e.g. cerGficate, pricing)
• Adopt a formal language to describe the API
Open API
hWps://www.openapis.org/
Lessons
• Simple transiGon through minimal changes
• Be a producer and a consumer
• Provide official clients (and/or contribute)
• Measure decisions
• Invest into the API
Thanks!
DNSimple
dnsimple.com
@dnsimple
Simone CarleS
simonecarle,.com
@weppos
hWps://slidr.io/weppos
LF_APIStrat17_The Great API Redesign

More Related Content

PPSX
Released WEBridge 4 SAP R 3 on 9/9 of 2014
PDF
Reasonable app development
PDF
Running Containerized Applications on Modern Serverless Platforms
PDF
Rails 5 subjective overview
PDF
Scala on Rails #rakutentech
PDF
Large Scale GWAVA 7
PDF
Serverless Architecture Patterns - Manoj Ganapathi - Serverless Summit
PDF
Chef Automate - Infracoders Canberra August 8, 2017
Released WEBridge 4 SAP R 3 on 9/9 of 2014
Reasonable app development
Running Containerized Applications on Modern Serverless Platforms
Rails 5 subjective overview
Scala on Rails #rakutentech
Large Scale GWAVA 7
Serverless Architecture Patterns - Manoj Ganapathi - Serverless Summit
Chef Automate - Infracoders Canberra August 8, 2017

What's hot (18)

PDF
PayPal's History of Microservices Architecture
PPTX
Serverless Code Deployments in AWS
PDF
Presentazione Google App Engine
PDF
Kong API
PDF
From Heroku to Amazon AWS
PPTX
Alfresco Digital Business Platform - Why, How, What
ODP
Go lambda-presentation
PPTX
Monolith to microservices - our journey
PDF
APidays Paris 2019 - Reason for Asynchronous APIs by John Carter, Software AG
PPTX
Building reusable components as micro frontends with glimmer js and webcompo...
PPTX
JustLetMeCode-Final
PDF
Serverless with Firebase
PPTX
Process Orchestration with Flowable and Spring Boot
PDF
Clovaを支える技術 機械学習配信基盤のご紹介
PDF
A Microservices Journey - Susanne Kaiser
PDF
Moving from app services to azure functions
PPTX
ADF Basics and Beyond - Alfresco Devcon 2018
PDF
WebCamp 2016: Front-end. Виталий Бобров: JavaScript для мобильной разработки.
PayPal's History of Microservices Architecture
Serverless Code Deployments in AWS
Presentazione Google App Engine
Kong API
From Heroku to Amazon AWS
Alfresco Digital Business Platform - Why, How, What
Go lambda-presentation
Monolith to microservices - our journey
APidays Paris 2019 - Reason for Asynchronous APIs by John Carter, Software AG
Building reusable components as micro frontends with glimmer js and webcompo...
JustLetMeCode-Final
Serverless with Firebase
Process Orchestration with Flowable and Spring Boot
Clovaを支える技術 機械学習配信基盤のご紹介
A Microservices Journey - Susanne Kaiser
Moving from app services to azure functions
ADF Basics and Beyond - Alfresco Devcon 2018
WebCamp 2016: Front-end. Виталий Бобров: JavaScript для мобильной разработки.
Ad

Similar to LF_APIStrat17_The Great API Redesign (20)

PPTX
Your API on Steroids
PPTX
Tools and techniques for APIs
PDF
FaaS Automation and Infrastructure
PPTX
Build APIs in Node.js and Swagger 2.0 with Apigee-127
PDF
Getting Started with the WSO2 manager
PPTX
App forum2015 London - Building RhoMobile Applications with Ionic
PPTX
Building self service framework
PDF
Serverless Architecture Patterns - Manoj Ganapathi
PPTX
Using-AngularJS-with-Sitefinity.pptx
PPTX
SAP Cloud Platform API Management Technical Brief
PPTX
Swagger - Making REST APIs friendlier
PDF
Getting Started with the WSO2 API Manager
PDF
Angular, the New Angular JS
PPTX
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
PDF
How angularjs saves rails
PDF
Yellowpagescom Behind The Curtain
PDF
End to-End SPA Development Using ASP.NET and AngularJS
PDF
Building your own calendly using amazon app sync
PPTX
Single page App
PPTX
SAP Inside Track Singapore 2014
Your API on Steroids
Tools and techniques for APIs
FaaS Automation and Infrastructure
Build APIs in Node.js and Swagger 2.0 with Apigee-127
Getting Started with the WSO2 manager
App forum2015 London - Building RhoMobile Applications with Ionic
Building self service framework
Serverless Architecture Patterns - Manoj Ganapathi
Using-AngularJS-with-Sitefinity.pptx
SAP Cloud Platform API Management Technical Brief
Swagger - Making REST APIs friendlier
Getting Started with the WSO2 API Manager
Angular, the New Angular JS
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
How angularjs saves rails
Yellowpagescom Behind The Curtain
End to-End SPA Development Using ASP.NET and AngularJS
Building your own calendly using amazon app sync
Single page App
SAP Inside Track Singapore 2014
Ad

More from LF_APIStrat (20)

PDF
LF_APIStrat17_OWASP’s Latest Category: API Underprotection
PDF
LF_APIStrat17_Creating Communication Applications using the Asterisk RESTFul ...
PDF
LF_APIStrat17_Super-Powered REST API Testing
PDF
LF_APIStrat17_How Mature are You? A Developer Experience Maturity Model
PDF
LF_APIStrat17_Connect Your RESTful API to Hundreds of Others in Minutes (Zapi...
PDF
LF_APIStrat17_Things I Wish People Told Me About Writing Docs
PDF
LF_APIStrat17_Lifting Legacy to the Cloud on API Boosters
PDF
LF_APIStrat17_Contract-first API Development: A Case Study in Parallel API Pu...
PDF
LF_APIStrat17_Don't Repeat Yourself - Your API is Your Documentation
PDF
LF_APIStrat17_How We Doubled the Velocity of Our Developer Experience Team
PDF
LF_APIStrat17_API Marketing: First Comes Usability, then Discoverability
PDF
LF_APIStrat17_Standing Taller with Technology: APIs, IoT, and the Digital Wor...
PDF
LF_APIStrat17_REST API Microversions
PDF
LF_APIStrat17_I Believe You But My Enterprise Don't: Adopting Open Standards ...
PDF
LF_APIStrat17_Case Study: Cold Decision Trees
PDF
LF_APIStrat17_Getting Your API House In Order
PDF
LF_APIStrat17_Diving Deep into the API Ocean with Open Source Deep Learning T...
PDF
LF_APIStrat17_Supporting SDKs in 7 Different Programming Languages While Main...
PDF
LF_APIStrat17_Open Data vs. the World
PDF
LF_APIStrat17_Practical DevSecOps for APIs
LF_APIStrat17_OWASP’s Latest Category: API Underprotection
LF_APIStrat17_Creating Communication Applications using the Asterisk RESTFul ...
LF_APIStrat17_Super-Powered REST API Testing
LF_APIStrat17_How Mature are You? A Developer Experience Maturity Model
LF_APIStrat17_Connect Your RESTful API to Hundreds of Others in Minutes (Zapi...
LF_APIStrat17_Things I Wish People Told Me About Writing Docs
LF_APIStrat17_Lifting Legacy to the Cloud on API Boosters
LF_APIStrat17_Contract-first API Development: A Case Study in Parallel API Pu...
LF_APIStrat17_Don't Repeat Yourself - Your API is Your Documentation
LF_APIStrat17_How We Doubled the Velocity of Our Developer Experience Team
LF_APIStrat17_API Marketing: First Comes Usability, then Discoverability
LF_APIStrat17_Standing Taller with Technology: APIs, IoT, and the Digital Wor...
LF_APIStrat17_REST API Microversions
LF_APIStrat17_I Believe You But My Enterprise Don't: Adopting Open Standards ...
LF_APIStrat17_Case Study: Cold Decision Trees
LF_APIStrat17_Getting Your API House In Order
LF_APIStrat17_Diving Deep into the API Ocean with Open Source Deep Learning T...
LF_APIStrat17_Supporting SDKs in 7 Different Programming Languages While Main...
LF_APIStrat17_Open Data vs. the World
LF_APIStrat17_Practical DevSecOps for APIs

Recently uploaded (20)

PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Encapsulation theory and applications.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Modernizing your data center with Dell and AMD
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPT
Teaching material agriculture food technology
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
KodekX | Application Modernization Development
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Cloud computing and distributed systems.
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Network Security Unit 5.pdf for BCA BBA.
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Encapsulation theory and applications.pdf
The AUB Centre for AI in Media Proposal.docx
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Advanced methodologies resolving dimensionality complications for autism neur...
Modernizing your data center with Dell and AMD
20250228 LYD VKU AI Blended-Learning.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
Teaching material agriculture food technology
Understanding_Digital_Forensics_Presentation.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Unlocking AI with Model Context Protocol (MCP)
Review of recent advances in non-invasive hemoglobin estimation
Building Integrated photovoltaic BIPV_UPV.pdf
KodekX | Application Modernization Development
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Cloud computing and distributed systems.
The Rise and Fall of 3GPP – Time for a Sabbatical?
Network Security Unit 5.pdf for BCA BBA.

LF_APIStrat17_The Great API Redesign