Relationship Between APIs And Containers
26 Aug 2014
Containers are a fast growing trend when it comes to delivering compute resources online. Reflecting the world of API design, I feel containers are about deploying exactly the cloud resources you will need to complete a specific compute objective, then putting everything into a single virtualized container definition, that can be forked, clone, scaled, and evolved indpendently of any other resources. Each individual container posesses everything it will need from the operating system, file system, database, necessary libraries, and APIs to accomplish its given objective.
Virtual containers will make API driven resources even more agile, nimble and scalable--not just for providers, but also for consumers. Everything we have right now I would consider to be a retail API market—where even though APIs are often sold B2B, they are generally a one-size fits all API solution. Think about when API resources become modular, customizable, scalable, wholesale resources that can be bought and sold, and deployed anywhere, making all digital assets into commodities that are ready for use anywhere in the API economy.
My goal is to understand how APIs and containers work together, and as I do with all of my research I setup a Github repo for tracking every piece of container news I read that I feel is relevant, each company doing interesting things containers, tools for working with containers, and ultimately my analysis. Cloud computing will continue to be the lead driver of innovation in the API space, and I feel the introduction of cloud computing in 2006–2008 gave legitimacy to web APIs—you could now deploy global infrastructure using web APIs, game on. I think containerization will take API design, deployment, management and integration to the next phase, and closer the early visions of a programmable web we all started envisioning around 2005.
I will be taking each of my API designs, and developing an Amazon Machine Image, Heroku App version, as well as a docker container definition. I want every one of my open source API designs to have the option to be deployed in any cloud environment, and preferable with the click of a button, as with Heroku. In the future it won’t about knowing about all the APIs, it will be about having the right stack of APIs, that you can deploy anywhere, anytime.