The application architecture we see today in many of the web apps is based on a few frameworks(Spring+Hibernate+presentation) and on a set of patterns. This has basically become a best practice in the field. It is the referance architecture of web apps as we know it today. Below you can see a detailed description of such an application :
The diagram presents the layers of the application and the frameworks used to construct it. We can see there are two types of tasks at hand. The first is the wiring and gluing of all the frameworks together into a coherent application. The second (green) is the actual implementation(ie coding) . We are coding only the business domain in which we are doing the project. Practically there are three types of implementation artifacts at hand :
Business Screens – driving the user through the business forms.
Business Behaviour – the services which implement the business rules.
Business Data – The entities which comprise the business model.
When considering an alternative for on-premise environments it is important to review all the benefits a platform as a service offers and to verify they deliver a comparable quality of service in all the IT domains. Specifically for development, we need to understand if the abstractions and agility we can implement using the above architecture is available with such a platform. A rigid, limiting or inexpressive environment is a true barrier to entry.
Below you can see a detailed description of the software architecture a platform should offer as an application architecture template to its customers – developers in order to truly compete with the on premise rich set of features and abstractions :
In fact this architecture includes additional features not available today with spring which extend the issue of development and operations. It also provides a higher view of the application as a part of a larger application portfolio – not just a stand alone app. The presentation layer is not addressed at this diagram.
In my next post I will address the role of an application in the enterprise and how it fits into the “BIG PICTURE”.