Back to Blog
Jovica Zoric

3 minutes read

Why you should postpone your Kubernetes journey

Jovica Zorić

Chief Technology Officer

It looks like containers are here to stay. They are everywhere, from personal laptops to public cloud and private data centers. And these days, when talking about containers, it’s difficult or almost impossible, not to mention Kubernetes. Kubernetes is an open-source system for automating the deployment, scaling, and management of containerized applications.

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.

Jovica Zoric

Jovica Zorić

Chief Technology Officer

Jovica is a techie with more than ten years of experience. His job has evolved throughout the years, leading to his present position as the CTO at ProductDock. He will help you to choose the right technology for your business ideas and focus on the outcomes.


Related posts.