Application developers typically invest time in a few different aspects of their work: designing application architectures for tricky but common problems, writing application code, and deploying, testing and maintaining an application. The highest-value work is writing the application code, while the remaining work-items are in support of application code-writing tasks. Solving big architectural problems (like how to cache data across many servers or deal with message brokering at the application tier) and deploying and managing apps steals cycles from the high-value work of writing apps. These mal-invested cycles significantly reduce developer productivity and hamper their ability to deliver on promises and achieve goals. Additionally, IT staff responsible for managing applications have to deal with the fact that these "cycle-stealing" factors also necessitate that each app has a unique architectural and management profile, creating a net drag on IT's ability to provide top-notch service. Unfortunately, all of the aforementioned has been a necessary evil in recent history and exists because:
Platform as a Service (PaaS) is a software layer than can stitch together an arbitrary number of infrastructure resources (e.g. OS images, load balancers, etc.) into a single logical resource pool that can be offered to developers as a self-service computing platform. Developers and their applications are abstracted away from the underlying details of the infrastructure, relying on the application itself and service requirements as the lingua franca. Developers simply upload apps to a PaaS and, in a few button clicks, deploy the application. The PaaS takes care of all of the mission-critical (but strategically unimportant) heavy lifting of allocating resources, configuring the app, and deploying it to the infrastructure. All management workflows are provided by the platform and "wrapped" around guest applications. Additionally, a PaaS also offers platform services that an application can leverage to solve big architectural problems out of the box. A PaaS offering needs to provide applications with API access to things such as caching services, message brokering, or even application metering. The result is that developers can achieve full productivity and not waste cycles on undifferentiated work.
Apprenda is a full-service enterprise PaaS stack for .NET and Java applications. Specifically, Apprenda is a "PaaS engine" that can be layered atop any arbitrary infrastructure composed of Windows and Linux OS instances. Apprenda stitches these OS instances into a cross-platform single fabric that is a web- and API-accessible self-service cloud computing platform. Apprenda accepts as guest applications any mission-critical multi-tier .NET and Java applications composed of web services, front ends, and databases (e.g. SQL Server, Oracle). Apprenda is the best PaaS for the enterprise because it:
As a PaaS, Apprenda embodies the conceptual PaaS better than any other technology on the market, meaning that developers and IT staff can achieve the level of full productivity promised by the description of PaaS without any compromises.