API Virtualization

An architectural pattern has emerged that deals with the expanding variety of computing devices and the exploding number of APIs used in modern applications. This pattern can be used on either side of an API: by providers and by developers. »
Sam Ramji

API
Smartphone
Mobile Internet Device
Tablet
Web App
DVR
Strategic
Partners
Long Tail
Partners
In-Car 
Computing
Gas Station
XBox
Cool
Location Aware
Limited bandwidth (3G)
Limited memory
Limited processing power
Limited battery
Intermittent connectivity
Multifunctional
Socially contextual
Ultraportable
Fun
Personal
Situated use
Ultraportable
Variable bandwidth (Wi-Fi)
Limited memory
Limited processing power
Limited battery
Intermittent connectivity
New
Luxury
Experimental
Immersive
Portable
Limited battery
Intermittent connectivity
Practical
Authoring
Connected
Ubiquitous
Semi-portable
Gaming/Entertainment
High bandwidth
Extensive memory
Broad processing power
Large battery or wired power
Multitasking shared environment
Personal
Read-mostly
Connected
Ubiquitous
High bandwidth
Limited memory
Limited processing power
Wired power
Extreme connectivity
Evolving social context
Fun
Personal
Two-way streams
Semi-portable
Gaming/Entertainment
High bandwidth
High memory
Specialized processing power
Wired power
Consistent connectivity
New
Public
Read-only
Advertising/Awareness
Limited bandwidth
Low memory
Limited processing power
Wired power
Consistent connectivity
Evolving applications
Cool
Location Aware
Multifunctional
Socially contextual
Highly mobile
Limited bandwidth (3G)
Limited memory
Limited processing power
Extended battery
Intermittent connectivity
Worldwide
Many form factors
Niche markets
Globally distributed
Limited profitability
Ephemeral
Limited communication
Speculative
Limited trust
Hundreds to millions
Specific locations
Manageable form factors
Mission critical
Globally distributed
Few to dozens
High profitability
Long-lasting
Extended communication
Executive commitment
High trust
HTTP 1.0 Compression
Fine Pagination
Native format translation
XAuth mediation
Coarse Pagination
Native format translation
Lifecycle
API Virtualization
Any problem in software can be solved by another level of indirection...
takes the  pain  out of the
Development
In the transition from libraries to web APIs,
developers have lost control of the lifecycle
of their dependencies
You can apply the API Virtualization pattern
to APIs you consume to make them look the way
you want them 
An API Virtualization layer can 
be constructed by hand, from open source
or from products on the open market.
As a provider you can modify
the API to fit the shape of the
consumer
As a developer you can modify
the API the fit the shape of
your application
Buffered streams
Swap out provider APIs without
breaking the application
Design
Spec
Implement
Unit Test
Integration Test
System Test
Production Test
Operate
Repeat
Change the provider without changing your code
There are no perfectly swappable APIs today
Quota queuing
Function hiding
Rate limiting
Response caching
HTTP 1.0 Compression
User-based caching
Native format translation
Webhooked streams
Summary: 

We are seeing an architectural
pattern emerge that deals with the expanding variety
of computing devices and the exploding number
of APIs used in modern applications.

This pattern can be used on either side of an API: 
by providers and by developers.
Queue priority
Service level management
Format customization
Data Extensions
Reserved instances
Native format translation
Function hiding
User-based caching
Response caching
Location-based caching
User-based caching
Variable bandwidth (Wi-Fi)
Limited memory
Limited processing power
QoS/Prioritization
User-based caching
Format translation
Streams
Intrusion detection
Version facade
Native format translation
Webhooked streams
Here's the stack:
HTTP(S) Gateway
Configuration Engine
Configuration Store
XML/JSON Parser
OAuth Engine
Identity Store
Policy Engine
Policy Store
Cache
API Virtualization
Function hiding
Location-based caching
Streaming/push
Impression logging
No pagination
User-based caching
XML translation
Streams
Coarse pagination
HTTP 1.0 Compression
Fine Pagination
Native format translation
Buffered streams
Location-based caching
Virtualize the new provider to look like the old
Sam Ramji
Apigee
@sramji
#evolveAPI

Loading comments...

Please log in to add your comment.

Report abuse

More presentations by Sam Ramji

  • API Wheel

    Sam Ramji on

    Circular diagram of how an API can be optimized for delivery to different types of devices and business partners.