Traditionally, IT would configure software and hardware manually, or use scripts driven by the CLI, screen scraping and so on. This approach is time-consuming, error-prone, and unsuited in an age when virtualization can speed deployment of resources and services.
Enter the API. An API is an interface that allows software components to talk to one another; it's a library of specifications of objects, routines and data structures. An API isn't restricted to software; even hardware requires software as an interface for configuration and management.
In simple terms, APIs transform human-usable management systems into machine-usable systems. These systems can typically be used side by side. These systems provide configuration and state monitoring programmability. Programmability brings scale to administrative tasks and the ability to rapidly respond to changes in the environment. Programmability is key for "software defined everything" and for public and private clouds.
The abstraction is important for both ease of use and sustainability. APIs provide a consistent set of functions (programmable features), objects (software and hardware devices such as servers, vServers, switches, ports and so on), and data structures that define those objects. They are built in such a way as to be programmed rather than configured/administered. APIs provide sustainability through the abstraction of underlying configuration.
Source: Joe Onisick
This means that hardware and software can change underneath the API without a requirement for the API calls themselves to change. Additionally, the API provides flexibility in the programming language used northbound, which allows for standardization and ease of use.
Private cloud (and software defined everything) both aim to bring greater agility to data centers. This means faster reaction time to business demands. This cannot be achieved through legacy manual configuration practices, or top-down management systems relying on screen scraping or CLI scripting.
Source: Joe Onisick
APIs provide a programmable interface for the components of the data center. This allows both custom configuration and better integration with higher-level management systems. The graphic below shows this relationship.
Source: Joe Onisick
A major advantage of APIs for high-level management is in the integration. Without an API, the managing system code must be tightly coupled with the standard configuration interface of the object (CLI, GUI, and so on). Using a well-built API abstracts that complexity, which allows for more seamless integration. This also helps with upgradability dependencies. As long as the base API construct does not change, management software and device software/firmware can be updated independently of one another.
The most common network API today is OpenFlow. This protocol controls the programming of forwarding tables on devices supporting the protocol. Future releases plan to expand OpenFlow's ability to configure switches. OpenFlow provides a standard Northbound interface for the switching elements with which a controller can manage those devices.
[Join us at Interop Las Vegas for access to 125+ IT sessions and 300+ exhibiting companies. Register today!]
OpenFlow does not dictate a Northbound API from the controller to third-party applications above it. Control of the Northbound API is a big topic in regards to OpenFlow and the greater SDN market as vendors compete to own data center and network virtualization. Controller vendors, including Cisco and VMware, may leverage their market clout to compel third-party developers to write for their platforms, but there are also calls for a standard Northbound API.
Additionally, OpenFlow itself can't claim market dominance. It has a great deal of support from the community and some vendors, but does have opposition. OpenFlow is designed for the features provided by commodity chip makers. This means that many proprietary features offered in the ASICs by networking vendors will be lost in a pure implementation. Some vendors, such as Cisco, offer their own APIs in addition to supporting OpenFlow.
APIs provide a programmable abstraction layer on which automation, orchestration and systems control constructs can be built. APIs enable easier integration of both in-house customization and out-of-the-box management software with the components that the data center is constructed from. This is a necessary abstraction in order to move the data center forward into more densely managed and robust models.