Skip to content

Why you should postpone your Kubernetes journey

Published: at 06:00 PM

Even though I like Kubernetes, I think we should not use it as a magical solution for every problem and every new project/product. As a reminder, your goal is to build a product that solves the problem for your users. To help you on this journey, you need the most simple, least time-consuming infrastructure.

Here are a couple of reasons why you should postpone your Kubernetes journey:

You have a simple and straightforward application that does not need expensive resources or high-level services.

You are not deeply committed to microservices.

You have a small user base, low load, and relatively simple architecture.

You don’t think about vendor lock-in. Kubernetes is kind of vendor lock-in itself but more on this next time.

You understand that scaling is an issue for tomorrow.

You understand that Kubernetes has a steep learning curve, and you don’t want to use Kubernetes just because everyone else does.

You are a small team, and investing your time, effort, and money in Kubernetes could be overkill.

If not Kubernetes, then what?

Let’s look at three major cloud providers and a few options to start with.

AWS

App Runner

AWS App Runner is a fully managed service that makes it easy for developers to quickly deploy containerized web applications and APIs at scale and with no prior infrastructure experience required.

Notes and Links:

Currently supported regions: Europe (Ireland), Asia Pacific (Tokyo), US East (N. Virginia), US East (Ohio), US West (Oregon)

Current supported configurations (cpu/memory): 1vCPU/2GB, 1vCPU/3GB, 1vCPU/4GB, 2vCPU/4GB

Accessing container images only from AWS ECR (private and public)

https://docs.aws.amazon.com/apprunner/latest/dg/service-source-image.html

https://aws.amazon.com/apprunner/faqs/

ECS with EC2

Amazon ECS is a fully managed container orchestration service that makes it easy for you to deploy, manage, and scale containerized applications.

Notes and Links:

Docker is the only container platform

No additional charge for Amazon ECS; paying for AWS resources only

https://aws.amazon.com/ecs/features/

Fargate

AWS Fargate is a serverless and pay-as-you-go compute engine that lets you focus on building applications without managing servers.

Notes and Links:

ECS concepts apply

There are no EC2 to manage

Cost based on vCPU, memory, Operating Systems, CPU Architecture, and storage

https://aws.amazon.com/fargate/pricing/

https://aws.amazon.com/fargate/getting-started/

Lambda

Lambda is a computing service that lets you run code without provisioning or managing servers. You can also package and deploy Lambda functions as container images.

Notes and Links:

Supports only Linux-based container images

https://docs.aws.amazon.com/lambda/latest/dg/images-create.html

https://aws.amazon.com/blogs/aws/new-for-aws-lambda-container-image-support/

Azure

Azure Container Instances

Develop apps fast without managing virtual machines or having to learn new tools—it is just your application in a container running in the cloud.

Notes and Links:

Does not provide autoscaling, load balancing, and certificates

Positions itself between Azure Functions (FaaS) & Azure Kubernetes Service (Cluster PaaS)

4 CPU and 16GB RAM is max for a container group

Pay for the CPU and memory usage while it runs

Azure Container Apps

Azure Container Apps enables you to run microservices and containerized applications on a serverless platform.

Notes and Links:

Powered by Kubernetes but no direct access to Kubernetes APIs

Supports service discovery, traffic splitting, long-running processes and can run background tasks

Optimized for running general-purpose containers, especially for applications that span many microservices deployed in containers

Billed based on resource allocation measured in vCPU seconds (vCPU-s) and gibibyte seconds (GiB-s) and the total number of requests processed each month

Pricing has two modes: Active and Idle. Check out: https://azure.microsoft.com/en-gb/pricing/details/container-apps/?ocid=AID3042118

App Service / Web App for Containers

Run containerized web apps on Windows and Linux

Notes and Links:

You need Azure App Service with a Service Plan

Container images from Azure Container Registry, Docker Hub, or a private Docker repository

https://learn.microsoft.com/en-us/troubleshoot/azure/app-service/faqs-app-service-linux

GCP

Cloud Run

Run containerized applications in GCP without the overhead of managing the underlying infrastructure.

Notes and Links:

Use cases: https://cloud.google.com/run#section-5

Pay when your code is running, billed to the nearest 100 milliseconds.

It can also be deployed into Anthos GKE clusters

Pricing: https://cloud.google.com/run#section-13

Container-Optimized OS VM

Container-Optimized OS from Google is an operating system image for your Compute Engine VMs that is optimized for running Docker containers.

Notes and links:

https://cloud.google.com/container-optimized-os/docs/concepts/features-and-benefits

https://cloud.google.com/container-optimized-os/docs/concepts/features-and-benefits#limitations

https://cloud.google.com/compute/docs/containers/deploying-containers

Let me know if I missed something. Feel free to leave a comment below the blog post.


Originally published in the ProductDock blog section