SlideShare a Scribd company logo
Adrian Hall, Principal Program Manager
2022 SERIES OF EVENTS
New York
JULY
(HYBRID)
Australia
SEPTEMBER
(HYBRID)
Singapore
APRIL
(VIRTUAL)
Helsinki & North
MARCH
(VIRTUAL)
Paris
DECEMBER
(HYBRID)
London
OCTOBER
(HYBRID)
Hong Kong
AUGUST
(VIRTUAL)
JUNE (VIRTUAL)
India
MAY
(VIRTUAL)
APRIL (VIRTUAL)
Dubai & Middle East
JUNE
(VIRTUAL)
Check out our API Conferences
www.apidays.global
Want to talk at one of our conferences?
apidays.typeform.com/to/ILJeAaV8
Discussion Topics
• Why so much focus on APIs?
• APIs in Azure
• Moving earlier in the process
• Providing value rather than oversight
• Development Culture and Tools
• API Guidelines
• Versions and Breaking Changes
1 The 2017 State of the SaaS-Powered Workplace Report (bettercloud.com)
2 40+ Staggering SaaS Statistics to Know in 2021 - 99firms
3 iPaaS Market Size (Million Insights)
4The Dangers Of Cloud Sprawl (forbes.com)
%
“The best API-first companies give their users “superpowers” that they
wouldn’t have otherwise.”
Quoting an investor at Canvas Ventures
The Importance of API Stewardship
Growing an orchard, not inspecting the fruit
Stewardship: (n) the careful and responsible
management of something entrusted to one's
care <e.g. stewardship of natural resources>
• APIs are the contract between your service and
your customers/partners
• A good API can make dev work easy
• A bad one can send users to another service
• ”Good” means providing APIs that are
• Easy to use
• Fit to Purpose
• Consistent across your product
• Aligned with Industry Standards and
Conventions
• Scalable and Maintainable
API Stewardship is a practice that helps impart values of good API
design into your development process.
Bad APIs Happen Easier than Good Ones
Especially when delivering existing assets as APIs
• Easy ways to make a difficult API:
• Direct translation of data models
• Exposing interfaces that you didn’t
intentionally design
• Code Generation
• Building only one client implementation
• Evolving the product without evolving
how it is consumed
Swashbuckle
The “Telephone game” shows how easily
information can be corrupted via indirect
communication
APIs stick
around
much longer
than you
want
• Your customers take hard dependencies on your
interfaces
• Most API changes are not found until something
breaks
• Informing users of a change is rarely effective
• Designing to prevent change will save you effort
over time
• There are large downstream effects of changing APIs
• This is a terrible way to treat people you care about
• If it was not a good interface in the first place, you
will not enjoy supporting it
• But guess what?
• You are stuck with it now
REST APIs for the data plane of Azure Services
• Most Azure Services have a control plane
(manage and allocate resource to the
service) and a data plane (resources that are
managed by the service)
• We have governance in place for both –
control plane is much more prescriptive and
exposed through Azure Resource Manager
• For data plane, we have a lightweight
process called API Stewardship, run by a
board of experienced API practitioners
API Reviews
Too late in the process, high
friction, low effectiveness
• For years we had an API Review Board, which
looked at APIs as part of the checklist to go
to GA
• When Azure was small, this kind of
worked (but we didn’t have great
guidelines)
• As the number of new services grew,
awareness of guidelines and process
dropped
• A review just prior to GA is waaaay too late
• Teams found as many exceptions/ways
around the process as possible
Moving Earlier in the API Lifecycle
Engage at design time to have more impact
• We began to engage teams much earlier in the
API design process
• Included structured ways for teams to get API
feedback during previews
• Made a shift from “Review” to ”Stewardship”
• Investment was critical
• We dedicated staff (PM, Architect)
• Recruited more API Stewards
• Built content and tools to support this
mission
A paved road instead of a closed gate
Emphasize Providing Value Instead of Oversight
When teams saw value they kept coming back - and sent their peers
• Leaned-in to helping teams that were in the design stage vs those that
were already GA
• Focused on the developer use cases end to end
• Built content to help API designers make better choices
• Considerations for Service Design
• Designing and Versioning HTTP APIs
• Tackled problems with biggest customer impact first, then expanded
• Fault Tolerance (Idempotency - making operations repeatable without side-effects)
• Consistency across related services
• Easy APIs for Search/Query/Paging results
• Durability (Versioning and service evolution over time)
Building API Guidelines
Clarity is Kindness
• Having clear guidelines and examples helps a LOT
• Teams often want someone to tell them what to do
• Have a good reason for each choice you make
• Emphasize simplicity, durability, and empathy for the
client developer
• Share with your audience, build together, iterate
• Azure REST API Guidelines
• Microsoft REST API Best Practices
✅ DO
☑️ YOU SHOULD
✔️ YOU MAY
⚠️ YOU SHOULD
NOT
⛔ DO NOT
Some of the Key Guidelines
https://github.com/microsoft/api-guidelines/blob/vNext/azure/Guidelines.md
Uniform Resource Locators (URLs)
A Uniform Resource Locator (URL) is how developers access the resources of your service. Ultimately, URLs are how
developers form a cognitive model of your service's resources.
✅ DO use this URL pattern: https://<service>.<cloud>/<tenant>/<service-root>/<resource-collection>/<resource-id>/
Exactly Once Behavior = Client Retries & Service Idempotency
✅ DO ensure that all HTTP methods are idempotent.
☑️ YOU SHOULD use PUT or PATCH to create a resource as these HTTP methods are easy to implement, allow the customer to name their
own resource, and are idempotent.
✔️ YOU MAY use POST to create a resource but you MUST make it idempotent and, of course, the response MUST return the URL of the
created resource with a 201-Created. One way to make POST idempotent is to use the Repeatability-Request-ID & Repeatability-First-Sent
headers (See Repeatability of requests).
REpresentational State Transfer (REST)
REST is an architectural style with broad reach that emphasizes scalability, HTTP verbs as resource modifiers, independent deployment,
reduced latency via caching, and security.
✅ DO return status code 202-Accepted and follow the guidance in Long-Running Operations & Jobs when a PUT, PATCH, POST, or DELETE
method completes asynchronously.
✅ DO treat method names as case sensitive and should always be in uppercase
✅ DO return the state of the resource after a PUT, PATCH, POST, or GET operation with a 200-OK or 201-Created.
✅ DO return a 204-No Content without a resource/body for a DELETE operation (even if the URL identifies a resource that does not exist;
do not return 404-Not Found)
✅ DO support caching and optimistic concurrency by honoring the If-Match, If-None-Match, If-modified-since, and If-unmodified-since
request headers and by returning the ETag and last-modified response headers
API Discussions
Learn the use case, put yourself in the developer’s shoes, provide feedback
• We start by having the team explain their
domain and hero scenarios
• Sometimes we look at sample request/response
or client code
• Usually progresses to examining the OpenAPI
specification
• We talk through code flow, future evolution,
how different types will be used, etc.
• Swagger Editor is helpful for this
Infrastructure, Tools, and Process
Using the API specification can drive a lot of tooling
• We Use GitHub and Teams to track API specs, issues, agendas, outcomes
• From the GH repo, services take advantage automated tooling:
• Detecting API changes
• Bootstrapping SDKs with autorest (note that we then layer additional
code to craft the SDKs)
• Spectral Rulesets for checking aspects of the guidelines
• Using the Github PR process for commenting on specs
• Useful REST API tools:
• Spectral – OpenAPI Linter
• POSTman – API testing and development
• https://editor.swagger.io – easy OpenAPI spec viewer
API Gateways
Providing a consistent
infrastructure for
governance and
observability
API Gateways provide infra for cross-cutting concerns:
• Easy control points for security, identity, and release process
• Improve observability and telemetry
• Aggregation, routing, metering, and versioning
•Actual customer quotes
• "Too much breaking changes!"​
• "SDKs keep changing... Makes maintenance hard."​
• "It updates so often it is difficult to pin down software integration."​
• "Frequent API changes are annoying"​
• "Libraries often break considerably between versions. The chances of being able to
pick up last year's project and get it to run and publish first time are almost nil."​
•Two Requirements to avoid this pain
• Customer workloads must never break due to a service change
• Customers can adopt a version without requiring code changes
Empathize with your Customers
•Microsoft has 1 Azure SDK per language
•Each SDK has 1 client library (CL) per service
• CLs provide service object model (not flat), code completion, type-safety,
simple patterns (paging/LRO), credentials, retries, logging, telemetry,
distributed tracing, cancellation and much more
• Service changes impact all these CLs, tools (CLI/portal) & customers!
• A new CL must not require customer code changes
•This further constrains the changes a service can make!
Azure SDKs & Client Libraries
• Many languages can't load
v1.x & v2.x in the same process:
App can't run!
• For languages that can, there are still significant
problems (ex: size &
multiple singletons)
• Breaking changes invalidate the
entire ecosystem
• 3rd-party libraries, docs, samples,
blogs, videos, etc.
Why Breaking Changes are Forbidden
CL v1.0
CL v1.3
CL v2.0
App
Lib-A Lib-B
App
Lib-A
CL v1.3
Lib-B
CL v2.0
•Use api-version QP to signal new features
• https://api.contoso.com/users/Jeffrey?api-version=2021-07-27[-preview]
• Do not put version in path; path identifies resource regardless of version
•Customers opt-in to new features if/when they desire
• Happy customers may never opt-in to new features
• If they opt-in, they should only change existing code to leverage new features
•So, versioning an API is a misnomer
• You're really just adding new APIs & stating that the
newer version is preferred (but not mandatory)
• New versions run along side all previous versions
• NOTE: Resource state must be backward & forward compatible
• Changes to underlying resource structure span all API versions
• Ex: Changing a string's max length: new client sets long string/old client can't get/set it
Versioning Strategy – How we do it now
•Any contract change requires a new api-version
• Even additive changes or ambiguities arise
•Failure to follow this rule causes confusion
• Does api-version documentation include new features or not?
• Support can't know if an api-version honors new features or not
• Does a Client LibraryL for an api-version include the new features or not?
A Service's API is a Contract with Customers
Some Cloud
2019-01-24
Other Cloud
2019-01-24
w/new feature
1. Engage early
2. Partner with producers
3. Add value, not oversight
4. Make clear API guidelines
5. Consider the SDK
Lessons Learned
6. Tooling helps
7. Use an API gateway
8. Centralize documentation
9. Version every change
10. No breaking changes
Thank you!

More Related Content

What's hot

The Single Responsibility Principle
The Single Responsibility PrincipleThe Single Responsibility Principle
The Single Responsibility Principle
Lars-Erik Kindblad
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
Eberhard Wolff
 
Cloud security Presentation
Cloud security PresentationCloud security Presentation
Cloud security Presentation
Ajay p
 
Cloud computing security issues and challenges
Cloud computing security issues and challengesCloud computing security issues and challenges
Cloud computing security issues and challenges
Dheeraj Negi
 
Repository and Unit Of Work Design Patterns
Repository and Unit Of Work Design PatternsRepository and Unit Of Work Design Patterns
Repository and Unit Of Work Design Patterns
Hatim Hakeel
 
Introduction to the Data Web, DBpedia and the Life-cycle of Linked Data
Introduction to the Data Web, DBpedia and the Life-cycle of Linked DataIntroduction to the Data Web, DBpedia and the Life-cycle of Linked Data
Introduction to the Data Web, DBpedia and the Life-cycle of Linked Data
Sören Auer
 
Microservice Architecture Software Architecture Microservice Design Pattern
Microservice Architecture Software Architecture Microservice Design PatternMicroservice Architecture Software Architecture Microservice Design Pattern
Microservice Architecture Software Architecture Microservice Design Pattern
jeetendra mandal
 
Microservices
MicroservicesMicroservices
Microservices
Stephan Lindauer
 
SOA
SOASOA
MiXiT - Numérique responsable, ouvrons le capot des fournisseurs Cloud
MiXiT - Numérique responsable, ouvrons le capot des fournisseurs CloudMiXiT - Numérique responsable, ouvrons le capot des fournisseurs Cloud
MiXiT - Numérique responsable, ouvrons le capot des fournisseurs Cloud
Clément DUFFAU
 
VTU 6th Sem Elective CSE - Module 3 cloud computing
VTU 6th Sem Elective CSE - Module 3 cloud computingVTU 6th Sem Elective CSE - Module 3 cloud computing
VTU 6th Sem Elective CSE - Module 3 cloud computing
Sachin Gowda
 
Cloud computing
Cloud computingCloud computing
Cloud computing
student
 
Cloud computing
Cloud computingCloud computing
Cloud computing
Kshitij Mittal
 
SOA vs Microservices vs SBA
SOA vs Microservices vs SBASOA vs Microservices vs SBA
SOA vs Microservices vs SBA
Michael Sukachev
 
Pipes & Filters Architectural Pattern
Pipes & Filters Architectural PatternPipes & Filters Architectural Pattern
Pipes & Filters Architectural Pattern
Fredrik Kivi
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
Amazon Web Services
 
Semi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-TidySemi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-Tidy
Markus Werle
 
Understanding Cloud Computing
Understanding Cloud ComputingUnderstanding Cloud Computing
Understanding Cloud Computing
Mohammed Sajjad Ali
 
Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014
Ricard Clau
 

What's hot (20)

The Single Responsibility Principle
The Single Responsibility PrincipleThe Single Responsibility Principle
The Single Responsibility Principle
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
 
Cloud security Presentation
Cloud security PresentationCloud security Presentation
Cloud security Presentation
 
Cloud computing security issues and challenges
Cloud computing security issues and challengesCloud computing security issues and challenges
Cloud computing security issues and challenges
 
Repository and Unit Of Work Design Patterns
Repository and Unit Of Work Design PatternsRepository and Unit Of Work Design Patterns
Repository and Unit Of Work Design Patterns
 
Python SOLID
Python SOLIDPython SOLID
Python SOLID
 
Introduction to the Data Web, DBpedia and the Life-cycle of Linked Data
Introduction to the Data Web, DBpedia and the Life-cycle of Linked DataIntroduction to the Data Web, DBpedia and the Life-cycle of Linked Data
Introduction to the Data Web, DBpedia and the Life-cycle of Linked Data
 
Microservice Architecture Software Architecture Microservice Design Pattern
Microservice Architecture Software Architecture Microservice Design PatternMicroservice Architecture Software Architecture Microservice Design Pattern
Microservice Architecture Software Architecture Microservice Design Pattern
 
Microservices
MicroservicesMicroservices
Microservices
 
SOA
SOASOA
SOA
 
MiXiT - Numérique responsable, ouvrons le capot des fournisseurs Cloud
MiXiT - Numérique responsable, ouvrons le capot des fournisseurs CloudMiXiT - Numérique responsable, ouvrons le capot des fournisseurs Cloud
MiXiT - Numérique responsable, ouvrons le capot des fournisseurs Cloud
 
VTU 6th Sem Elective CSE - Module 3 cloud computing
VTU 6th Sem Elective CSE - Module 3 cloud computingVTU 6th Sem Elective CSE - Module 3 cloud computing
VTU 6th Sem Elective CSE - Module 3 cloud computing
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
SOA vs Microservices vs SBA
SOA vs Microservices vs SBASOA vs Microservices vs SBA
SOA vs Microservices vs SBA
 
Pipes & Filters Architectural Pattern
Pipes & Filters Architectural PatternPipes & Filters Architectural Pattern
Pipes & Filters Architectural Pattern
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Semi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-TidySemi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-Tidy
 
Understanding Cloud Computing
Understanding Cloud ComputingUnderstanding Cloud Computing
Understanding Cloud Computing
 
Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014
 

Similar to Lessons learned on the Azure API Stewardship Journey.pptx

apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...
apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...
apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...
apidays
 
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
Callon Campbell
 
Building a REST API for Longevity
Building a REST API for LongevityBuilding a REST API for Longevity
Building a REST API for Longevity
MuleSoft
 
Service api design validation & collaboration
Service api design validation & collaborationService api design validation & collaboration
Service api design validation & collaboration
Uchit Vyas ☁
 
apidays LIVE New York 2021 - Service API design validation by Uchit Vyas, KPMG
apidays LIVE New York 2021 - Service API design validation by Uchit Vyas, KPMGapidays LIVE New York 2021 - Service API design validation by Uchit Vyas, KPMG
apidays LIVE New York 2021 - Service API design validation by Uchit Vyas, KPMG
apidays
 
Building the Eventbrite API Ecosystem
Building the Eventbrite API EcosystemBuilding the Eventbrite API Ecosystem
Building the Eventbrite API Ecosystem
Mitch Colleran
 
API ARU-ARU
API ARU-ARUAPI ARU-ARU
Modernize Service-Oriented Architecture with APIs
Modernize Service-Oriented Architecture with APIsModernize Service-Oriented Architecture with APIs
Modernize Service-Oriented Architecture with APIs
Apigee | Google Cloud
 
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
SmartBear
 
Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?Akana
 
Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?
C4Media
 
apidays Australia 2022 - Accelerating API Engineering, Jason D'Souza & Andrew...
apidays Australia 2022 - Accelerating API Engineering, Jason D'Souza & Andrew...apidays Australia 2022 - Accelerating API Engineering, Jason D'Souza & Andrew...
apidays Australia 2022 - Accelerating API Engineering, Jason D'Souza & Andrew...
apidays
 
The Future of API Specifications -- Aidan Cunniffe 2021
The Future of API Specifications -- Aidan Cunniffe 2021The Future of API Specifications -- Aidan Cunniffe 2021
The Future of API Specifications -- Aidan Cunniffe 2021
Aidan Cunniffe
 
DataHero / Eventbrite - API Best Practices
DataHero / Eventbrite - API Best PracticesDataHero / Eventbrite - API Best Practices
DataHero / Eventbrite - API Best Practices
Jeff Zabel
 
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
Christian Posta
 
First Look at Azure Logic Apps (BAUG)
First Look at Azure Logic Apps (BAUG)First Look at Azure Logic Apps (BAUG)
First Look at Azure Logic Apps (BAUG)
Daniel Toomey
 
Api design part 1
Api design part 1Api design part 1
Api design part 1
Ibrahim Elsawaf
 
M meijer api management - tech-days 2015
M meijer   api management - tech-days 2015M meijer   api management - tech-days 2015
M meijer api management - tech-days 2015
Freelance Consultant / Manager / co-CTO
 
Practical Application of API-First in microservices development
Practical Application of API-First in microservices developmentPractical Application of API-First in microservices development
Practical Application of API-First in microservices development
Chavdar Baikov
 
Top 10 Lessons Learned from the Netflix API - OSCON 2014
Top 10 Lessons Learned from the Netflix API - OSCON 2014Top 10 Lessons Learned from the Netflix API - OSCON 2014
Top 10 Lessons Learned from the Netflix API - OSCON 2014Daniel Jacobson
 

Similar to Lessons learned on the Azure API Stewardship Journey.pptx (20)

apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...
apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...
apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...
 
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
 
Building a REST API for Longevity
Building a REST API for LongevityBuilding a REST API for Longevity
Building a REST API for Longevity
 
Service api design validation & collaboration
Service api design validation & collaborationService api design validation & collaboration
Service api design validation & collaboration
 
apidays LIVE New York 2021 - Service API design validation by Uchit Vyas, KPMG
apidays LIVE New York 2021 - Service API design validation by Uchit Vyas, KPMGapidays LIVE New York 2021 - Service API design validation by Uchit Vyas, KPMG
apidays LIVE New York 2021 - Service API design validation by Uchit Vyas, KPMG
 
Building the Eventbrite API Ecosystem
Building the Eventbrite API EcosystemBuilding the Eventbrite API Ecosystem
Building the Eventbrite API Ecosystem
 
API ARU-ARU
API ARU-ARUAPI ARU-ARU
API ARU-ARU
 
Modernize Service-Oriented Architecture with APIs
Modernize Service-Oriented Architecture with APIsModernize Service-Oriented Architecture with APIs
Modernize Service-Oriented Architecture with APIs
 
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
 
Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?
 
Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?
 
apidays Australia 2022 - Accelerating API Engineering, Jason D'Souza & Andrew...
apidays Australia 2022 - Accelerating API Engineering, Jason D'Souza & Andrew...apidays Australia 2022 - Accelerating API Engineering, Jason D'Souza & Andrew...
apidays Australia 2022 - Accelerating API Engineering, Jason D'Souza & Andrew...
 
The Future of API Specifications -- Aidan Cunniffe 2021
The Future of API Specifications -- Aidan Cunniffe 2021The Future of API Specifications -- Aidan Cunniffe 2021
The Future of API Specifications -- Aidan Cunniffe 2021
 
DataHero / Eventbrite - API Best Practices
DataHero / Eventbrite - API Best PracticesDataHero / Eventbrite - API Best Practices
DataHero / Eventbrite - API Best Practices
 
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
 
First Look at Azure Logic Apps (BAUG)
First Look at Azure Logic Apps (BAUG)First Look at Azure Logic Apps (BAUG)
First Look at Azure Logic Apps (BAUG)
 
Api design part 1
Api design part 1Api design part 1
Api design part 1
 
M meijer api management - tech-days 2015
M meijer   api management - tech-days 2015M meijer   api management - tech-days 2015
M meijer api management - tech-days 2015
 
Practical Application of API-First in microservices development
Practical Application of API-First in microservices developmentPractical Application of API-First in microservices development
Practical Application of API-First in microservices development
 
Top 10 Lessons Learned from the Netflix API - OSCON 2014
Top 10 Lessons Learned from the Netflix API - OSCON 2014Top 10 Lessons Learned from the Netflix API - OSCON 2014
Top 10 Lessons Learned from the Netflix API - OSCON 2014
 

More from apidays

Apidays Helsinki 2024 - APIs ahoy, the case of Customer Booking APIs in Finn...
Apidays Helsinki 2024 -  APIs ahoy, the case of Customer Booking APIs in Finn...Apidays Helsinki 2024 -  APIs ahoy, the case of Customer Booking APIs in Finn...
Apidays Helsinki 2024 - APIs ahoy, the case of Customer Booking APIs in Finn...
apidays
 
Apidays Helsinki 2024 - From Chaos to Calm- Navigating Emerging API Security...
Apidays Helsinki 2024 -  From Chaos to Calm- Navigating Emerging API Security...Apidays Helsinki 2024 -  From Chaos to Calm- Navigating Emerging API Security...
Apidays Helsinki 2024 - From Chaos to Calm- Navigating Emerging API Security...
apidays
 
Apidays Helsinki 2024 - What is next now that your organization created a (si...
Apidays Helsinki 2024 - What is next now that your organization created a (si...Apidays Helsinki 2024 - What is next now that your organization created a (si...
Apidays Helsinki 2024 - What is next now that your organization created a (si...
apidays
 
Apidays Helsinki 2024 - There’s no AI without API, but what does this mean fo...
Apidays Helsinki 2024 - There’s no AI without API, but what does this mean fo...Apidays Helsinki 2024 - There’s no AI without API, but what does this mean fo...
Apidays Helsinki 2024 - There’s no AI without API, but what does this mean fo...
apidays
 
Apidays Helsinki 2024 - Sustainable IT and API Performance - How to Bring The...
Apidays Helsinki 2024 - Sustainable IT and API Performance - How to Bring The...Apidays Helsinki 2024 - Sustainable IT and API Performance - How to Bring The...
Apidays Helsinki 2024 - Sustainable IT and API Performance - How to Bring The...
apidays
 
Apidays Helsinki 2024 - Security Vulnerabilities in your APIs by Lukáš Ďurovs...
Apidays Helsinki 2024 - Security Vulnerabilities in your APIs by Lukáš Ďurovs...Apidays Helsinki 2024 - Security Vulnerabilities in your APIs by Lukáš Ďurovs...
Apidays Helsinki 2024 - Security Vulnerabilities in your APIs by Lukáš Ďurovs...
apidays
 
Apidays Helsinki 2024 - Data, API’s and Banks, with AI on top by Sergio Giral...
Apidays Helsinki 2024 - Data, API’s and Banks, with AI on top by Sergio Giral...Apidays Helsinki 2024 - Data, API’s and Banks, with AI on top by Sergio Giral...
Apidays Helsinki 2024 - Data, API’s and Banks, with AI on top by Sergio Giral...
apidays
 
Apidays Helsinki 2024 - Data Ecosystems Driving the Green Transition by Olli ...
Apidays Helsinki 2024 - Data Ecosystems Driving the Green Transition by Olli ...Apidays Helsinki 2024 - Data Ecosystems Driving the Green Transition by Olli ...
Apidays Helsinki 2024 - Data Ecosystems Driving the Green Transition by Olli ...
apidays
 
Apidays Helsinki 2024 - Bridging the Gap Between Backend and Frontend API Tes...
Apidays Helsinki 2024 - Bridging the Gap Between Backend and Frontend API Tes...Apidays Helsinki 2024 - Bridging the Gap Between Backend and Frontend API Tes...
Apidays Helsinki 2024 - Bridging the Gap Between Backend and Frontend API Tes...
apidays
 
Apidays Helsinki 2024 - API Compliance by Design by Marjukka Niinioja, Osaango
Apidays Helsinki 2024 - API Compliance by Design by Marjukka Niinioja, OsaangoApidays Helsinki 2024 - API Compliance by Design by Marjukka Niinioja, Osaango
Apidays Helsinki 2024 - API Compliance by Design by Marjukka Niinioja, Osaango
apidays
 
Apidays Helsinki 2024 - ABLOY goes API economy – Transformation story by Hann...
Apidays Helsinki 2024 - ABLOY goes API economy – Transformation story by Hann...Apidays Helsinki 2024 - ABLOY goes API economy – Transformation story by Hann...
Apidays Helsinki 2024 - ABLOY goes API economy – Transformation story by Hann...
apidays
 
Apidays New York 2024 - The subtle art of API rate limiting by Josh Twist, Zuplo
Apidays New York 2024 - The subtle art of API rate limiting by Josh Twist, ZuploApidays New York 2024 - The subtle art of API rate limiting by Josh Twist, Zuplo
Apidays New York 2024 - The subtle art of API rate limiting by Josh Twist, Zuplo
apidays
 
Apidays New York 2024 - RESTful API Patterns and Practices by Mike Amundsen, ...
Apidays New York 2024 - RESTful API Patterns and Practices by Mike Amundsen, ...Apidays New York 2024 - RESTful API Patterns and Practices by Mike Amundsen, ...
Apidays New York 2024 - RESTful API Patterns and Practices by Mike Amundsen, ...
apidays
 
Apidays New York 2024 - Putting AI into API Security by Corey Ball, Moss Adams
Apidays New York 2024 - Putting AI into API Security by Corey Ball, Moss AdamsApidays New York 2024 - Putting AI into API Security by Corey Ball, Moss Adams
Apidays New York 2024 - Putting AI into API Security by Corey Ball, Moss Adams
apidays
 
Apidays New York 2024 - Prototype-first - A modern API development workflow b...
Apidays New York 2024 - Prototype-first - A modern API development workflow b...Apidays New York 2024 - Prototype-first - A modern API development workflow b...
Apidays New York 2024 - Prototype-first - A modern API development workflow b...
apidays
 
Apidays New York 2024 - Post-Quantum API Security by Francois Lascelles, Broa...
Apidays New York 2024 - Post-Quantum API Security by Francois Lascelles, Broa...Apidays New York 2024 - Post-Quantum API Security by Francois Lascelles, Broa...
Apidays New York 2024 - Post-Quantum API Security by Francois Lascelles, Broa...
apidays
 
Apidays New York 2024 - Increase your productivity with no-code GraphQL mocki...
Apidays New York 2024 - Increase your productivity with no-code GraphQL mocki...Apidays New York 2024 - Increase your productivity with no-code GraphQL mocki...
Apidays New York 2024 - Increase your productivity with no-code GraphQL mocki...
apidays
 
Apidays New York 2024 - Driving API & EDA Success by Marcelo Caponi, Danone
Apidays New York 2024 - Driving API & EDA Success by Marcelo Caponi, DanoneApidays New York 2024 - Driving API & EDA Success by Marcelo Caponi, Danone
Apidays New York 2024 - Driving API & EDA Success by Marcelo Caponi, Danone
apidays
 
Apidays New York 2024 - Build a terrible API for people you hate by Jim Benne...
Apidays New York 2024 - Build a terrible API for people you hate by Jim Benne...Apidays New York 2024 - Build a terrible API for people you hate by Jim Benne...
Apidays New York 2024 - Build a terrible API for people you hate by Jim Benne...
apidays
 
Apidays New York 2024 - API Secret Tokens Exposed by Tristan Kalos and Antoin...
Apidays New York 2024 - API Secret Tokens Exposed by Tristan Kalos and Antoin...Apidays New York 2024 - API Secret Tokens Exposed by Tristan Kalos and Antoin...
Apidays New York 2024 - API Secret Tokens Exposed by Tristan Kalos and Antoin...
apidays
 

More from apidays (20)

Apidays Helsinki 2024 - APIs ahoy, the case of Customer Booking APIs in Finn...
Apidays Helsinki 2024 -  APIs ahoy, the case of Customer Booking APIs in Finn...Apidays Helsinki 2024 -  APIs ahoy, the case of Customer Booking APIs in Finn...
Apidays Helsinki 2024 - APIs ahoy, the case of Customer Booking APIs in Finn...
 
Apidays Helsinki 2024 - From Chaos to Calm- Navigating Emerging API Security...
Apidays Helsinki 2024 -  From Chaos to Calm- Navigating Emerging API Security...Apidays Helsinki 2024 -  From Chaos to Calm- Navigating Emerging API Security...
Apidays Helsinki 2024 - From Chaos to Calm- Navigating Emerging API Security...
 
Apidays Helsinki 2024 - What is next now that your organization created a (si...
Apidays Helsinki 2024 - What is next now that your organization created a (si...Apidays Helsinki 2024 - What is next now that your organization created a (si...
Apidays Helsinki 2024 - What is next now that your organization created a (si...
 
Apidays Helsinki 2024 - There’s no AI without API, but what does this mean fo...
Apidays Helsinki 2024 - There’s no AI without API, but what does this mean fo...Apidays Helsinki 2024 - There’s no AI without API, but what does this mean fo...
Apidays Helsinki 2024 - There’s no AI without API, but what does this mean fo...
 
Apidays Helsinki 2024 - Sustainable IT and API Performance - How to Bring The...
Apidays Helsinki 2024 - Sustainable IT and API Performance - How to Bring The...Apidays Helsinki 2024 - Sustainable IT and API Performance - How to Bring The...
Apidays Helsinki 2024 - Sustainable IT and API Performance - How to Bring The...
 
Apidays Helsinki 2024 - Security Vulnerabilities in your APIs by Lukáš Ďurovs...
Apidays Helsinki 2024 - Security Vulnerabilities in your APIs by Lukáš Ďurovs...Apidays Helsinki 2024 - Security Vulnerabilities in your APIs by Lukáš Ďurovs...
Apidays Helsinki 2024 - Security Vulnerabilities in your APIs by Lukáš Ďurovs...
 
Apidays Helsinki 2024 - Data, API’s and Banks, with AI on top by Sergio Giral...
Apidays Helsinki 2024 - Data, API’s and Banks, with AI on top by Sergio Giral...Apidays Helsinki 2024 - Data, API’s and Banks, with AI on top by Sergio Giral...
Apidays Helsinki 2024 - Data, API’s and Banks, with AI on top by Sergio Giral...
 
Apidays Helsinki 2024 - Data Ecosystems Driving the Green Transition by Olli ...
Apidays Helsinki 2024 - Data Ecosystems Driving the Green Transition by Olli ...Apidays Helsinki 2024 - Data Ecosystems Driving the Green Transition by Olli ...
Apidays Helsinki 2024 - Data Ecosystems Driving the Green Transition by Olli ...
 
Apidays Helsinki 2024 - Bridging the Gap Between Backend and Frontend API Tes...
Apidays Helsinki 2024 - Bridging the Gap Between Backend and Frontend API Tes...Apidays Helsinki 2024 - Bridging the Gap Between Backend and Frontend API Tes...
Apidays Helsinki 2024 - Bridging the Gap Between Backend and Frontend API Tes...
 
Apidays Helsinki 2024 - API Compliance by Design by Marjukka Niinioja, Osaango
Apidays Helsinki 2024 - API Compliance by Design by Marjukka Niinioja, OsaangoApidays Helsinki 2024 - API Compliance by Design by Marjukka Niinioja, Osaango
Apidays Helsinki 2024 - API Compliance by Design by Marjukka Niinioja, Osaango
 
Apidays Helsinki 2024 - ABLOY goes API economy – Transformation story by Hann...
Apidays Helsinki 2024 - ABLOY goes API economy – Transformation story by Hann...Apidays Helsinki 2024 - ABLOY goes API economy – Transformation story by Hann...
Apidays Helsinki 2024 - ABLOY goes API economy – Transformation story by Hann...
 
Apidays New York 2024 - The subtle art of API rate limiting by Josh Twist, Zuplo
Apidays New York 2024 - The subtle art of API rate limiting by Josh Twist, ZuploApidays New York 2024 - The subtle art of API rate limiting by Josh Twist, Zuplo
Apidays New York 2024 - The subtle art of API rate limiting by Josh Twist, Zuplo
 
Apidays New York 2024 - RESTful API Patterns and Practices by Mike Amundsen, ...
Apidays New York 2024 - RESTful API Patterns and Practices by Mike Amundsen, ...Apidays New York 2024 - RESTful API Patterns and Practices by Mike Amundsen, ...
Apidays New York 2024 - RESTful API Patterns and Practices by Mike Amundsen, ...
 
Apidays New York 2024 - Putting AI into API Security by Corey Ball, Moss Adams
Apidays New York 2024 - Putting AI into API Security by Corey Ball, Moss AdamsApidays New York 2024 - Putting AI into API Security by Corey Ball, Moss Adams
Apidays New York 2024 - Putting AI into API Security by Corey Ball, Moss Adams
 
Apidays New York 2024 - Prototype-first - A modern API development workflow b...
Apidays New York 2024 - Prototype-first - A modern API development workflow b...Apidays New York 2024 - Prototype-first - A modern API development workflow b...
Apidays New York 2024 - Prototype-first - A modern API development workflow b...
 
Apidays New York 2024 - Post-Quantum API Security by Francois Lascelles, Broa...
Apidays New York 2024 - Post-Quantum API Security by Francois Lascelles, Broa...Apidays New York 2024 - Post-Quantum API Security by Francois Lascelles, Broa...
Apidays New York 2024 - Post-Quantum API Security by Francois Lascelles, Broa...
 
Apidays New York 2024 - Increase your productivity with no-code GraphQL mocki...
Apidays New York 2024 - Increase your productivity with no-code GraphQL mocki...Apidays New York 2024 - Increase your productivity with no-code GraphQL mocki...
Apidays New York 2024 - Increase your productivity with no-code GraphQL mocki...
 
Apidays New York 2024 - Driving API & EDA Success by Marcelo Caponi, Danone
Apidays New York 2024 - Driving API & EDA Success by Marcelo Caponi, DanoneApidays New York 2024 - Driving API & EDA Success by Marcelo Caponi, Danone
Apidays New York 2024 - Driving API & EDA Success by Marcelo Caponi, Danone
 
Apidays New York 2024 - Build a terrible API for people you hate by Jim Benne...
Apidays New York 2024 - Build a terrible API for people you hate by Jim Benne...Apidays New York 2024 - Build a terrible API for people you hate by Jim Benne...
Apidays New York 2024 - Build a terrible API for people you hate by Jim Benne...
 
Apidays New York 2024 - API Secret Tokens Exposed by Tristan Kalos and Antoin...
Apidays New York 2024 - API Secret Tokens Exposed by Tristan Kalos and Antoin...Apidays New York 2024 - API Secret Tokens Exposed by Tristan Kalos and Antoin...
Apidays New York 2024 - API Secret Tokens Exposed by Tristan Kalos and Antoin...
 

Recently uploaded

Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 

Recently uploaded (20)

Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 

Lessons learned on the Azure API Stewardship Journey.pptx

  • 1. Adrian Hall, Principal Program Manager
  • 2. 2022 SERIES OF EVENTS New York JULY (HYBRID) Australia SEPTEMBER (HYBRID) Singapore APRIL (VIRTUAL) Helsinki & North MARCH (VIRTUAL) Paris DECEMBER (HYBRID) London OCTOBER (HYBRID) Hong Kong AUGUST (VIRTUAL) JUNE (VIRTUAL) India MAY (VIRTUAL) APRIL (VIRTUAL) Dubai & Middle East JUNE (VIRTUAL) Check out our API Conferences www.apidays.global Want to talk at one of our conferences? apidays.typeform.com/to/ILJeAaV8
  • 3. Discussion Topics • Why so much focus on APIs? • APIs in Azure • Moving earlier in the process • Providing value rather than oversight • Development Culture and Tools • API Guidelines • Versions and Breaking Changes
  • 4. 1 The 2017 State of the SaaS-Powered Workplace Report (bettercloud.com) 2 40+ Staggering SaaS Statistics to Know in 2021 - 99firms 3 iPaaS Market Size (Million Insights) 4The Dangers Of Cloud Sprawl (forbes.com) % “The best API-first companies give their users “superpowers” that they wouldn’t have otherwise.” Quoting an investor at Canvas Ventures
  • 5. The Importance of API Stewardship Growing an orchard, not inspecting the fruit Stewardship: (n) the careful and responsible management of something entrusted to one's care <e.g. stewardship of natural resources> • APIs are the contract between your service and your customers/partners • A good API can make dev work easy • A bad one can send users to another service • ”Good” means providing APIs that are • Easy to use • Fit to Purpose • Consistent across your product • Aligned with Industry Standards and Conventions • Scalable and Maintainable API Stewardship is a practice that helps impart values of good API design into your development process.
  • 6. Bad APIs Happen Easier than Good Ones Especially when delivering existing assets as APIs • Easy ways to make a difficult API: • Direct translation of data models • Exposing interfaces that you didn’t intentionally design • Code Generation • Building only one client implementation • Evolving the product without evolving how it is consumed Swashbuckle The “Telephone game” shows how easily information can be corrupted via indirect communication
  • 7. APIs stick around much longer than you want • Your customers take hard dependencies on your interfaces • Most API changes are not found until something breaks • Informing users of a change is rarely effective • Designing to prevent change will save you effort over time • There are large downstream effects of changing APIs • This is a terrible way to treat people you care about • If it was not a good interface in the first place, you will not enjoy supporting it • But guess what? • You are stuck with it now
  • 8. REST APIs for the data plane of Azure Services • Most Azure Services have a control plane (manage and allocate resource to the service) and a data plane (resources that are managed by the service) • We have governance in place for both – control plane is much more prescriptive and exposed through Azure Resource Manager • For data plane, we have a lightweight process called API Stewardship, run by a board of experienced API practitioners
  • 9. API Reviews Too late in the process, high friction, low effectiveness • For years we had an API Review Board, which looked at APIs as part of the checklist to go to GA • When Azure was small, this kind of worked (but we didn’t have great guidelines) • As the number of new services grew, awareness of guidelines and process dropped • A review just prior to GA is waaaay too late • Teams found as many exceptions/ways around the process as possible
  • 10. Moving Earlier in the API Lifecycle Engage at design time to have more impact • We began to engage teams much earlier in the API design process • Included structured ways for teams to get API feedback during previews • Made a shift from “Review” to ”Stewardship” • Investment was critical • We dedicated staff (PM, Architect) • Recruited more API Stewards • Built content and tools to support this mission A paved road instead of a closed gate
  • 11. Emphasize Providing Value Instead of Oversight When teams saw value they kept coming back - and sent their peers • Leaned-in to helping teams that were in the design stage vs those that were already GA • Focused on the developer use cases end to end • Built content to help API designers make better choices • Considerations for Service Design • Designing and Versioning HTTP APIs • Tackled problems with biggest customer impact first, then expanded • Fault Tolerance (Idempotency - making operations repeatable without side-effects) • Consistency across related services • Easy APIs for Search/Query/Paging results • Durability (Versioning and service evolution over time)
  • 12. Building API Guidelines Clarity is Kindness • Having clear guidelines and examples helps a LOT • Teams often want someone to tell them what to do • Have a good reason for each choice you make • Emphasize simplicity, durability, and empathy for the client developer • Share with your audience, build together, iterate • Azure REST API Guidelines • Microsoft REST API Best Practices ✅ DO ☑️ YOU SHOULD ✔️ YOU MAY ⚠️ YOU SHOULD NOT ⛔ DO NOT
  • 13. Some of the Key Guidelines https://github.com/microsoft/api-guidelines/blob/vNext/azure/Guidelines.md Uniform Resource Locators (URLs) A Uniform Resource Locator (URL) is how developers access the resources of your service. Ultimately, URLs are how developers form a cognitive model of your service's resources. ✅ DO use this URL pattern: https://<service>.<cloud>/<tenant>/<service-root>/<resource-collection>/<resource-id>/ Exactly Once Behavior = Client Retries & Service Idempotency ✅ DO ensure that all HTTP methods are idempotent. ☑️ YOU SHOULD use PUT or PATCH to create a resource as these HTTP methods are easy to implement, allow the customer to name their own resource, and are idempotent. ✔️ YOU MAY use POST to create a resource but you MUST make it idempotent and, of course, the response MUST return the URL of the created resource with a 201-Created. One way to make POST idempotent is to use the Repeatability-Request-ID & Repeatability-First-Sent headers (See Repeatability of requests). REpresentational State Transfer (REST) REST is an architectural style with broad reach that emphasizes scalability, HTTP verbs as resource modifiers, independent deployment, reduced latency via caching, and security. ✅ DO return status code 202-Accepted and follow the guidance in Long-Running Operations & Jobs when a PUT, PATCH, POST, or DELETE method completes asynchronously. ✅ DO treat method names as case sensitive and should always be in uppercase ✅ DO return the state of the resource after a PUT, PATCH, POST, or GET operation with a 200-OK or 201-Created. ✅ DO return a 204-No Content without a resource/body for a DELETE operation (even if the URL identifies a resource that does not exist; do not return 404-Not Found) ✅ DO support caching and optimistic concurrency by honoring the If-Match, If-None-Match, If-modified-since, and If-unmodified-since request headers and by returning the ETag and last-modified response headers
  • 14. API Discussions Learn the use case, put yourself in the developer’s shoes, provide feedback • We start by having the team explain their domain and hero scenarios • Sometimes we look at sample request/response or client code • Usually progresses to examining the OpenAPI specification • We talk through code flow, future evolution, how different types will be used, etc. • Swagger Editor is helpful for this
  • 15. Infrastructure, Tools, and Process Using the API specification can drive a lot of tooling • We Use GitHub and Teams to track API specs, issues, agendas, outcomes • From the GH repo, services take advantage automated tooling: • Detecting API changes • Bootstrapping SDKs with autorest (note that we then layer additional code to craft the SDKs) • Spectral Rulesets for checking aspects of the guidelines • Using the Github PR process for commenting on specs • Useful REST API tools: • Spectral – OpenAPI Linter • POSTman – API testing and development • https://editor.swagger.io – easy OpenAPI spec viewer
  • 16. API Gateways Providing a consistent infrastructure for governance and observability API Gateways provide infra for cross-cutting concerns: • Easy control points for security, identity, and release process • Improve observability and telemetry • Aggregation, routing, metering, and versioning
  • 17.
  • 18. •Actual customer quotes • "Too much breaking changes!"​ • "SDKs keep changing... Makes maintenance hard."​ • "It updates so often it is difficult to pin down software integration."​ • "Frequent API changes are annoying"​ • "Libraries often break considerably between versions. The chances of being able to pick up last year's project and get it to run and publish first time are almost nil."​ •Two Requirements to avoid this pain • Customer workloads must never break due to a service change • Customers can adopt a version without requiring code changes Empathize with your Customers
  • 19. •Microsoft has 1 Azure SDK per language •Each SDK has 1 client library (CL) per service • CLs provide service object model (not flat), code completion, type-safety, simple patterns (paging/LRO), credentials, retries, logging, telemetry, distributed tracing, cancellation and much more • Service changes impact all these CLs, tools (CLI/portal) & customers! • A new CL must not require customer code changes •This further constrains the changes a service can make! Azure SDKs & Client Libraries
  • 20. • Many languages can't load v1.x & v2.x in the same process: App can't run! • For languages that can, there are still significant problems (ex: size & multiple singletons) • Breaking changes invalidate the entire ecosystem • 3rd-party libraries, docs, samples, blogs, videos, etc. Why Breaking Changes are Forbidden CL v1.0 CL v1.3 CL v2.0 App Lib-A Lib-B App Lib-A CL v1.3 Lib-B CL v2.0
  • 21. •Use api-version QP to signal new features • https://api.contoso.com/users/Jeffrey?api-version=2021-07-27[-preview] • Do not put version in path; path identifies resource regardless of version •Customers opt-in to new features if/when they desire • Happy customers may never opt-in to new features • If they opt-in, they should only change existing code to leverage new features •So, versioning an API is a misnomer • You're really just adding new APIs & stating that the newer version is preferred (but not mandatory) • New versions run along side all previous versions • NOTE: Resource state must be backward & forward compatible • Changes to underlying resource structure span all API versions • Ex: Changing a string's max length: new client sets long string/old client can't get/set it Versioning Strategy – How we do it now
  • 22. •Any contract change requires a new api-version • Even additive changes or ambiguities arise •Failure to follow this rule causes confusion • Does api-version documentation include new features or not? • Support can't know if an api-version honors new features or not • Does a Client LibraryL for an api-version include the new features or not? A Service's API is a Contract with Customers Some Cloud 2019-01-24 Other Cloud 2019-01-24 w/new feature
  • 23. 1. Engage early 2. Partner with producers 3. Add value, not oversight 4. Make clear API guidelines 5. Consider the SDK Lessons Learned 6. Tooling helps 7. Use an API gateway 8. Centralize documentation 9. Version every change 10. No breaking changes

Editor's Notes

  1. Even if your use case is for internal consumers, it is important to think of yourself as a SaaS platform provider. Think about your API as the product you are offering. APIs build ecosystems—if they: Expose valuable capability Are stable and durable Are easy to use Embedded in business process equates to a high switching cost.
  2. When building software components that will be used by developers to build other software, providing APIs that are easy to use, fit to purpose, scalable, maintainable, and consistent across your product can make the difference between success and failure for your software. The API you ship can have a dramatic long-term effect on the health of your software product. What is the difference between a *good* API and a poor one? How can you focus on designing APIs that are developer-focused, easy-to-use, scalable, and powerful enough to fully expose the features of your service? When is it OK to change an API that is in use? How should you offer and govern API lifecycle for backcompat? API Stewardship is a practice that helps impart values of good API design into your development process. Some examples of standards include those at the protocol layer (REST+JSON+headers, etags, etc) and the data layer (data models, dates and times, telephone numbers, geojson etc For KPMG, the risk is developers in member firms go off and build their own apps and build data siloes that don't come back to the master system. Sometimes this is called drift.
  3. Often we write software with a fairly narrow set of use cases and a narrow purpose. With iteration and time the use cases expand, people use the software in ways we didn’t realize they would, or the compromises made when prototyping get built-in as the code grows. Abstractions that look great with one implementation suddenly look awkward or leaky when it is time to build another. For a succinct and impactful look at these problems, read Joshua Bloch’s presentation on API Design. The API is a contract between the service and the customer. Should be well understood and well documented. Too often APIs grow organically over time, are built from implementation code using generators, or are derived from the code written to enable test automation. These methods result in APIs that often make life very difficult for client developers.
  4. Once the product or service is in use, or an internal class is suddenly consumed by multiple modules, you now have “legacy” code that depends upon your API design and if you change it you have to figure out how to do backcompat or update all of those dependencies or more likely both. Avoiding unnecessary API changes and backcompat hassles by being deliberate and thoughtful about API design from the beginning will yield significant returns over the lifetime of your projects. Downstream effect: client libraries, now used in other applications, the implication of change multiplies over time as APIs are used…. Tooling to detect changes, esp. breaking changes. Examples with Azure CLI
  5. BE OPEN & INCLUSIVE Win the “hearts & minds” through transparency and bringing value. BE thoughtful about where you put the gates.
  6. The Stewardship board at MS is a voluntary effort. We work hard to get buy in from our “customers” (Azure Service teams) by brining value to the table. Intentionally, not a gate or a “review” board. The service team is responsible for adhering to Azure governing policies, e.g. Breaking Changes. We are inclusive—anyone is welcome to participate. Currently members from DevDiv, Azure Services, CTO Office, and CSE
  7. Going back to the value discussion… APIs are not just “code” but ALL the things around it, e.g. infrastructure, release process, documentation, etc. Where can you bring VALUE?
  8. don't support http://SemVer.org Ex: C, C++, C#, Java, Android, iOS
  9. https://github.com/microsoft/api-guidelines/blob/vNext/Guidelines.md#12-versioning https://www.baeldung.com/rest-versioning
  10. Adding new properties requires a change in api-version for 3 reasons:  Some language (de)serializers throw if a new property comes across the wire that the client library has no field for in a structure/class. And old client discards the new property when it receives it from the service and doesn’t send it back to the service resulting in data loss/corruption. Perpetual preview & breaking valued preview customers while helping you polishing your service