Developer Speed and Cloud Operator Agility
Software innovation is driving competition in every industry. From agriculture, lodging and transportation to wearable computing, the next generation of market leaders are transforming their products, pricing and delivery models with the application of mobile, cloud computing, big data and social media.
With rapid innovation taking place at the intersection of these technologies, businesses seeking to deliver software at high velocity and scale are often impeded by the complexity of deploying, operating and upgrading their applications.
Infrastructure as a Service (IaaS) provides hardware utilization, scale and time savings that are very compelling, but in many enterprises, delivering an application from concept to deployed code involves long lead times often taking months. The process is rife with the complexity of setting up and configuring virtual machines, application servers, monitoring tools, load balancers and many other components.
Even before any code is written, just provisioning the technology takes weeks. Each business need is accompanied with a request for a unique technology stack, corresponding set up and compatibility requirements resulting in unique system “snowflakes”. Each environment that is unlike any other is challenging to perpetuate through development, testing and production environments without introducing variability. They are also difficult to replicate quickly in the event of failure and maintain stability through upgrades of individual system components.
Configuration management and orchestration using scripts, “infrastructure as code” and template-enabled automations improve operational consistency to a certain extent and are easy to get started with, but a major pitfall for such bespoke automation is it is hard to maintain, update and scale. Because these tools are still moving VMs, load balancers etc. around, small changes to configurations or scaling requirements sometimes signal an entire re-do. Over time, this ultimately reduces productivity and adoption.
Platform as a Service (PaaS) is the next step in cloud evolution that adds to the benefits provided by Infrastructure as a Service because it is more than just scripts or an automation tool. PaaS automatically provides the appropriate runtime container and middleware services for an app in a consistent environment across the application life cycle, minimizes the costs of downtime and abstracts applications from infrastructure dependencies. Just as IaaS was the next logical step to virtualization, PaaS is the next logical step for IaaS.
In the effort to keep pace with new business requirements, development teams are taking advantage of the fast, iterative and competitive software delivery cycles made possible by PaaS- with or without organizational approval. Public PaaS has been of particular interest because of the low cost on-ramp and unprecedented developer productivity experienced when turning around new applications, upgrades and features. But, despite the popularity of public PaaS in startups, mainstream adoption by enterprise IT has been slow to materialize owing to concerns about budget, control, data jurisdiction and security.
While public PaaS meets near term delivery goals, many cloud services today force developers to write their applications introducing dependencies and specialized libraries- limitations that are comparable to writing code to a specific OS. For example, an application written to use AWS features like AutoScaling is great, but not very portable across clouds. Additionally, a number of public PaaS services are struggling to be profitable as evidenced by the exit or absorption of several venture-backed vendors from this space into larger unrelated businesses.
Enterprises have made their preferences very clear. Enterprise investment in an open and multi-runtime private PaaS is significant and growing exponentially. Some of the biggest names in global business like Monsanto and Rakuten are powering their next-generation applications with a private PaaS, showcasing an impressive 50% reduction in app development lifecycle and 90% reduction in their operations work.
These companies have adopted a PaaS technology stack that runs in their own datacenters while including features that address the unique needs of the enterprise.
PaaS has been built by developers, for developers. Focusing on developer experience and a flat learning curve is critical for wide adoption in the enterprise. Essential capabilities that will gain developer interest and adoption are:
Developers can benefit from self-service provisioning of runtime resources covering a wide choice of standard and familiar languages and frameworks supported in a single platform. An extensible architecture that provides consistency and a common platform for deployment across applications and also environments (e.g. dev, test, prod, etc.) reduces the complexity, provisioning delays and costs caused by environmental and configuration differences.
Developers get instant access to a marketplace of popular new application, data and mobile services including connectivity to existing enterprise data installations for their applications, testing and hands-on experience. Apps can bind to these services automatically reducing cycle time by eliminating the typical complexities around deployment, security, networking and resource management. Development teams of any size should be able to start right away with the technology stack that is best suited for their apps and rapidly evolve new ideas into complex applications, increasing business agility.
Developers can manage and administer their applications and associated services from a consolidated dashboard to view real time application status, event activity streams, resource usage and logs. This empowers application owners and encourages a self-service model freeing up IT operations teams to focus on more value added activities.
A good private PaaS model must also have downstream benefits to the operational team with additional features that support not just the quick development of a new generation of data-aware applications, but also the deployment operations of the apps and platform. Built-in capabilities that contain the high costs of downtime, enforce enterprise policy and prevent disruptions to the application lifecycle will go a long way to improve operational speed and consistency. A true Enterprise PaaS provides an integrated suite of operational capabilities:
The platform provides a clean separation of Developer and Operator functions that segregate access of shared resources and apply organization wide governance models, making it easier for operations teams to enact tight access and policy controls, including mapping to user authentication and identity systems in the enterprise.
Adding more application and platform resources has traditionally been accomplished by vertical scaling, i.e. adding larger machines and more compute. This is slow, necessitates downtime and adds expensive hardware investments. Today, cloud application architectures can employ horizontal scaling, which can be accomplished with an enterprise PaaS using faster and lightweight methods like adding more containers.
A platform that is purpose built for enterprise applications should be able to rapidly scale to hundreds of application instances in under a minute. Built in mechanisms will dynamically route and automatically load balance application requests across the newly scaled instances to ensure optimal end user service.
Most platforms delegate complete responsibility of ensuring application availability to the underlying IaaS. Given the high costs of downtime and the wide variability in the support for these services in the IaaS, an enterprise PaaS needs to supplement with capabilities that improve uptime and recovery such as, failure detection, app owner alerts and auto recovery or healing of application instances and platform processes.
Many organizations deploy Application Performance Management (APM) tools only after they encounter problems. A PaaS that facilitates the collection of application and infrastructure information and integrates with existing monitoring and alerting infrastructure can help Operators proactively improve app performance, customer experience and mitigate the expensive costs of downtime.
Developers put great effort into creating an application architecture that remains flexible across operating systems and minimizes hard dependencies. For operations teams, there is a similar challenge to make platform choices that remain flexible across infrastructure clouds while minimizing dependency on a specific cloud. For example, business expansion into new geos, merger and acquisition activity, changes in pricing or compliance needs may surface the need for existing applications to move and run on new clouds. Therefore, investing in a platform that offers cross-cloud portability of not just the applications, but also the entire platform and related services will prove to be a strategic investment.
Given the strategic advantages and urgency for building apps, the benefits of practices such as Agile and Continuous Delivery have propelled their adoption beyond the walls of Internet giants like Facebook, Google and Amazon to mainstream IT. With Continuous Delivery, application owners tighten quality and customer feedback cycles by frequently releasing incremental changes to their production apps, sometimes several times a day and eschew long build, test and deployment stages. Business agility comes from being able to release committed code to customers at any point.
To be successful, this significant cultural and programmatic shift needs to be reinforced with a platform that supports Continuous Delivery to ease the transition for development and operations teams. The following built in capabilities help ensure a smooth experience for end users as well as operators.
- Minimize variability by deploying the same application “bundle” from dev through production with clean abstractions allowing for stage-specific configurations
- Blue-green deployment patterns with zero downtime
The prevailing cloud platform and enterprise partner is not just the result of rich features, but also needs to provide an ecosystem of established vendors offering compatible technology and services. Cloud Foundry has become the industry’s leading open source Platform-as-a-Service attracting hundreds of thousands of developers due to its ease of use and vast partner ecosystem. With support from technology giants and large businesses such as IBM, SAP, HP, Rackspace, VMware, Bank of New York, Verizon, Centurylink, Accenture and many others, Cloud Foundry is becoming obvious choice and ubiquitous standard to build on.
Pivotal Cloud Foundry is a commercially supported, enterprise PaaS based on the open source distribution of Cloud Foundry so that enterprises can harness momentum from an entire industry rather than stay beholden to a projected roadmap from a single vendor. Because of the strong open source foundation that Pivotal Cloud Foundry is built on, the risk of lock-in is minimized and provides businesses with the ability to run applications on any prevalent virtualized infrastructure, both inside and outside their data centers.
Deploying an application to Pivotal Cloud Foundry takes only one command: ‘cf push.’ The revolutionary benefits of the enterprise PaaS are apparent in Pivotal Cloud Foundry’s industry leading developer experience for application lifecycle events, from the moment of deployment to providing zero downtime updates to both the application and the platform itself. These benefits apply across a huge range of runtimes and languages, using highly extensible formats such as Buildpacks and Docker images to run applications on the platform.
Pivotal Cloud Foundry makes it easier for enterprises to manage the complex processes of PaaS installation, upgrades and configuration. The speed and simplicity of getting started with Pivotal Cloud Foundry is a critical quick-start, bypassing complex installation and setup. Users can have a full running enterprise PaaS in less than one day.
In addition Pivotal Cloud Foundry provides a suite of built in platform services to ease the delivery and running of applications in the enterprise. With Pivotal CF, every application deployed to the platform is automatically wired to:
- 4 layers of HA and redundancy
- Software load balancing and autoscaling
- Application performance monitoring and metrics
- Log aggregation and export
- Roles management and policy enforcement
- Audit events and resource usage dashboards
- Service discovery and secure credential storage
- Access to a variety of Dev Services e.g. MySQL for Pivotal Cloud Foundry
- Rapid deployment on any prevalent IaaS - on premise (e.g. VMware vSphere)or public cloud (e.g. VMware vCloud Air)