Why do I need an API?

All commercial software solutions have inherent value in their business functionality.  However, relatively few make this functionality easily available to external systems.  Application Programming Interfaces (APIs) provide the means to expose such functionality to authorized users and software systems for use as needed.

It is impossible to include all features for all customers in our products, so we usually focus on a narrow set of high value features.  Doing so initially makes great sense for the bottom line but effectively ignores the opportunity afforded by the “long tail” of less popular functionality.  APIs offer a way to harness and potentially monetize this long tail of functionality locked into enterprise systems.

longtail

APIs vs SOA

Discussions about API development often include comparisons to SOA (Service Oriented Architectures) and Web Services.  Both APIs and SOA address the need for allowing software systems talk to each other. APIs are even considered part of SOA, but the two approach this problem from different perspectives.  Whereas SOA has traditionally been associated with formality, tight governance and limited access, the value of APIs becomes more apparent when some of this rigidity is loosened.

SOA

APIs

Strict integration contracts

Loose integration contracts

Precisely defined implementation stack

Very minimal implementation stack

Used internally or by trusted partners

Appropriate for external use by potentially unknown (but authorized) developers/users

Tightly controlled

Self service

Harder to code

Easier to code

The Case for Openness

Enterprise apps are expected to have deep knowledge of web services they consume.  This effectively results in close coupling of application logic with services even when they are isolated behind a SOA layer, effectively creating a monolith as seen below.

monolith

Making the same services available as loosely coupled APIs can lead to increased openness and therefore increased usage by both internal as well as external applications.

non-monolith

This typically involves changes to implementation technologies.

Typical SOA

Typical APIs

SOAP

REST

WS Security

OAuth, others

WSDL

Self describing hypermedia

XML

JSON or XML

 Recommendation

An API application layer can be used as a facade for enterprise SOA interfaces and handle complexities of SOAP, service orchestration, XSL transformation, data thinning, access control, etc.

APIs should be designed based on RESTful principles and where appropriate, JSON should be used to exchange service payloads.

 app api soa

 

Why do I need an API?

One thought on “Why do I need an API?

  • November 15, 2014 at 2:20 pm
    Permalink

    What’s the relationship between APIs and web services?

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *