Application Platform Concept
Continuing my application platform rant yesterday, I am going to define what I mean by application platform. There are a lot of definition for application platform in the internet.
Red Hat JBOSS define an application platform as a server, an IDE and a framework kit.
JBoss Enterprise Application Platform includes:
- JBoss Application Server: The most widely used Java EE-certified app server on the market.
- Red Hat JBoss Developer Studio: Everything you need to develop, test, and deploy rich web applications, enterprise applications, and service-oriented architecture (SOA) services.
- Red Hat JBoss Web Framework Kit: A package of developer frameworks and tools to help speed productivity for web and mobile application development.
While Yahoo defines application platform as something similar to an app store.
The Yahoo Application Platform allows you to reach our users and improve the Yahoo user experience by building and deploying new applications directly onto Yahoo pages, writing code the way you love to write it. We’re looking to you to help us build the next big thing on Yahoo, and in turn we’ll shower you with traffic and users. Sounds like a win/win, doesn’t it? That’s our goal!
Kony and Heroku define an application platform as a Platform as a Service, similar to Amazon Web Services. They provide server and management services that the user can use. I have a name for this, and it is called Development Platform, something I will talk about later on in this blog.
While my definition of Application Platform is a set of API that is reusable. In such a way that all I need to add is a User Interface. The platform will be protected by OAuth to prevent unauthorized access and abuse.
For now, the platform is divided into three components:
- The API component
- The UI component
- The master UI for controlling API.
The API Component
This is where all API resides, protected by OAuth. The database is also stored here. This component is headless. Meaning it does not have any UI whatsoever.
The UI Component
This is home for UI for the API. This is the application that user will see.
The master UI for controlling API
Since the API is headless, I need a UI for OAuth management. Also I need to have a master UI that will control access to the application.
The components can change as I progress further. I am already thinking putting basic OAuth management into the API component and moving the database to the UI component. Thus removing the master UI component.
Since the UI component is the application itself, I may also remove the UI component altogether.
But those are still ideas going through my mind. We will see what happens next.