You are on page 1of 4

Microsoft Azure

The first category of PaaS platform allows for easy migration of existing SaaS applications into the
cloud. Windows Azure is the most well-known of this type of platform. It provides complete support
for the C#/.NET programming model, allowing existing .NET applications to be run in the Azure
platform with minimal changes. Azure supports the SQL Server database, so applications that are
written for it can directly migrate. It also provides a NoSQL database model called Azure Table
Storage, which does require specific programming but can provide a “big data” model for cloud
applications. Most of Microsoft’s frameworks, like WCF, ADO.NET, MVC, and Unity, are available
as platform services. Like some other platforms we discuss, such as Google Cloud and AWS,
Microsoft Azure can also be used as IaaS, taking advantage of its many compute and storage
options.

One important platform feature Microsoft Azure does not directly support is multi-tenancy. Multi-
tenancy is the ability to share application infrastructure between multiple users (tenants) while
maintaining data isolation and user configurability. Developers of SaaS applications on the Azure
platform must explicitly program for multi-tenancy using traditional techniques, such as virtual
table IDs in the database, schema-based isolation of user data, and parameterized user
configurations through mechanisms like dependency injection.
Google App Engine

In the second category of PaaS platforms, higher level features are provided to support cloud
application development, but taking advantage of these features requires significant changes to an
existing SaaS application’s code. For example, Google’s App Engine (GAE) supports programs
written in the Java programming language and other languages (e.g., Python, Ruby) that use the Java
Virtual Machine (JVM). However, it supports a “white-list” subset of Java classes that can be used
on the platform, and a business object model that differs from traditional Java-based enterprise
application frameworks, such as Enterprise Java Beans (EJBs).

Likewise, the persistence and data access model for GAE is different than the traditional SQL
RDBMS model common in enterprise SaaS applications. Its data store is based on a NoSQL
database. Traditional SQL data access is provided through an object relational mapping abstraction
through the JPA interface. This type of access does not support all SQL expressions, like joins. JDO
(Java Data Objects) is an alternative database abstraction which can be used for new applications.
GAE also only supports outbound REST API calls, and does not support SOAP-based JAX-WS APIs.

Thus a developer essentially needs to reprogram an existing enterprise SaaS application to take
advantage of other higher level features of the platform, such as auto-scaling, which allows GAE
apps to automatically support increased loads without specific programmer intervention. This is an
example of how PaaS differs from IaaS, which requires explicit provisioning of additional
infrastructure resources.

GAE does provide some features that support multi-tenancy, unlike Microsoft Azure. These include
a Namespace API that supports data isolation. However, use of the namespace requires manual
mapping of requests to the namespace, which in turn requires specific programming to provide
multi-tenancy. There is also a dependency injection framework for user configuration support,
similar to the capability provided by Azure.

GAE features sit on top of the Google Cloud IaaS platform, so like Microsoft Azure, the Google
platform can be used for direct hosting of SaaS applications in the cloud without taking advantage
of GAE’s higher level services.

Like GAE, AWS provides both IaaS capabilities, and some higher-level PaaS services. AWS is more
commonly thought of as an IaaS platform, allowing one to configure and control virtual machines
that support JVM-based and .NET-based architectures, and SQL, NoSQL, or Big Data based storage
models. However, the availability of higher level services, like AWS Elastic Beanstalk that supports
containerized deployment models and auto-scaling of application infrastructure, provides PaaS-like
features to the developer.

Force.com

The third category of PaaS platforms differ greatly from the other two, in that it supports a
programming and data model that is specifically designed for developing multi-tenant cloud based
applications. The most notable example of this type of platform is Force.com, the PaaS platform
developed by Salesforce.com. It has a unique programming model based on the Java-like Apex
programming language. It also has a native user interface and UI programming language,
VisualForce. Force.com is designed for business applications development. These applications can
be extensions of CRM capabilities provided by Salesforce CRM, or they can be workflow-based
business applications, such as approval workflows. The platform also provides integration APIs for
CRM integration or third-party services.

Unlike the other categories of PaaS platforms, this category is based on meta-data that drives both
configuration and data storage. The model is very different from traditional Java or .NET enterprise
application programs. It is essentially a generic data storage and processing engine that inherently
supports multi-tenancy. The data schema is built on a traditional SQL RDBMS model, but it enables
a specific type of data object processing with a purpose built object relation model and database
triggers, which are used to implement workflows.

The programmer declares these data objects using a mostly visual configuration tool and writes
trigger handlers in the Apex programming language (or simple ones using a visual interface).
Support for multi-tenancy, including tenant data isolation and configuration, is provided out of the
box with no explicit programming required. This is one of the powerful, high level aspects of this
type of platform.

Yet the tradeoff is that the programming model is unique and does not translate to traditional
enterprise architectures. Additionally, in order to support multi-tenancy, the platform has runtime
limits, or governors, in place which limit the amount of data, number of transactions, and
transaction latency. Thus the developer needs to be aware of these limits when architecting the
application to make sure they are not exceeded, or to work around them by using alternative
mechanisms like batch processing.

The Force.com platform offers other high level services, including security, support for audit trails,
and APIs to third-party services outside the platform. User interfaces can be built with the native UI,
programmed in VisualForce, or developed with common Javascript frameworks, such as angular.js,
by using a technique called Javascript remoting which ties these components to Apex programmed
services. Salesforce is also in the process of revamping its native user interface with a Javascript-
like responsive UI package and design framework called Lightning. Developers will then be able to
develop custom UI components in Lightning.

Due to the non-standard nature of the Apex language, some developers use pre-processors to convert
more conventional Java to Apex. A platform called Heroku takes this concept one step further.
Heroku is a JVM-based PaaS platform in its own right, similar to AWS or Google Cloud, allowing
applications to be developed in popular languages like Java, PHP, Python, Ruby, Go, Scala, or
Clojure. The programming model is a managed container system with integrated data services, based
on the Postgres database. One feature of Heroku that is relevant to Force.com developers is the
sharing of data with Force.com through bi-directional synchronization. Thus, Heroku can be used to
develop more conventional application code while taking advantage of the CRM integration with
Salesforce (Heroku is hosted in the Salesforce.com data centers, as is Force.com).

You might also like