Docker and Kubernetes based platforms for Public and Private Cloud
The Cloud Adoption Imperative
Customer satisfaction is the cornerstone for a successful enterprise product. To achieve that goal, software product owners are adopting a continuous improvement approach. Product offerings are enhanced using new-age technologies with innovation, speed, and reliability. As a result, ensuring better experience and value to their enterprise customers at a fraction of cost.
In today's evolving technology landscape, independent software vendors (ISVs) are embracing the cloud as an essential development paradigm for their customers. According to Gartner prediction, by 2022, more than 75% of global organizations will be running containerized applications in production, which is currently at 30%, a significant increase. ISVs are disrupting software development framework processes with cloud-native tools. Agile development process with CI/CD approach is becoming the new norm for faster and continuous release of software products. Leading companies such as Amazon and Netflix deploy code thousand times a day, gaining the first-mover advantage with faster go-to-market. Just like ISVs, even bigger enterprises are leveraging the cloud paradigm to modernize their legacy IT systems and applications, thereby becoming agile, scalable and cloud-ready.
This multi-part blog will help enterprises and ISVs build a strategy for containerization and its deployment. You will get insights on:
- The necessity of Container Orchestration technology for enterprises and ISVs
- Various Container Orchestration platforms available on Public and Private Clouds
- The selection mechanism for Container Orchestration Platform for your Cloud Apps
The blog will touch upon various platforms such as Amazon Elastic Container Service, Amazon Elastic Kubernetes Service, Azure Kubernetes Service as well as Google Kubernetes Engine. Additionally, it will also talk about Private Cloud-based deployment platforms such as Red Hat OpenShift, Pivotal Cloud Foundry.
Target Audience
This blog series is for people who perform product development and associated activities with roles such as CTOs, CIOs, Product Owners (VP of Engineering), Product Managers, Product Developers, DevOps/Release Professionals, and Cloud Administrators.
Pre-requisite
High level or general understanding of Docker and Kubernetes concepts is necessary. Please refer to supporting links in the References section at the end of this blog if you would like to know more. You can also get in touch with our SMEs by sending email to PE@Xoriant.com who can guide you on the Containerization journey.
The Cloud Conundrum - Native vs. Agnostic Architectures
With the promise of cloud-native environments becoming high, the transition can be daunting. Inherently, whenever we try to build a cloud-based application, the very first question that always gets asked and needs a convincing answer is –
“Whether to build a Cloud-Native or Cloud Agnostic Architecture?”
Cloud-Native Architecture
Typical multi-tier Cloud Native architecture uses a variety of discrete cloud provider managed services. These services are stitched together by the proprietary mechanisms offered by the cloud vendor. The essential aspects of Cloud Native architecture are ease of horizontal scaling, high availability and resiliency of the cloud managed services offered by the public cloud vendors. Due to this, Cloud Native Architectures are inherently Resilient Architectures. With the server-less paradigm, the operational cost is comparatively less than the Server-based paradigm. But all this comes at the expense of Cloud vendor lock-in making your product less portable. Additionally, posing challenges, in case you decide to move to a different cloud - public or private.
Cloud Agnostic Architecture
Cloud Agnostic architectures mostly use Open Source tools and technologies. Cloud apps of this type of architecture use infrastructure services of Public Cloud providers. These applications are easy to port to other Public Cloud Service providers because they are not using any specific Cloud provider’s Managed Services. For example, a typical multi-tier application with Web Server, Application Server and Relational Database such as PostgreSQL will use multiple AWS EC2 instances/VMs for the deployment. As a result, they ensure easy porting to Microsoft Azure or Google Cloud Platform (GCP) just by modifying the deployment infrastructure options. But for these type of cloud apps, it’s difficult and expensive to build architectures that are highly available and resilient, contrary to the Cloud Native counterparts.
So, the question arises –
“How do you make Cloud Agnostic architectures
Horizontally Scalable, Highly Available and Resilient?”
The Journey from Virtualization to Containerization
Genesis of Containerized Applications
The relentless advancement in operating systems technology has led us into areas of Virtualization, which in-turn has advanced into Containerization.
Virtualization helped businesses to consolidate OS resources such as CPU, System Memory and Disk Storage. Although this ensured virtualization of hardware resources, every VM resulted in carrying the overhead of copy of an entire Operating System along with system libraries, binaries, and applications. Thus, resulting in the consumption of a considerable memory and disk space, making them bulky and slow to boot. Containers were created to overcome this overhead.
Image Source: http://www.tothenew.com/blog/why-cios-should-adopt-containers-technology/
A container is a software unit that packages application and its dependencies together. Multiple containers can run on the same underlying operating system as processes, sharing the OS kernel with other containers. Container images consume considerably less space than VMs. One physical machine can handle more containerized applications as compared to VMs. In other words, the containerized application platforms are designed to improve speed, reliability, and performance over VMs.
ISVs started to build and package applications using Container technology. This, in turn, required a management system for Container-based application execution.
Need for Container Orchestration Platforms
Cloud Agnostic applications when deployed as containerized applications, lack necessary plumbing support, and services for Horizontal Scaling, High Availability, and Resiliency. To provide this support, enterprises need Container Orchestration Platform. The main activities performed by such container orchestration platforms include:
- Easy provisioning and deployment of Containers
- Externalized configuration of Containerized apps
- Continuous monitoring of Container health
- Launch a fixed number of Container instances
- Scaling number of Container instances
- Expose Container hosted services to the outside world
Available Container Orchestration Platforms/Engines
Image Source: https://www.g2.com/categories/container-orchestration
Containerized applications can be deployed on a variety of Container Orchestration or Deployment Platforms. The following table summarizes such options across target Public and Private Cloud Infrastructure,
Public Cloud Infrastructure
For ISVs that wish to deploy their Containerized products on Public Clouds, following is a summary of what Public Cloud Providers offer.
- Amazon Web Services: AWS offers Elastic Container Service (ECS) which comes with two flavors. One based on user-created infrastructure components such as EC2 VM instances and other one named Fargate, which makes things easier by managing infrastructure component for you. For Kubernetes, AWS offers Elastic Kubernetes Service (EKS) that can be used to deploy Kubernetes-based applications.
- Microsoft Azure: Azure provides quite similar offerings as AWS. This includes Azure Container Instances (ACI) for quick deployment of Docker container-based apps without having to create any servers. For deploying Kubernetes-based applications, there is the Azure Kubernetes Service (AKS).
- Google Cloud Platform: GCP offers Google Kubernetes Engine (GKE), which is based on Open Source Kubernetes Platform developed by Google themselves.
Private Cloud Infrastructure
For enterprises and ISVs who continue to deploy inside on-premise Private Clouds, the following are some of the options that they can explore:
- Red Hat OpenShift: Enterprises can use Red Hat OpenShift (PaaS) platform deployed on their Private Cloud. Red Hat OpenShift platform is based on Kubernetes and provides a robust option for on-premise deployments.
- Pivotal Cloud Foundry: PCF platform enabled with Docker can be an option. Pivotal has very recently introduced the alpha version of Pivotal Application Service on Kubernetes.
Enterprises can also create physical server-based Kubernetes or Docker Swarm clusters on their Private Clouds.
Deep Dive into Container Orchestration Platforms
Based on our experience with above Container Orchestration Platform options and alternatives, the upcoming blogs will cover,
- Details of various Container Orchestration Platforms available on Public and Private Cloud
- Selection Criteria for Container Orchestration Platforms with real-world customer scenarios
READ MORE
How To Select A Modern Container Orchestration Platform For Your Cloud Apps? Part 2
If you’d like to explore a bit more, check out the Product Modernization Hub and how your business can leverage the cloud t catalyze growth with Xoriant’s cloud enablement offerings.
You may also reach out to us at PE@Xoriant.com and our experts will schedule a FREE product assessment session to provide you with a custom approach as per your needs.