There is an increasing level of discussion and activity around the topic Software-as-a-Service (SaaS)–and more recently Platforms-as-a-Service (PaaS).On the SaaS side of things, there have been some notable successes in the areas of CRM-as-a-service, computing-as-a-service and storage-as-a-service. These are just a few examples of data, functionality and hardware as services over the network. These individual offerings represent the next logical evolution of software and computing in the cloud.
As services like these have come available, it has become increasingly apparent that whole new platforms are needed to fully leverage these services within the cloud. While individually these services represent pieces of a cloud-based platform it takes more to be a true platform.In my view, a platform includes all the systems and environments comprising the end-to-end life cycle of developing, testing, deploying and hosting web applications and we believe, this platform must also be cloud-based, a Platform-as-a-Service (PaaS).At Bungee Labs, we do believe a story larger than SaaS is emerging, where end-to-end development, deployment and hosting platforms are provisioned as services over web. In order to get us all on the same page, we think it is useful to define what we consider to be the six key elements to the most inclusive Platform-as-a-Service (PaaS) offering possible today:
1) Develop, Test, Deploy, Host and Maintain on the Same Integrated Environment
It’s time to stop developing “here” and running “there”. Today, most applications are coded in one environment (usually custom-built for that project by a developer), then tested in another, and redeployed to yet another for production. In addition to the costs of building, configuring and maintaining these separate environments, applications almost always need to change and get re-factored to overcome roadblocks as they proceed through the software lifecycle, which incurs even more costs along the way. In the conventional on-premise model, these cost and attendant risks fall on the application owner, and are considered part of the cost of deploying a web-scale application. In a completely-realized PaaS, the entire software lifecycle is supported on the same computing environment, dramatically reducing costs of development and maintenance, time-to-market and project risk. A PaaS should let developers spend their time creating great software, rather than building environments and wrestling with configurations just to make their applications run–let alone testing, tuning and debugging them. Also, an end-to-end PaaS should provide a high productivity Integrated Development Environment (IDE) running on the actual target delivery platform, so that debugging and test scenarios run in the same environment as production deployment. This deeper level of integration speeds development iterations, and makes application development faster and more intuitive. Posting an application for testing or production deployment should all be push-button operations and should support accessibility from within the corporate intranet or public Internet stand-alone or embedded inside of other web applications. In addition, a complete Platform-as-a-Service should provide facilities for source code control, application testing, staging, rollout and roll-back, in an auditable, work-flow-friendly environment.
2) User Experience Without Compromise
A Platform-as-a-Service must deliver compelling user experiences, with all the richness and live interactivity that consumers have been conditioned to expect. No cost, time-to-market or reliability advantages can compensate for a sub-par user experience, so it’s important that a PaaS provide built-in rich interactivity. A Platform-as-a-Service for web applications should take advantage of the familiar, cost-effective usability model of the web. Hiccups like software downloads or plug-in installations, browser dependencies and inconsistencies, or local executables break the web model, and are inherently less secure, less maintainable and less user-friendly. In order to be relevant and popular, PaaS must deliver the best user experience available on the web, comparable to or better than conventional approaches.
3) Built-in Scalability, Reliability, and Security
Scalability, reliability, and security should be built-in to a PaaS without requiring additional development, configuration or other costs. Multi-tenancy, the ability for an application to automatically partition state and data to service an arbitrary number of users, must be assumed, again without additional work of any sort. Applications delivered on a Platform-as-a-Service must automatically and reliably support web-scale use, allow secure exchange of confidential information and secure execution of monetary transactions. Developers should be free to build applications with the comfort that the security of customer data, network traffic, source code (intellectual property) and even server hardware is maintained automatically by the platform through-out application development and delivery.
4) Built-in Integration with Web Services and Databases
Tremendous value can be derived through the connection of multiple types and sources of external dynamic data. The platform must enable connectivity to multiple data sources while abstracting the tedious task of writing the “glue” code to bring the sources together. Applications need to leverage existing software investments in databases, and internal or external third party web services, requiring that the platform offer a wide variety of connectivity options. Many applications require external services with “live” data from multiple sources, (i.e. updated at sub-second intervals) so automatically updated connections between applications and services must be the default (i.e. rich, multiplexed state management capabilities) without requiring additional engineering work.
5) Support Collaboration
Development projects are delivered by individuals and teams, both large and small. A PaaS must support both formal and on-demand collaboration throughout the entire software lifecycle (development, testing, documentation and operations), while maintaining security of source code and associated intellectual property. Facilities to package, share, and obtain reusable source code and software components can dramatically increase productivity and reduce project risk and costs. Moreover it must be easy to connect with other developers, to solicit advice, share information and form ad-hoc teams, while maintaining privacy and security. Naturally, this collaboration should be a feature of the platform and not require additional software or configuration to enable.
6) Deep Application Instrumentation
A Platform-as-a-Service must provide comprehensive instrumentation of application and user activity, to help developers understand their applications and effect improvements. This deep instrumentation opens up many new opportunities from understanding the user experience to whole new business models. With instrumentation, organizations can see exactly how users are using the application, the type of performance they are experiencing and any application crashes. This information can also be leveraged to create new business models where costs are tied to actual utilities, rather than flat-rate subscriptions or licenses. In these new business models the cost of the platform can be tied directly to the adoption of web applications.
Our intent with this post is to provide a framework for understanding and discussion among developers, IT managers and business decision makers. Fundamentally, we believe the most inclusive “Platform-as-a-Service” offering possible today should take into account every technology, environment and process required to develop, test, deploy and host applications and services delivered over the web.We look forward to your thoughts.
Founder and CTO