YOUR APPLICATION S JOURNEY TO THE CLOUD What s the best way to get cloud native capabilities for your existing applications?
Introduction Moving applications to cloud is a priority for many IT organizations. The urgency reflects a get on board or be left behind attitude and there are good reasons for it. A combination of advancements in technology, high expectations for availability, the high costs associated with running a data center and today s competitive business climate has created a perfect storm for the move to cloud. The focus of this whitepaper is to highlight the advancements in technology that are enabling this transformation and to describe the best approach for moving your applications to cloud native. What Are Cloud Native Capabilities Let s explore what we mean by cloud native capabilities in a bit more detail. Here are the main benefits associated with modernizing applications for cloud: Portability One of the biggest challenges facing cloud vendors is vendor lock-in. IT organizations are justifiably concerned that once an application is migrated and deployed on an external cloud, they are stuck with that cloud vendor. A portable app can be moved seamlessly between clouds. Elasticity There is a difference between scalability and elasticity. Scalability refers to allocating additional resources to an application when those resources are actually available, while elasticity is a mechanism that can grow/shrink available resources and provide them to an app based on demand. Organizations are charged for resources they reserve and utilize. The ability to shrink and release resources when they are not needed can provide significant cost saving. Resilience Modern cloud runtime environments build in the ability to restart components or services that fail. They can also restart any service that fails user configurable health checks. Key Enablers of Cloud Native Capabilities Here are some key technology enablers that help you modernize your existing applications for cloud delivery and cloud native capabilities. Infrastructure as a Service (IaaS) Cloud Providers IaaS cloud providers have built state-of-the-art data centers that can quickly provide significant computing infrastructure that scales up or down based on demand. There are many additional benefits such as redundancy, high availability, disaster recovery, load balancing, etc., that have considerably reduced the need for organizations to maintain their own data centers. That is not to say that the need for internal data centers has been eliminated completely, as governance, compliance and security concerns require that certain workloads stay in an internal data center. Most companies have taken a hybrid approach, however, maintaining a smaller internal data center augmented by external cloud infrastructure. Due to the high demand, there are many IaaS providers that companies can choose from. The top IaaS providers that have separated themselves from the pack are: Amazon Web Services Amazon is the pioneer of IaaS cloud and they have built what many believe is the most mature and scalable IaaS cloud environment for IT organizations of any size. Your Application s Journey to the Cloud Page 2
Microsoft Azure Most IT organizations have been using Microsoft products for decades and Azure is becoming an extension of Microsoft s offerings. For example, Office 365 is a fast-growing SaaS solution offering organizations Office products without the management overhead of running them in their own data centers. Azure is quickly becoming a preferred destination for other business applications that are being moved to cloud, along with the Office suite. Google Cloud Platform Google is building and enabling innovative solutions in all aspects of cloud computing. Although they are new to enterprise software, they have a solid foundation to make them an ideal IaaS cloud provider. VMware vsphere Like Microsoft, VMware has deep roots in IT organizations in the largest enterprises and vsphere environments dominate many internal data centers. VMware s hypervisor technology (vsphere) helped transform many internal data centers into agile, scalable IaaS environments. Containers Containers provide value in their ability to wrap each component of an application with what it needs to run. Container technology is not new, it s been around for more than a decade, but it didn t become popular until it was standardized by Docker and embraced by developers building microservices based applications. Containers provide an abstraction layer to make applications portable to and from any cloud that supports them. It is important to note that there are several companies offering container engines, including Docker, CoreOS and Microsoft. We will focus on Docker in this discussion as they are currently considered the leader. Docker Containers The best way to learn about Docker containers is to review the documentation available on the Docker website: https://docs.docker.com/engine/understanding-docker. What s important to note here is that managing Docker containers is mainly done through a Command Line Interface (CLI) and you need to know how to create and manage script files (Dockerfiles, Docker Compose files, config files, etc.) which has a steep learning curve. The engine and CLI are built for developers as the primary users, not the Operations team who theoretically can be the main beneficiary of applications with cloud native capabilities. Although the interest in Docker containers has grown exponentially amongst developers, the complexity has been an obstacle for utilizing containers in IT Operations. Container Runtime Orchestrators The native Docker engine tools are designed to manage containers deployed on a single host. However, container runtime environments or orchestrators have been developed to manage groups of containers that make up complex applications deployed on clusters. The tasks managed by container runtimes include container deployment, container updates, health monitoring and functions such as component scaling and failover. There are currently three leaders in container runtimes Docker Swarm, Kubernetes and Mesos. They all have their own niche and benefits that are worth considering. For this discussion, we will focus on the Kubernetes container runtime because it has become the choice of many enterprises running complex applications in containers and has a rich feature set. Your Application s Journey to the Cloud Page 3
Kubernetes Kubernetes was initially developed by Google and released as open source, garnering a large community of developers contributing to its advancement. Kubernetes is supported by most (if not all) cloud providers. In fact, Microsoft recently announced general availability of Kubernetes support on Azure. Kubernetes offers a rich feature set of capabilities, including high availability, replication, jobs, daemon sets, configuration maps, secrets and many more in development, such as stateful sets and operators. This extensive feature set demonstrates how much Kubernetes is focused on addressing real world problems, however mastering it is difficult and time consuming. The Options for Moving Applications to the Cloud There are effectively two ways to move applications to cloud. The easiest way is to migrate the application as is, without any changes to the application, however this type of migration does not provide any cloud native capabilities to your app. The second is to modernize the application to take advantage of cloud native capabilities before migration to cloud, with or without re-architecting. Lift and Shift In this approach, applications are moved to the cloud exactly as they are. Many IaaS vendors provide tools to move virtual machines that host an application to their cloud. This is the easiest method for moving workloads from an internal data center to a public cloud, but the only benefit gained is the potential cost savings from not having to manage infrastructure in your own data center. The application s behavior will remain the same which means the application s resource requirements for peak usage dictate the amount of resources that must be reserved and allocated to the virtual machine(s) hosting the application. This approach guarantees paying for resources not utilized during off peak times. The application also does not gain additional benefits such as portability, elasticity, resilience, etc. Modernizing Applications with Re-architecture An application can be modernized by re-architecting it to microservices before moving it to cloud. There are many cloud native benefits to be gained by re-architecting an application, but it is typically a timeconsuming, resource intensive exercise. Existing applications were often created by developers who are no longer with the company and new developers assigned to the project may be consumed for an extended timeframe without showing net new end user functionality (i.e., no obvious benefit to customers). This is the reason why many organizations are hesitant about re-architecting their applications for cloud native. Modernize Applications without Re-architecture However, there is another way to modernize an application. The application can gain many cloud native benefits without the considerable pain of re-architecting. With this approach, you containerize your existing application components imbedding code, configuration and data artifacts in the resulting images and deploy the application into a modern container runtime (e.g., Kubernetes, Mesos, Swarm). These new runtime environments provide the cloud native benefits of elasticity and resilience for your applications, while the containers themselves are portable to any cloud. Unfortunately, there is a large learning curve to master container technology and deploying and managing a modern container runtime environment in the cloud. For many organizations, suffering this learning curve is not a viable option. Your Application s Journey to the Cloud Page 4
As you can see, there are trade-offs with each approach. For simple applications that are no longer in ongoing development, the simple lift and shift approach may be best. However, for more complex applications with multiple middleware components, especially if they are in ongoing development, we believe the best approach is to first move to containers deployed onto a container runtime in the cloud of your choice. Application deployments will become fast and easy, speeding application release cycles and you ll get the cloud native benefits of portability, elasticity and resilience. One you are getting these benefits, it then makes sense to have your developers do a deeper dive into the application, identifying the areas of the app that are most likely to change. When these areas are identified, you can do a cost/benefit analysis to decide whether to move these areas of the app to microservices. But what about the steep learning curve to convert my application to containers and to deploy and manage a modern container runtime environment on IaaS? you might ask. Well, fortunately, we ve built the applariat Container Automation Platform to eliminate that learning curve and get your apps to containers and cloud native quickly and easily. The applariat Container Automation Platform Our product, the applariat Container Automation Platform provides automated application containerization and delivery for migrating, modernizing and managing existing applications in the cloud. applariat democratizes cloud native capabilities for existing applications by abstracting the complexity of containers and modern container runtimes, eliminating the steep learning curve to master them. With applariat, IT Operations can modernize existing applications for cloud native without requiring resources from the development team to containerize or re-architect them. Here are some of the benefits: Automated Application Containerization A wizard-like interface guides the user (usually an application architect) through a few simple steps to identify and orchestrate application components, which otherwise would require expert level knowledge of Docker containers. There is no need to manage Dockerfiles, Docker Compose files, or configuration files. Once containerized with applariat, an application is portable to any cloud. The modular structure of a containerized application in applariat allows the user to associate new code, configuration or data artifacts and create a release in minutes, without making changes to the underlying application stack. Your Application s Journey to the Cloud Page 5
Automated Container Runtime and Application Deployment applariat simplifies the complexity associated with Kubernetes cluster creation and management. You can create a Kubernetes cluster and deploy your app to the cloud of your choice in matter of minutes. In addition, the portability gained by using containers and applariat means you can just as easily deploy the app to a different cloud, should you decide to change your IaaS cloud vendor or just want to deploy another instance of the same application to a different cloud for development or testing. Once an app is deployed, the operations dashboards provide the capability to manage the deployed app. You can Stop, Start, or Delete a deployment. You can scale up or down number of component instances. You can also monitor the cluster and the deployment capacity utilization. Your Application s Journey to the Cloud Page 6
Policy-based Control and Management of Kubernetes applariat s policies simplify the complex task of managing deployments and Kubernetes cluster environments in a flexible way. The policy engine can recognize and take actions when policies are violated under specified conditions. For example, the following policies can be leveraged to keep environments efficient: Remove expired temporary deployments Scale down the development cluster when it is underutilized and scale it up as soon as load increases Production deployments must have a minimum of <2> instances for each component Production deployments can have a maximum of <7> instances for each component Users in Developer role can only deploy to development-specific Kubernetes clusters Your Application s Journey to the Cloud Page 7
Conclusion The trend for modernizing and migrating applications to cloud is accelerating rapidly as more organizations recognize the benefits of cloud native. Our recommended approach for more complex applications, especially those in ongoing development, is to start by moving them to containers and deploying them on a modern container runtime. You ll gain the cloud native benefits of portability, elasticity and resilience by doing so. Your development team can then determine if there is enough additional benefit to proceed with re-architecting portions of the app to microservices. The applariat Container Automation Platform allows you to move your apps to containers and deploy and manage them on modern container runtimes without the steep learning curve of manual methods. In addition to the cloud native capabilities already mentioned, you ll get rapid application release cycles with fast, self-service deployments directly from your existing tools (e.g., IDEs, Jenkins pipelines) and without any changes to your existing processes. Your Application s Journey to the Cloud Page 8