Cloud computing, with its related software, platform, and infrastructure service models, has changed the way people use technology. It’s so common that many people don’t think about, say, webmail or online document sharing as a cloud computing service; it’s just a normal part of the landscape. Both individuals and organizations use many cloud computing services. While Salesforce CRM is a widely used software as a service (SaaS) product, Salesforce also offers its Force.com platform in the PaaS (platform as a service) space. Is Force.com a real PaaS?
Platform as a Service (PaaS): definition
Just what is “platform as a service”, or “PaaS”? The National Institute of Standards and Technology (NIST) defines it as:
The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages, libraries, services, and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment. – “The NIST Definition of Cloud Computing”, pp.2-3
Let’s rephrase that definition and maybe expand it a bit.
PaaS is one of three service models in cloud computing. These service models are software as a service, platform as a service, and infrastructure as a service. Each service model includes some or all of the components needed to use a software application in the cloud: hosted applications, development tools, database management, data analytics, operating systems, data storage, servers, networking and security, and physical hardware and connections.
Think of these models as concentric circles. (Microsoft has also posted a handy diagram showing how cloud services overlap and how PaaS fits into the model.)
Software as a service (SaaS)
SaaS is the outermost circle. Users typically interact with SaaS via web browsers. Examples would be applications like SendGrid, Google documents, and Salesforce CRM. Individuals and organizations pay subscription fees to use the applications but don’t have to worry about providing servers, networking, security, etc. The vendor takes care of everything; users can access their apps any time, anywhere using a web browser.
Infrastructure as a service (IaaS)
IaaS is the innermost circle. It includes only components like hardware, network connections, and data storage – everything related to physical machinery but not software.
IaaS is a little like renting access to a computer in a server room. You don’t have to purchase or maintain any hardware or network connections. It gives you total control of all the software on the machine. It also gives you total responsibility for making sure your software is configured correctly and up to date.
Platform as a service (PaaS)
PaaS lies between these extremes. It includes all of the infrastructure components plus operating systems and the tools needed to develop software, manage databases, and run business analytics. Sunil Joshi of IBM describes PaaS this way:
In a PaaS environment, the service provider not only is responsible for provisioning and managing the lower level infrastructure resources, but also for providing a fully managed application development and deployment platform. PaaS provides the developers with the appropriate flavors of operating systems, databases, middleware, software tools and managed services, usually in a multitenant environment. – Sunil Joshi, “What is platform as a service (PaaS)?“
Platform as a service is often used to develop or customize cloud-based software applications. It provides a quick, efficient springboard. Developers can leverage data connections, analytical tools, and more in a scalable environment. The Force.com platform is no exception: it provides access to Salesforce database management and server infrastructure as well as both code-based and declarative automation tools.
Benefits of PaaS
The main attraction of PaaS is that developers don’t have to worry about lower-level details like hardware and operating systems. They don’t need to provision a virtual machine or bog down in the details of networking. Instead, they rely on the built-in infrastructure of the platform. They can simply focus on building their applications.
Since PaaS generally includes pre-coded application components or modules, coding can be much faster and easier in this environment. Like code libraries, these components save a lot of time and effort.
Some PaaS providers make it possible to develop apps that work seamlessly across desktops, tablets, and smart phones. In the Salesforce platform as a service ecosystem, developers don’t need to create separate apps for different device types. This is another big efficiency boost.
Another advantage of PaaS is that development teams can work together regardless of where they’re physically located. All coding is done on a hosted platform in the cloud.
…but does the Force.com platform qualify as PaaS? (Spoiler alert: Yes.)
To be fair, the Salesforce database and programming model is a bit different from other platforms.
What’s different?
It’s specifically designed to support multi-tenant, cloud-based applications. Coding in Force.com is largely based on proprietary languages, though it’s possible to include Javascript and to reference static CSS files. Multi-tenancy support features like tenant data isolation and configuration are already built in, so programmers don’t need to write code for these features.
It’s also pretty convenient and efficient for developers to interact with Salesforce database objects. A developer can simply declare which data object to use on a page, and each object has an automatically-generated standard controller. Developers can also use the Apex programming language, which is similar to Java, to create custom controllers and data triggers.
Salesforce provides integration APIs so that Force.com developers can connect with CRM data or outside, third-party services. All in all, the Force.com platform provides a rich set of tools for developers to create apps efficiently.
Ramifications
Because Salesforce is a multi-tenant platform, Force.com has some strict resource limitations in place. These runtime limits affect how many query statements can execute within a given module. They also limit the amount of data and transactions that can be handled within a given time interval. Applications that manipulate large data sets may need to include behind-the-scenes batching and latency management to stay within the governor limits.
Another thing to consider is that Salesforce has a strict policy about unit testing. All Apex code must have at least 75% coverage by unit tests. Developers won’t be able to deploy code that doesn’t have enough test coverage. They also can’t deploy new code that causes existing unit tests to fail. While this may seem inconvenient, it’s actually a good thing! The Force.com platform “forces” developers to use good programming and testing practices.
What’s the same?
In spite of its proprietary features, Salesforce platform as a service definitely meets the NIST definition of PaaS. It provides/supports languages, libraries, services, and tools for developing applications. It also provides and controls all of the underlying infrastructure like operating systems and storage.
TL;DR
With the popularity of Salesforce CRM software as a service (SaaS), it’s easy to overlook the Force.com platform. Force.com offers all the benefits of platform as a service (PaaS): subscribers can develop, deploy, and use applications on a cloud infrastructure. Force.com provides and supports a set of languages, libraries, and other tools for developers to use, and it completely manages the infrastructure that these applications need. Is Force.com a real PaaS? Yes, it is.