Which to choose?
Overview
- Business Model Why
- Major logical components
- Lifecycle functionality
- Different strategies over time
- Total points for each option
- Importance of each criteria
- Ratings for each criteria
- Variation among raters
- Features Evaluated
- Non-Functional Criteriae
- API Tool Vendors
- Resources
- More on API Microservices
This page provides you a way to apply my research on managing APIs.
I provide here a structure and approach for wisely selecting from among several vendors.
Click content link:
- Total points for each choice (sample recommendation: what’s best for you)
- Relative Importance of each criteria
- Ratings for each choice
- Features Evaluated
- Non-Functional Criteria
- Variation among raters
But before opening your checkbook, consider the Why and how:
Business Model Why
PROTIP: While public APIs get a lot of press (due in part to marketing spend), implementing thru partners achieves indirect monitization
After Netflix opened their API, they identified partners and new channels they didn’t anticipate.
- increase brand image
Implementing private APIs among employees only may achieve cost savings from control, and standardization.
- Improve discoverability (for reuse and greater agility)
- Present uniform facade
Major logical components
-
API Publisher portal (for use by admins)
-
API Developer portal to learn system
-
Proxy (API Gateway) does re-writing, format conversion, rate limiting (throttling).
The diagram for Amazon’s API Gateway summarizes the challenge:
- Calls come from a variety of sources (mobile and IoT apps, AJAX websites, services from customer servers)
- Traffic comes through public cellular and internet networks
- Load balancing is necessary to distribute load across many servers.
- Caching is important for speed.
Lifecycle functionality
PROTIP: Attend webinars by leading vendors to see how they justify their higher prices with features that cover the full lifecycle:
The diagram above from MuleSoft presents names for the range of functionality that you may not know you need, and then later realize their products are needed to avoid extra costs and effort.
Different strategies over time
QUESTION: What are the benefits of discoverability, collaboration, ease of integration, etc. and other advanced features offered by vendors?
PROTIP: Consider the strategy of getting going quickly with a vendor which offers low-cost start-up costs. Then your organization can gain the experience needed to more wisely evaluate the value of additional features among all vendors.
Total points for each option
The vendors and their product, ranked by total points averaged among raters:
The order of this list is for a particular organization. Yours will differ.
Each link may go to text lower in this document, to another page on this site, or the home page of the vendor:
- CA (acquired Layer 7), on-prem only, but vaulted to the top of Gartner’s “Ability to Execute” in 2016.
- Apigee Edge Microgateway + hosting. Proprietary code. OEM’d by SAP. Leads in Gartner’s “Completeness of vision” scale.
-
Mulesoft CloudHub, Anypoint Platform. Proprietary code. “Full featured”.
- Microsoft API Management in the Azure cloud is SaaS-only and proprietary. Advanced features limited. For Microsoft shops. No SOAP or RAML support yet. Dropped off Gartner’s report in 2016.
-
Amazon’s API Gateway. SaaS-only proprietary code. Seems flexible. Dropped off Gartner’s report in 2016.
-
IBM’s API management offering is IBM API Connect (previously known as IBM API Management). Has an “Essentials” level (StrongLoop) for free use by developers and “Enterprise” on-premises option.
- WSO2 open-source
- apinf.com from Finland (@APInf_io) open-source in on GitHub
-
Kong (previously Mashape) is an open-sourced API proxy which runs in front of any RESTful API, and extended through Plugins. It’s built on top of NGINX and Apache Cassandra, but scalability still an issue?
- APIversity API Manager.
- Akana (formerly SOA Software)
- Axway (acquired Vordel)
- Mashery + Intel acquired + Tibco API Exchange CloudBus Aug. 2015
- Torry Harris mostly open-source API-o-Blocks, API Connect in EMEA, India and Latin America.
- Oracle
- Software AG
- RedHat (3Scale) - high cost Strongloop Node.js
- Dell Boomi
- Accenture
- HP (focused on large media and telcos)
Forrester, in their April 2015 report, classified the vendors this way:
Forrester also illustrated the history of offerings with this timeline: This was adjusted for Tibco buying Mashery from Intel in August, 2015.
https://en.wikipedia.org/wiki/Comparison_of_api_management like https://en.wikipedia.org/wiki/Comparison_of_text_editors
Gartner Magic Quadrant
Importance of each criteria
This radar polar chart visually illustrates the relative importance of each criteria that can be used to evaluate each vendor offering.
If everything has the same importance, no trade-offs are considered.
These represent extent of risk and effort, and cost savings or earnings.
Semi-transparent layers are used so both layers can be seen clearly.
Ratings for each criteria
There is usually a trade-off between cost vs. speed vs. quality (the “Iron Triangle”). But here are more considerations:
TODO: The above is an example placeholder.
This is like the CAP Theorem.
Variation among raters
Each rating is the average of ratings among several raters.
Features Evaluated
Categories of featuers are detailed below:
API Publisher Portal Features
- Define API schema
-
Import API schema (from Swagger, RAML, WADL, etc.)
- Package APIs into products
- Define Billing parameters
- Create invoice and email
-
View Billing history to collection history
- Manage users (add, update, delete)
- Define policies like quotas or transformations on the APIs
-
Get insights from analytics
- Collaboration among other publishers
-
Submission and update to aggregation platforms:
-
APIs-guru on GitHub is the “Wikipedia of REST API specs”.
-
Submission to Dash by Bogdan Popescu who aggregates 150+ APIs for access off-line (for $30).
-
apirest.com, the API search engine. @apirestcom
-
API Gateway Features
-
a secured channel between the API gateway and the backend.
-
gate access with API keys, certificates, JWT tokens
-
Enforce usage quotas and rate limits
-
detect DOS attacks by using throttling
-
use advanced security policies like JWT token validation.
-
track usage for billing
-
Transform API calls on the fly without code modifications (from V1 sent to V2 accepted)
-
Cache (queue in memory) backend responses (where set up)
-
Log calls to store metadata for analytics over time
- Collaboration among other gateways
- Integration with other APIs.
API Developer Portal Features
Major items of interest to developers are listed here, from 3Scale.net.
- API documentation.
- Communication about system availability history
- Communication about change history
-
Announcements about hackathons and other events
- Try out an API via the interactive console.
-
URL to download Swagger specs.
- fast onboarding (signup via GitHub, Hotmail, AD, Google)
- Create an account and subscribe to get API keys.
-
Access analytics on their own usage.
-
Internal API portal offers a centralized location for communication about the availability and latest changes to APIs,
-
gating access based on organizational accounts, all based on AD
-
API facade that decouples internal implementations not ripe for partner consumption.
-
Foster innovation?
- Collaboration among other developers
- Integration with other API developer portals.
- Gamification
Non-Functional Criteriae
Each of these are a risk and an aspect of cost/benefit.
How does it save time and money, reduce risk, or earn more revenue?
How do “bells and whistles” benefit?
Initial Cost
Lower up-front cost is important for many.
-
3scale, Apigee, and WSO2 have options for no-cost, unlimited duration use of their API management solutions (though support is typically limited or unavailable).
-
Amazon API Gateway has a free tier for one million API calls per month for up to 12 months.
-
Microsoft charges Developers $49/month and limits access to 10 users.
Cost over time
BLAH: Microsoft pricing bundles pre-defined amounts of calls, cache, and network services together in units for billing.
Amazon charges for different services separately:
- API calls by the million received depend on location of servers: Amazon charges:
Locale | per million |
US | $3.50 |
Ireland | $3.50 |
Frankfurt | $3.70 |
Asia Pac. | $4.25 |
- Data transfer out to internet. Amazon:
Volume | per TB |
0-10 TB | $0.120 |
11-40 TB | $0.085 |
41-100 TB | $0.082 |
101-350 TB | $0.080 |
Style / Ease of Use
- The hipness of UI - default layouts inviting, clean, etc.
- Familiarity
These are important because human UI are needed for:
- Developer Sign-up
- API key assignment
- API public/private key creation
- Provide documentation
- Provide code samples
- Discussion forums to provide support
- Send emails to update
- Report errors by user for each account
Coordination
The need for an API Gateway is to avoid legacy point-to-point communications among computers.
- Partner management
-
Traffic management
- service coordinator, (android device hits one service instead of 100 micro services)
- Billing
-
Emails about changes
- Predictive analytics. Apigee illustrates their Insights service which yields a buying Propensity score salespeople use to prioritize efforts:
Security
Does the security mechanisms provided strong enough?
- Transport security (TLS)
- Authentication (passwords, two-factor cellphone)
- Initial registration
- Password recovery
- KPI (public/private) certificates?
- Identity and access management
- Verify api keys
Apigee uses this illustration:
* No data at rest
* http://www.mashery.com/api/security prides itself on being certified on PCI, HITRUST CSF, SSAE, Safe Harbor, SOC 2, etc.
Flexibility
How flexible is it? Are we sacrificing too much flexibility for ease-of-setup?
- Redirect calls to API’s URIs
-
Auto-detect new services added
- Support for steaming API protocols WebSocket and XMPP
- Support for two-legged or three-legged OAuth and OpenID Connect authentication
- Onboard SAML security token service for federation and credential translation
- Support for external SSO (Single Sign-On)
- LDAP user provisioning for services like Web applications and social networks
Maintainability
What maintenance is needed?
- Manual work: Annual, monthly, weekly, daily, hourly, etc.
-
Adding additional languages
-
Logging (AWS CloudWatch monitoring)
Item US Cost/Mo. Note Dashboards $3.00 - Detailed Monitoring for Amazon EC2 Instances $3.50 per instance 1-minute frequency Custom Metrics $0.50 Alarms $0.10 API Requests $0.01 per 1,000 GetMetricStatistics, ListMetrics, or PutMetricData requests Logs ingested $0.50 per GB Logs archived $0.03 per GB Custom Events $1.00 per million
Scalability
How quickly, easily, and safely can the system expand to meet capacity needs?
- Load balancing (AWS CLoudFront)
- DDOS (Distributed Denial of Service) attack detection and mitigation (at DNS level)
- Traffic Throttling based on user’s plan
- Traffic Throttling for capacity limitations
- The “Actor” model of Microsoft Service Fabric
- Caching
Microsoft Azure routes traffic to a region providing the least latency for each user:
Speed
- Cache
-
International end-points
- Cache memory per hour. Amazon:
Volume | per hr. |
0.5 TB | $0.028 |
1.6 TB | $0.054 |
6.1 TB | $0.245 |
13.5 TB | $0.290 |
28.4 TB | $0.560 |
58.2 TB | $1.100 |
118.0 TB | $2.200 |
237.0 TB | $4.400 |
I18N (Internationalization)
- UI Language
- Data centers
- Currencies
Availability
- Partial deployment
- Fault tolerance
Support
How well supported is it?
This is part of the cost. Support costs money.
Training
How quickly and deeply can people get up to speed on the technology?
How easy is to to learn/maintain?
This is a consideration of costs and risks.
- Document generation
Testability
-
Amazon API Gateway can generate client SDKs in a number of programming languages, including JavaScript, iOS, and Android.
- Mock server generation
- Test script generation
Portability
How easy is it to switch among competing vendors? Is there vendor lock-in?
- Switch from Azure to AWS, other PaaS is not possible because Azure is a pure SaaS running on Azure
- How to extract data?
Vendor prospects
What is the sentiment about the vendor?
- History of product cancellations
- Investment advisory financial ratings
- Consumer ratings by JD Power
- Glassdoor ratings by employees
API Tool Vendors
Vendors are in alphabetical order:
Akana:
- https://www.youtube.com/channel/UC3hr1MuhpS11dMxTdo1rHQw
CA
- http://www.ca.com/us/products/api-management/solutions/api-management-comparison.aspx
Mashery:
- https://www.youtube.com/channel/UCJqekyyjX78qmzoOK_wZ2lw
Microsoft API Management
“Publish, manage, secure, and analyze your APIs in minutes” is the tag line at Microsoft’s API Management home page (Service Overview).
Microsoft’s service is based on its October 23, 2013 acquisition of APIphany (based in Wash. DC).
Documentation is published from markup text in this GitHub which directs people to the classic portal. NOTE: There is no Issues tab in their GitHub.
-
The roadmap is not public.
-
Issues with the API service where each public can allocate 25 voting points among proposals.
The top request (May 2016) is Web Hooks in ASP.NET, a set of Nuget packages for web apps to send and receive WebHooks from external services using a common HTTP pattern. http://neelbhatt2015.blogspot.in/2015/12/webhooks-in-aspnet-visual-studio.html This won’t get the scale, performance, or analytics Azure Event Hubs provides, though.
-
The pricing page states there is no on-premises deployment option available at this time.
Create Publisher portal
- Get a Microsoft Azure account
- Create a Resource (Free trial)
-
Specify Scale: Developer or Standard.
Standard tier can go up to 4 instances to handle 800 million calls/month. QUESTION: No auto-scaling?
- Custom SSL cert
- Custom domain (developer.xyz.com)
Create service
-
Select service:
- Click Create.
- Specify the prefix to
.azure-api.net
(such asitw1
). - Select subscription (Free Trial, etc.).
-
Select Region.
- Specify Organization name.
- Specify Administrator Email.
-
Click check icon.
-
Use browser to visit the page, such as https://itw1.portal.azure-api.net
- Edit look and feel by clicking on the edit icon at the upper left.
Create Gateway
- Click Import API in publisher portal dashboard.
- Select From URL.
- Select Specification format: Swagger (no RAML).
- In Specification document URL field, paste http://calcapi.cloudapp.net/calcapi.json.
- Provide a Web API URL suffix, e.g. ‘calc’.
-
Type ‘Starter’ in the products field to add your API to the ‘Starter’ product.
NOTICE:
https://itw1.azure-api.net/calc
- Click Save.
-
Click Operations tab.
Notice the GET Add, Divide, Multiply, Substract two integers.
Policy scope
- Policy statements
- Allow cross domain calls
- Authenticate with Basic
- Authenticate with client certificate
- Check HTTP header
- Control flow
- Convert JSON to XML
- Convert XML to JSON
- CORS
- Find and replace string in body
- Forward request to backend service
- Get from cache
- Get value from cache
- JSONP
- Limit call rate per key
- Limit call rate per subscription
- Log to EventHub
- Mask URLs in content
- Remove value from cache
- Restrict caller IPs
- Return response
- Rewrite URL
- Send one way request
- Send request
- Set backend service
- Set body
- Set context variable
- Set HTTP header
- Set query string parameter
- Set request method
- Set status code
- Set usage quota per key
- Set usage quota per subscription
- Store to cache
- Store value in cache
- Validate JWT
- Wait for…
Open the developer portal
- Click on APIs.
- Pick Calculator API from the list on the left.
- Click on Open Console for any API.
-
In the console, enter values for the parameters and hit the HTTP
button. -
Search
NOTE: API Management is in category “Web + Mobile”.
“Take any API and publish it to developers and partners in minutes
- Provide API documentation and an interactive console
- Throttle, rate limit and quota your APIs
- Monitor the health of your APIs and quickly identify errors
- Bring modern formats like JSON and REST to existing APIs
- Connect to on-premises systems and publish globally
- Gain analytic insights on how your APIs are being used
http://azure.microsoft.com/marketplace/partners/microsoft/apimanagement/ marketplace
- Service Overview
- Getting Started
- Documentation
- Click Create to open a new window.
When created, the Echo API is created as a sample.
http://apidemo.azure.api.net/echo
http://echo.cloudapi.net/calc/
Authentication
Delegating User Authentication and Product Subscription to a 3rd Party
Policies
Examples:
https://github.com/Azure/api-management-samples/tree/master/policies
- Hide response data based on product name.policy.xml
- Pre-authorize requests using validate-jwt.policy.xml
- Send context information to the backend service.policy.xml
- Set cache duration using cache control header.policy.xml
Developer Portal Setup
Swagger import
A Swagger 2.0 doc can be imported, but the doc MUST contain Host, BasePath, Schemes properties. Otherwise, it won’t get imported: No message. It just hangs with “working..”.
Analytics:
In the Summary graph, detail for a point in time can be obtained with mouse-over:
- Response time (in ms)
- Bandwidth usage KB
- Successful? Popular === Volume of calls.
- Errors === Number of calls blocked due to limits?
Notice the pre-defined filters for Today, yesterday, Last 7 Days, Last 30 Days, Last 90 Days
Activity chart provides reports that drill down on the specific activity by developer, product, API, and operation.
What about:
- Specific translations performed
- Specific policies violated
- metrics by geography
-
Correlation of two metrics (response time vs bandwidth scattergram)
- Issues over time
Videos
My recommendation for the sequence to view videos about API Management
-
Introducing Azure API Management TechEd North America 2014 by Josh Twist (@joshtwist)
- Business models
- Engaging developers: Time to First Successful call success metric
- Make legacy API (SOAP XML) and modern (REST JSON)
- Understand their behavior with monitoring
-
Introduction to API Management on Microsoft Azure at TechEd Europe 2014
-
Microsoft Azure API Management Master Class: In Depth for Fun and Profit at TechEd North America 2014 by Anton Babadjanov | antonba@ | @antonbaa | https://www.linkedin.com/in/anton-babadjanov-44501b9 and Vlaimir Vinogradsky | vlvinogr@
This explores the end-to-end workflow of launching a “treasure hunt” API and play a game with it. We’ll also take a peek at what the future holds for this exciting new Azure service.
-
Azure Api Management by Ajay Solanki
-
API Management Overview (cartoon) 03-25-2015 Overview video of the Azure API Management service
-
Adding Developer Portal functionality using Templates in Azure API Management by Matt Farmer
uses Contoso API:
http://contosoapim.azure-api.net/calc/add?a=(a)&b=(b)Response: { “statusCode”: 404, “message”: “Resource not found” }
-
Configure your API Management instance using Git 03-12-2016 by Anton Babadjanov | @antonbaa | https://www.linkedin.com/in/anton-babadjanov-44501b9 Access and modify the configuration of your API Management instance using Git. Configure Security > Configuration: This enables scenarios:
- Managing multiple configuration versions
- Syncing the configuration of multiple tenants
- Utilizing the Git workflow for collaborative editing
- Text-file based configuration for flexibility
-
API or No API - On Cloud Feb 23, 2016 By: Lachezar Arabadzhiev, Jef King Take reads off data store. Have a worker rule read out From a SQL database every 30 secs to stick into blob storage with CDN fed to users.
-
API Management in under 5 minutes 06-16-2014 Shows the classic portal to https://wellmark1.portal.azure-api.net/ This video shows how Wellmark Blue Cross & Blue Shield use Azure API Management to accelerate their partners in adopting the Wellmark API,
-
Episode 177: More API Management Features with Vlad Vinogradsky 06-12-2015 42 min, 07 sec
In this episode Chris Risner is joined by Vlad Vinogradsky, Principal Program Manager on the Azure API Management Team. Vlad joins us to talk about some of the latest features…
-
Episode 176: Logic Apps with Stephen Siciliano 05-29-2015
In this episode Chris Risner and Haishi Bai are joined by Stephen Siciliano, Program Manager on Azure App Service. Stephen joins us to demonstrate Logic Apps.
-
Getting Started with Azure API Management REST API 12-01-2014 Azure API Management provides a REST API for performing operations on selected entities, such as APIs, users, groups, products, and subscriptions. The API can be used fo…
0. Integrate Azure API Management with Event Hubs Nov 09, 2015 at 2:01PM By: Miao Jiang This video demonstrates how to use the log-to-eventhub policy to build a custom dashboard with Azure Stream Analytics and PowerBI.
- Azure API Management Update BizTalk360
Social media:
-
Mailto: apimgmt@microsoft.com
-
https://social.msdn.microsoft.com/Forums/en-US/home?sort=relevancedesc&brandIgnore=True&searchTerm=api+management Microsoft forum topics
https://www.youtube.com/results?search_query=apimanagement
#integrate2016 conference
Partners
@KloudSolutions
https://api.kloud.com.au/
{version}/{entity-set}/{id}/{property}
V1/user/cd1311/files
https://twitter.com/RepreZen_API
APIMatic
AutoRest
@infront
@SixPivot
https://twitter.com/SwaggerApi
Scalability
https://social.msdn.microsoft.com/Forums/azure/en-US/97a0b1e9-bdd1-480c-a5c3-f4e3a5e7444f/scale-to-millions-of-api-calls?forum=azureapimgmt
Pricing
http://azure.microsoft.com/pricing/details/api-management/
Stars
Jorge Arteiro
- http://aka.ms/melgabdev4
- jorgearterio@hotmail.com
- @jorgearteiro
- @Azuretar
- Azuretar.com
Visual visualstudio
https://jetbloom.visualstudio.com/?account=first 90 day trial
App Fabric
Microsoft Service Fabric (in GA April 2016) has several free “party” clusters that last for less than 4 hours each.
In order to build and run Azure Service Fabric applications on your development machine, you need to install the runtime, SDK, and tools. You also need to enable execution of the Windows PowerShell 3.0 scripts included in the SDK.
To use Service Fabric PowerShell cmdlets on Windows 7, which includes Windows PowerShell 2.0 by default, download the Windows Management Framework 5.0 which includes PowerShell 3.0 as well as Desired State Configuration (DSC), Windows Remote Management (WinRM), Windows Management Instrumentation (WMI). See http://go.microsoft.com/fwlink/?LinkID=717903
The Party Cluster is created by code at https://github.com/Azure-Samples/service-fabric-dotnet-management-party-cluster
Not AzurePS
The local cluster manager :
“C:\Program Files\Microsoft SDKs\Service Fabric\Tools\ServiceFabricLocalClusterManager\ServiceFabricLocalClusterManager.exe”
Pin this to the taskbar.
Microsoft Service Fabric is about more than API management. Its features and patterns for application development, including:
- Stateful Reliable Services with Reliable Collections.
- Dependency injection and unit testing with Reliable Services.
- How to use Service Fabric configuration packages, both the built-in Settings.xml config and custom JSON configuration, with rolling updates without restarting services.
- How to encrypt sensitive data in Service Fabric configuration packages.
- Inter-service communication using the Service Fabric remoting stack.
- Diagnostics with Elastic Search through ETW event sources.
- How to write a stateless Web API front-end service.
https://azure.microsoft.com/en-us/documentation/services/service-fabric/ videos
https://azure.microsoft.com/en-us/documentation/samples/?service=service-fabric Sample apps
Service Fabric programming model that they focus on:
- Reliable Actors,
- Reliable Services,
- custom application orchestration, and
- Service Fabric management tasks.
Resources
- PowerShell Deployment Toolkit (PDT) is a set of scripts and knowledge for automated deployment of System Center 2012 SP1/R2, including SQL and all prerequisites, and all automatable post-setup integration.
Matthew Snider [masnider@MSFT]
-
Human factors in decisions: Thinking, Fast and Slow by Daniel Kahneman
-
[You Are Not So Smart](http://youarenotsosma
More on API Microservices
This is one of a series:
- API Portals
- GraphQL API
- GitHub API
- GitHub GraphQL API
- API Swagger
- API Design Tools
- API Design
- API Programming
- REST API Responses
- API Management Evaluation
- API Management by Microsoft Azure
- API Management by Amazon
- PowerShell GitHub API Programming
- PowerShell API Programming
- PowerShell Desired State Configuration
- PowerShell on Mac