Choosing and implementing suitable enterprise PaaS
Cumulogic founder Rajesh Ramchandani deciphers some of the mysteries behind cloud and gives suggestions for how to pick the best for your enterprise
The ultimate goal for enterprises, web companies and startups is to deploy highly robust, scalable applications. With the extreme growth of mobile applications and the nature of unpredictable workloads, it’s important to deploy an agile application infrastructure to be able to handle the peak workloads of applications. Rajesh Ramchandani shows why PaaS matters and is the core in enterprises’ cloud adoption strategy.
Public clouds such as Amazon EC2, Rackspace and several others have made it possible to deploy highly distributed cloud applications which can scale up and down resources as needed. However, cloud deployments still require developers to install, configure and manage the entire application infrastructure. Developers are typically required to use monitoring and autoscaling services to keep applications running after they have successfully configured the entire application infrastructure stack, including web tier servers, proxy servers, load balancers, application servers or other frameworks, and database tiers.
To manage the complexity of distributed and agile infrastructure, developers have used third-party cloud management solutions such as Rightscale to manage their deployments. Several services, such as application logging, autoscaling, monitoring and application performance management are consumed from third-party cloud-based services. This point-solution approach with cloud-based tools and services makes the entire application management quite complex, requiring developers to manage several third-party services and tools. Long term, the cost for such services can become exorbitant.
While this model of integrating services is suitable for web applications and mobile applications which typically require lower operating expenses, such architectures may not be suitable for enterprises – especially in regulated industries such as financial services, healthcare, etc. Additionally, enterprises have large amounts of existing investments in technology, infrastructure, tools, people and processes which may not be leveraged in cloud-based deployment models. Enterprises can, however, use hybrid cloud computing models and deploy internal or private clouds for their primary applications and sensitive data while using public clouds for development, QA/Testing and deploying non-mission critical applications. Such a model allows enterprises to leverage their existing IT investments while using the economies of scale and agility of clouds.
While transitioning to private, public or hybrid clouds, enterprises should consider Platform-as-a-Service (PaaS) as the “core layer” for cloud computing. PaaS provides a standardized application infrastructure on demand for development teams and IT Ops, eliminating the need for manually provisioning and managing the infrastructure stacks, and therefore accelerating time-to-market.
Benefits of PaaS
PaaS provides many benefits across the enterprise for application developers, IT Ops, DevOps, business units and CIOs. Unlike Infrastructure-as-a-Service (IaaS), which provides an orchestration layer over the virtualized environment, and self-service for dynamic resource allocation, the PaaS layer allows developers to write applications independently of the application infrastructure, providing complete, pre-provisioned infrastructure services on-demand to quickly deploy applications, hence speeding time-to-market.
Figure 1: PaaS Benefits
Because of the application manageability of PaaS, business units and CIOs can also lower the cost of managing the applications.
PaaS Use Cases for Enterprises
Cloud-based applications: The majority of applications developed today are targeted for cloud deployment, and most of these applications deal with tremendous amounts of data (big data structured or unstructured). They tend to use SOA, RESTful interfaces or Web Services with a combination of SQL and NoSQL database, and messaging services. Developers can benefit from developing applications on PaaS as they can take advantage of new frameworks and infrastructure components to quickly develop, test and deploy applications.
PaaS is ideal to start developing new applications as they eliminate the need to manually install, configure and manage the application infrastructure. Architects and developers can design and architect distributed and horizontally scalable applications to take advantage of cloud platforms along with economies and flexibility of clouds. PaaS also eliminates the need for buying expensive high-end servers, and virtually eliminates the need for high capital expenditures.
Application consolidation: It’s very common to see several hundreds of applications running on siloed servers and different versions of infrastructure stacks, which make application management expensive and inefficient utilization of resources. Such siloed applications, when not updated or patched, may have security holes and vulnerabilities that can be exploited to cause threats to business-critical applications.
Some Platform-as-a-Service offerings, such as CumuLogic PaaS, provide support for traditional middleware stacks on the cloud along with next-generation open source infrastructure services, making it possible to migrate and consolidate existing siloed applications to a single enterprise-wide application platform to manage, eliminating variations and multiple versions of infrastructure components.
Development, QA/Testing environments: Developers and QA/Testing teams can benefit tremendously from PaaS. Traditionally, developers code and test their applications on smaller environments, which may be laptops and desktops. Then QA teams are tasked with setting up a variety of test environments and implementing test scenarios. The staging and production teams typically set up applications by setting up their own environments, creating variations in the environments.
Platform-as-a-Service eliminates the need for different teams to set up different environments so development, QA/Testing teams, etc. can focus on testing, staging and deploying the applications. DevOps can also easily collaborate on the same environment, reduce the overall time-to-market, and simplify debugging, testing, and deployment of applications.
Strategy For PaaS Adoption
Choosing the right platform, planning and implementation are key to the successful transformation of the IT infrastructure and evolution of new application architectures. PaaS can have an impact on your developers, administrators, and processes beyond the technology investment. Some of the most common criteria to consider and their impact are listed below.
Key PaaS Selection Criteria
Application portability and vendor lock-in: Almost all PaaS environments require proprietary SDKs, which may provide a permanent application lock-in to the platform. Applications must be written to the vendor-specific PaaS and hence must be deployed to the underlying infrastructure that they provision applications on. PaaS providers, such as Google App Engine, Salesforce.com’s Force.com and Microsoft Azure allow to write applications to their PaaS and will manage them on their own infrastructure, hindering application portability, including portability of applications from public clouds to internal clouds or internal virtualized infrastructures. Several other PaaS providers, such as EngineYard, will provision workloads to a single cloud provider, such as Amazon EC2. Such PaaS services provide not only lock-in to their SDK or APIs, but also to the underlying cloud.
Multi-cloud support: While application portability is a major consideration, the ability to choose the underlying infrastructure cloud, virtualization technology and datacenter locations are also important criteria in platform selection. To avoid vendor lock-in and to have multiple choices of platforms and clouds, it is important to choose a platform-agnostic, infrastructure-agnostic, hypervisor-agnostic platform which allows to move workloads when needed.
Proprietary PaaS vendors such as Force.com, Google App Engine and Microsoft Azure run their own infrastructure in their datacenters. They provide high level of redundancy and failover capabilities to ensure application availability. Other PaaS providers, such as Heroku (Now Salesforce.com) and EngineYard, leverage large public clouds such as Amazon Web Services to provide high availability of application infrastructure, and are mostly tied to one IaaS cloud. Such PaaS offerings also rely heavily on third-party IaaS clouds to provide redundancy and failover. Therefore, they have the same limitations of Google App Engine and Microsoft Azure and do not allow end users to choose their own IaaS cloud provider.
Programming languages and development frameworks: The second most important criterion for choosing a suitable platform is the programming language support.
Most of the PaaS providers provide SDKs which limit the capability to use any other language than what they already support. It’s important to consider what programming languages you have already invested in, and what you will be investing in in the future.
For the past 15 years, the most predominant programming language within enterprises has been Java. JVMs have evolved over the last decade and now support programming languages such Scala, PHP, Python and Ruby (or JRuby), hence Java PaaS will allow to run multi-language applications within the virtual machine. Having support for native languages in the PaaS may or may not be as critical if the Java PaaS can provide the same level of scalability and reliability of the JVMs.
Compliance and security requirements: If compliance and security are main concerns (for example, in regulated industries such as Health Care and Financial Services), using private clouds and private PaaS in your own datacenter is likely a more suitable solution.
In addition, if you wish to leverage existing investments in hardware and datacenters, people, tools, processes, etc., you may want to consider migrating infrastructure resources to a PaaS environment using PaaS offerings which support private, public, and hybrid cloud deployments, and provide the flexibility to use multiple clouds with the same level of ease-of-use, security and reliability.
Application migration and investment protection: If you have large investments in applications and application infrastructure, you may want to consider migrating existing applications to PaaS to streamline and lower the cost of management. Once you decide to migrate the applications, you’ll need to identify and prioritize such applications to migrate to a PaaS on private or public clouds.
A number of PaaS offerings however are black-box solutions which do not offer infrastructure component choice. This means that the migration of existing applications will likely require major code changes or re-writes of applications.
In order to migrate existing applications, you’ll need to evaluate PaaS options which support the deployment of existing applications, enabling smooth migration as well as the deployment of next-generation, modern cloud applications.
Architecture flexibility: Some first-generation application management offerings – sometimes referred to as workload management solutions, were designed to provision virtual machines of applications and infrastructure services on virtualized environments, such as VMware vSphere. Such solutions are inflexible and require a large service catalogue to provision applications. These first-generation solutions are also tightly integrated and do not provide choice of virtualization layer and orchestration technology. They require rebuilding of virtual appliances when applications are upgraded or infrastructure is patched. In addition, first-generation solutions present huge management and high costs for IT Ops.
You may want to choose a PaaS solution which is built to decouple hardware from virtualization, allowing enterprises to pick the virtualization technology of choice, plus a VM orchestration solution which decouples infrastructure services and applications entirely from the underlying orchestration layer. This type of PaaS architecture allows enterprises to choose the appropriate layer of IaaS, hypervisor and PaaS to control the cost of the overall cloud solution.
Functionality and customization: PaaS is for enterprises looking to evolve their IT infrastructure to build agility and leverage the economies of scale of clouds. As infrastructure continues to evolve and enterprises develop new application architectures, the cloud platform must evolve and be able to provide additional functionality to support changing development and deployment needs. A PaaS solution must be customizable to meet specific enterprise needs and requirements, and to extend to accommodate user’s changing requirements.
In a Nutshell
PaaS is the most important layer of cloud computing, and enterprises must build their cloud adoption or transformation strategy around PaaS. Infrastructure-as-a-Service (IaaS) provides flexibility and agility to IT infrastructure, but has limited value and ROI for enterprises that are already deploying virtualized environments. PaaS can help enterprises standardize on an integrated application infrastructure stack, deploy an enterprise-wide homogeneous platform, improve developer productivity, lower the cost of management, and improve time-to-market.
Rajesh Ramchandani is founder and vice president of products at CumuLogic. He has more than 18 years of experience in the software industry, with over 10 years of hands-on experience in Java and middleware. He has extensive knowledge in Utility Computing technologies and Cloud Computing. Rajesh was responsible for market development and for building the partner ecosystems to drive cloud computing revenue for Sun Microsystems.
This article originally appeared in Java Tech Journal – PaaS Above The Cloud Hype.
Image courtesy of japokskee