When I speak with customer prospects about Cloud Foundry, I don’t start with networks, servers, VMs and build my way up a stack of abstractions, instead I ask them how they will change to compete in an industrial era increasingly defined by software. Refactoring their entire mindset away from IT management to becoming a high performance software factory is job-one of any briefing I give.
Enterprise PaaS delivers a next generation platform to answer this challenge. Leaving the legacy of custom VM, middleware and server orchestration behind can sometimes be uncomfortable for traditional IT buyers, but it is captivating to business oriented leaders looking to transform their organizations.
Like any new high growth market there are plenty of faux offerings and eager marketing teams happy to abuse terms like “PaaS” and “devops” – the only way to cut through the FUD is with an architectural and feature assessment.
Here are some key elements of a true enterprise PaaS. These features help enable agile development teams and continuous software delivery.
- Application and services centric lifecycle API
- This is where the 10x+ jump in productivity from not having to deal with infrastructure and middleware configuration starts. An enterprise PaaS must express itself in terms of applications and services (web and data). Scan the simplified semantics of the CF CLI, designed to help new users to be productive on the system within minutes.
- Rakuten, one of the largest internet companies in Japan, has reported a 90% savings in developer time and costs by moving to Cloud Foundry for app deployment and updates.
- The REST API is also available for use in any context such as the command line tool, a Web Console, as well as from plugins or integrations with Eclipse, Maven, Gradle, Jenkins, Bamboo and more.
- High performance dynamic routing
- Unbounded horizontal scalability is a requirement of many modern applications and the platform must instantly support requests for horizontal scale.
- At the heart of the rapid application deployment and horizontal scaling capabilities of Cloud Foundry is an innovative approach to updating a shared routing tier for all applications in real-time.
- The dynamic router supports the update of deployed applications and app versions, allowing multiple versions of the same application to share the same URL. This enables high value capabilities like zero-downtime blue/green deployments and A/B testing. Watch a demo: here
- The ability to scale and update instantly empowers enterprises to support new high scale mobile and social applications, as well as to rapidly update these applications with new features. Other software packages calling themselves a PaaS have been dismissed by leading third party consultants like Cloud Credo for lacking this feature, while Cloud Foundry has been selected for high scale use by internet giants such as Baidu and Rakuten for whom this scalability is essential.
- Buildpack support
- Using the “push” command to deploy an application is so simple because Cloud Foundry uses a flexible approach to assembling software stacks called Buildpacks. Rather than requiring a developer to specify how to run an application, she is able to rely on a buildpack to detect the application type, and download and configure the appropriate runtimes, containers, and libraries.
- Supporting or maintaining a broad array of languages and frameworks is a lot of work even for a large project. Buildpacks are an approach shared with Heroku, as well as IBM and even small scale PaaS projects like Flynn.
- This buildpack ecosystem ensures constant updates and maintenance for virtually any language. Even statistical languages like R have a buildpack.
- Data and web services brokers
- Cloud Foundry provides a generalized mechanism for discovery of available data and web services. This could be a marketplace of partner-provided services, as in http://run.pivotal.io, or a collection of data services provided by an on-premises deployment.
- The upcoming Service Broker v2 API allows any service provider to expose their data or web service as part of the Cloud Foundry catalog.
- Cloud Foundry also features user-provided services, allowing an application to bind to any service, even if it is not “built into” Cloud Foundry. This allows easy integration with legacy enterprise services (e.g. Mainframe DB2, Oracle DB, WebSphere MQ), which further eases legacy application migration to the PaaS environment.
- User-provided services can also be easily leveraged to bind custom developed web services as part of a micro-service architecture.
- In any case (cataloged or user-provided services), the binding mechanism for application developers is identical, allowing for a single, consistent developer experience.
- Linux Container management
- As I captured in my previous post, Linux containers provide a variety of benefits to a modern PaaS. Cloud Foundry currently uses a container management technology called Warden, but we are also working actively with Dotcloud to evaluate the integration of Docker into the project.
- The key benefit to enterprise users is rapid, high density access to capacity. This can help solve a key challenge most large companies face–rapid economical provisioning of robust, production like developer environments. The tight coordination of dynamic routing and dynamic container creation/management is fundamental to Cloud Foundry.
- Role Based Access and Teams
- Enterprise developers typically work in medium to large teams where role based control to different stages of an application lifecycle is critical to success. Different teams might be responsible for early development, testing, staging and ultimately production deployment of an application.
- Cloud Foundry provides role based control, and life-cycle staging isolation natively within the system. The ability to immediately form ad-hoc teams and start working on applications out of the box has enabled outstanding enterprise hackathon responses.
- Active application health management
- Dynamically adjusting to and reporting application state throughout its lifecycle is a difficult technical challenge, especially with thousands of applications running simultaneously on the platform. While IaaS systems often rely on VM monitoring and operator intervention, an enterprise PaaS must eliminate this operational overhead.
- Cloud Foundry has advanced the state of the art in high scale application health management and reporting, and is now on a 3rd generation Health Manager. This component continually monitors the system and intervenes to make the actual state match the intended state.
- Standards based user authentication and authorization
- Enterprise Cloud Foundry users like Intel require integration to user authentication and authorization systems supporting enterprise standards like LDAP and SAML.
- The Cloud Foundry UAA and Login Servers make this possible through integration with Active Directory, as demonstrated and reported in these notes from Intel.
- UAA also supports OAuth 2.0, which provides single-sign-on to SaaS services in the Marketplace from providers like CloudBees Jenkins, New Relic, and more.
- Integrated real time logging API
- Real time logging aggregation should be a standard service to any application on the platform. This should include application platform, internal network, as well as user action logs.
- Cloud Foundry Loggregator delivers the ability to view or tail a unified application log stream to clients like the CLI, and continually publish the log stream to a syslog drain for integrations with tools like Pivotal Analytics, Splunk, or Logstash.
- Multi-provider ecosystem
This rich set of features only addresses the application delivery lifecycle, allowing the user of the PaaS not only productivity gains but also the things they need to operate their applications – true DevOps. An enterprise PaaS must also support an equally rich set of capabilities for the platform operations lifecycle – come back for a review of this second part of the essential elements.