The three layers of cloud computing IaaS, PaaS and SaaS occupy the headlines with significant capabilities undergo continuous improvement to host services in the cloud. This growing market is slowly changing so that offered services will become generic. The current evolving struggle is the deployment and management of SaaS applications in the cloud, Gartner calls this cloud market portion SEAP (Software Enabled Application Platforms). We will dare to say that developers are from Mars and cloud providers from Venus, let us explain in detail why.
SaaS application developer builds the application architecture structure including the database system, the business logic and the user Interface. The software developer (or the SaaS vendor for that matter) invests on building these main three infrastructure cornerstones in order to bring life to the business idea and launch a new on-line service.
Traditional software delivery puts the responsibility of deployment and maintenance in the hands of the customer. In contrast, the SaaS model key includes building the infrastructure wrapper that allows meeting the requirements to deliver it as a service. The change from the licensing model is that the SaaS vendor (the developer) is also the integrator and the responsible to support standards by adopting technologies which makes the software as a service.
The most popular example is the support of multi-tenant. This feature enables the scalability to perform extensive SaaS sales and effective maintenance on the non-physical infrastructure. The virtual infrastructure brings higher level of complexity which requires additional maintenance means. This complexity intensifies as the number of customers grows, hence the demand for more cloud capabilities and resources.
Developers use existing frameworks that enable a short and efficient development such as .NET provided by Microsoft or Ruby on Rails brought by the open source world. Software architects already understand that the application multi-tenancy is a part of the system infrastructure to enable scalability, but is the that enough to make an application as a service? the answer is no, there are more considerations the developer need to bear in mind when planning the architecture of software as a service.
In order to plan the development of a robust and automatic scalability, the software architect must understand the cloud dynamic nature that is to say the basic option to start and shut down resources automatically. The software vendor should pick the IaaS vendor as part of the initial development step, learn the IaaS platform’s API capabilities and make sure that the development roadmap includes also a tight integration with the cloud facility. The IaaS platforms offered are still young and automation deployment is still limited due to infrastructure barriers. Most of the IaaS platforms doesn’t provide convenient tools to deploy the application, therefore the SaaS vendoר is forced to invest in purchasing existing tools or even implement independently. Today we still see vendors that are not aware of these requirements as they are not pure application but operations oriented.
Check out I Am OnDemand terminology page and learn more about the four levels of Multi-Tenancy.
Another aspect in the SaaS development discussion is the option to build the system on a PaaS. There is a good number of PaaS manufacturers that offer products enable development capabilities as a service and by that solve the developer’s need to maintain a scalable service as described above. We can divide the this group of products to following two categories:
- Objects as a service – force.com is an example for such vendor. The developer will buy the option to use the out of the box software objects to implement a new application.
- Runtime and database as a service – here we can mention platforms as Heruko, Google Apps and MS Azure.
Gartner predicts a growth in the amount of platforms that provide the wrapper for the web development of new and existing application. These platforms already have taken a significant part in the cloud evolution. The number of PaaS providers grows while the existing vendors continue to extend their on-demand tools portfolio, enabling a wide range of services for operation, management and distribution of SaaS applications.
Besides the actual system scalability issues presented here, there are much more “developing for the cloud” considerations such as integration, develop for resources’ optimal utilization and SaaS development with the fast changing clouds’ platforms.
The relationship between the actual application development and the operational side of the application becomes stronger. While the SaaS vendor’s board should think on all cloud adoption strategic aspects, the vendor’s software architect as well as the product manager should think “out of the application box” to be able to deliver their product as a service.