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.
»
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
More presentations by
API Wheel
Sam Ramji on
Circular diagram of how an API can be optimized for delivery to different types of devices and business partners.
Popular presentations
What is Prezi, really? And how to create a really good one?
Adam Somlai-Fischer on
Keynote talk at Login 2011 conference in Vilnius for 3000+ audience
More popular prezis in Explore>