API as-a-Product
Who?
@BishoyDemian@DotLabsAu
www.dotlabs.com.au
What to expect?
No buzzwords
No “disruption”
No JavaScript frameworks
API Growth
Growth in APIs 2005 – to - 2013
Source: Programmable Web
“
”
UI/UX paradigms will come and
disappear. APIs are here to
stay!
Community-Driven Development
Where to start?
Azure API Management (APIM)
Publisher Portal
Building Blocks
APIs Products Policies Analytics
Security
APIs
 Import: WADL/Swagger
 Configure: URL & operations
 Secure: credentials & authorization
 Track: Issues & Client Applications
Products
 Visibility: user groups
 Control: Subscriptions
 Enforce: Terms of Service
Policies
 Scoped
 Inherited
 XML documents
 C# expressions
 Context included
Example Policies
Analytics
 Usage: Location, Bandwidth, Calls
 Health: Errors, Cache, Latency
 Activity: By Developers, Products,
Subscriptions, APIs, & Operations
Analytics
Security Model
Identity Authentication Authorisation
Identity Providers
 Enterprise: Azure Active Directory
 Social: Facebook, Google, Twitter
 Built-in: Username & Password
 Custom: Delegation
Developer Portal
Building Blocks
Docs Signup Apps Issues
Conclusions
Pros
 Cross-cutting concerns done with
better consistency
 Costs less $$!
 Easy to use & customize
 Familiar tools (Git, C#, PowerShell)
 Already part of Azure
Cons
 Still a new product
 Some rough edges
 Latency overhead
 Versioning strategy missing
What’s next?
 Product Roadmap
 http://aka.ms/ApimRoadmap
Questions?

API as-a-Product with Azure API Management (APIM)

Editor's Notes

  • #11 IoT is driving unprecedented growth in API production and consumption. It is very obvious why.
  • #12 Is your project and “App”, a “System”, or a “Platform”?
  • #15 API Management provides a simple one-stop solution for the cross-cutting concerns when publishing APIs.
  • #16 API Management has 3 main components: Developer Portal Gateway Publisher Portal
  • #18 Each API refers to a back-end service that you can customize (URL mapping, query and path parameters, request/response content, caching, etc.) Products can be Open or Protected. Protected products must be subscribed to before they can be used, while open products can be used without a subscription. Policies can introduce some logic in how to process the API calls. Allows .Net code blocks. Provides context parameters. Users can come from multiple identity providers (enterprise, social, and local user/pass)
  • #19 Import APIs from WADL or Swagger specs URL mappings (rewrite) Enable/Disable caching of operations (policies have more fine-grained controls) Configure Gateway<->API authorisation Configure User<->API authorisation (used for interactive developer portal) .. (Oauth 2.0 & OpenID connect) Built-in issue tracker (very simple)
  • #20 Products allow you to: Grant/deny access to user groups Require a subscription Enforce subscription approval Users must accept terms of service
  • #21 Scope can be per operation, API, product, a mix of all of these, or global Encapsulated inside a very simple XML document structure (inbound, backend, outbound) Access to Request, Response object and Product, Subscription, etc…
  • #22 Built-in policies makes life easy for simple scenarios C# code can be a very powerful tool to write advanced policies Integration with external tools and APIs (payment gateway? Or bug tracker maybe?) with
  • #23 Anyone attempted to measure an API Error rate? Latency? Cache hits? usage? How long did it take? How do you make informed decisions on which APIs & Operations need more attention? How do you decide which Operations in your API needs optimisation?
  • #24 This is a simple ”Usage” dashboard.
  • #25 Developer Authentication (uses identity) Backend API authentication (Basic, client cert.) Interactive API calls in developer portal require a helping hand to perform authorisation (OAuth 2.0) Validate incoming JWT tokens (issuer, expiry, signature, etc.)
  • #26 Azure AD B2C behind the scenes. Quite capable of handling external users (v.s. plain Azure/AD)
  • #29 Each API refers to a back-end service that you can customize (URL mapping, query and path parameters, request/response content, caching, etc.) Products can be Open or Protected. Protected products must be subscribed to before they can be used, while open products can be used without a subscription. Policies can introduce some logic in how to process the API calls. Allows .Net code blocks. Provides context parameters. Users can come from multiple identity providers (enterprise, social, and local user/pass)