Application stacks are so passé, now its all about the slice. With the rise of open APIs we are seeing a new breed of application. Infrastructure APIs are cropping up everywhere for doing things like email, FTP, monitoring and management, analytics and application security. These slices of functionality, delivered as services, remove the time consuming need to set up services locally and allow developers to spend their time building their application. Adoption of these infrastructure APIs means application architecture doesn’t look the same as it did. Piece by piece the sub systems for an application such as data, security, user management, notifications, integration and messaging are being hosted outside the application. Furthermore, there is a wealth of new services available to applications providing new capabilities such as telephony, facial recognition, address validation, geocoding/geolocation, social media mining, carbon footprint calculators – pretty much anything you need and more to build your killer app. This means application development is becoming a lot more about composition of of open APIs, not coding it all yourself.
Traditional Application Stack
Before I dig into APIs its worth noting that the application model is being transformed in a couple of different ways by trends emerging in the cloud era. The traditional model of the software stack looks like this:
Whether you are using LAMP, RoR or Java, the stack is pretty similar. With the advent of IaaS and PaaS, this is changing, the functions still exist but the logical separation and location of these elements of the stack are changing:
In cloud environments the operating system and often data storage (including file system) get blurred into a single IaaS layer. The Web / App. Server is represented by the PaaS layer. This is very similar to what applications are built on today except PaaS takes care of viratualization, elasticity, and common application services (more on these in a minute). You’ll notice that the application remains the same a this level. As such applications can be build for cloud environments in the same way we’ve always built them using PHP, Java/Servlet or Ruby.
However, there is a fundamental change in the application layer caused by open APIs. Lets take a look at the common components of a traditional application:
Slicing the App
This is a pretty interesting time for application development as we know it. PaaS is the next generation platform and open APIs are providing slices of functionality that used to be delivered as an application stack. There is obviously some trade-offs with using open APIs to deliver your core application infrastructure (such as network latency between database and app), but for many this will not matter. However, many new services are cropping up for adding telephony, notifications, error handling, email, FTP and more to your applications with a few clicks. As this trend continues, application platforms will need to make working with APIs much easier.