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.
Open APIs
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:
By definition web applications have a UI, business logic and a data layer, with a healthy dose of security to control authentication and authorisation. With the wide usage of JavaScript, it is becoming common practice to separate the UI layer with a REST API that delivers the data to be rendered by the presentation tier (opposed to Java JSPs or Ruby ERB that are templates on the server that render HTML and serve it to the browser). Security is a constant as is business logic and data. But increasingly developers are relying on more on open APIs – 3rd party services – to create richer datasets for their application, or leverage new functionality. With almost 5,000 APIs to choose from, developers are tapping into a wealth of data and functionality. Lets label this part of the application ‘integration’:
Slicing the App
Increasingly some of the functionality contained within these boxes are living outside the application. The UI for modern applications is now implemented on the device or client rather that the server. If you use JavaScript, the browser renders the data, for mobile devices, typically a new application is written (or generated) native to the device. Interestingly, it is not just the integration part of the app that is being sliced, with these new open APIs our data store and even security can be managed by a 3rd party service.
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.
Follow: @rossmason, @mulesoft