Archive

Archive for February, 2013

The API Train Wreck Part-1

February 12, 2013 2 comments

ApelbaumYaacov API Train Wrack

Developing a commercial grade API wrapper around your application is not a trivial undertaking. In fact, in terms of effort, the development of an outbound facing API can dwarf all combined application development tasks by an order of magnitude.

I’ve seen some large development organizations attempt to open their internal platform to the world just to watch in horror as their core systems came to a screeching halt before ever reaching production.

In this and a follow-up posting, I’ll try to provide you with some hands-on tips about how you can improve the quality of your API and more efficiently ‘productize’, ‘commercialize’, and ‘operationalize’ your data service.

It’s 9 PM, do you know who’s using your API?
Do you have accurate and up-to-date KPIs for your API traffic and usage? Are these counters easily accessible or do you need to troll through numerous web server and application logs to obtain this data? Believe it or not, most APIs start as orphaned PoCs that were developed with the approach of ‘do first, ask permission later’.  Things like usage metrics are often put on the back burner until project funding and sponsorship roll in.

Paradoxically, due to their integrative effect, application APIs can provide the biggest boost to traffic and revenue, but at the same time they can become your biggest bottleneck.

So my first tip is to build usage information into your core functions. Before you embark on an API writing adventure, your product management and development teams should have clear answers to these questions:

  1. How many clients, applications, and individual developers will use your API?
  2. Will you offer public and private versions of it?
  3. What will the distribution of your clients, apps, and developers by type and location be?
  4. Who will the the top tier customers be? Developers? Partners?
  5. What parts of the API will be used most heavily?
  6. What will the traffic breakdown between your own services and 3rd party services be?
  7. What will the aggregate per application and per customer transaction volumes be?
  8. How fast and reliable will our service be, (i.e., response, latency, downtime, etc.)?
  9. What are the architectural and technical limiting factors of your design (i.e. volume)?
  10. How will the API be monitored and SLAd?
  11. What type of real-time performance dashboards will you have?
  12. How will the public facing API usage effect the rest of your platform, (i.e., throttling)?
  13. Will you handle error routines generically or identify and debug specific messages?
  14. Do you need to support auditing capabilities for compliance, (i.e SOX, OFEC, etc.)?
  15. What will the volume of the processed/delivered data be, (i.e. from a third parties)?

Asking these questions—and getting good answers to them—is critical if you plan to develop a brand new SaaS platform to expose your internal platforms to the world.

This information is also critical to your ability to establish contractual relationships with your internal users and external customers. Depending on the type of information you serve, it may be also mandatory for compliance with state and Federal regulations.

Collecting the correct performance metrics and mapping them to your users and business functions will help you stay one step ahead of your user’s growing demands.

© Copyright 2013 Yaacov Apelbaum. All Rights Reserved.