Runtime Platform Decisions
Goal
Once service boundaries and ownership are clear, the next question is where those services should run. This is where many microservices conversations jump too quickly to a product or platform name.
The runtime matters, but it should follow the operating model. A team that cannot operate distributed services will not become mature just because the services run in containers. A team that needs Kubernetes-level control may be frustrated by a platform that hides too much. A team that only needs managed container hosting may waste time operating a platform it does not need.
The durable idea is:
Microservice runtime platforms should match operating responsibility, not fashion.
The Short Version
The easy assumption is:
Microservices mean Kubernetes.
The better architecture question is:
How much runtime control can the team use responsibly?
Microservices can run on managed application platforms, managed container platforms, Kubernetes, virtual machines, serverless functions, or a combination of these. The pattern is not defined by the runtime. The runtime is one way to implement service deployment, scaling, networking, identity, configuration, and observability.
Use this simplified control model:
Less platform ownership <-> More platform control
Managed app platform -> Managed containers -> Kubernetes -> Virtual machines or custom platforms
The more control a platform gives, the more operating responsibility the organization usually keeps. That responsibility may be worth it, but it should be a conscious decision.
Runtime Responsibilities
Regardless of product choice, a microservice runtime has to answer practical architecture questions:
| Responsibility | Architecture Question |
|---|---|
| Packaging | How is each service built, versioned, scanned, and released? |
| Scaling | Does the service scale by requests, CPU, memory, queue depth, events, or schedule? |
| Ingress | Which services are public, private, partner-facing, or internal only? |
| Service discovery | How do services find each other without brittle hardcoded endpoints? |
| Configuration | How do services receive environment-specific settings safely? |
| Secrets | How are secrets, certificates, and keys stored, rotated, and accessed? |
| Identity | How does a service authenticate to databases, brokers, APIs, and other dependencies? |
| Networking | Which traffic should be private, segmented, inspected, or restricted? |
| Observability | Can teams trace a request or message across service boundaries? |
| Platform ownership | Who patches, upgrades, secures, and supports the runtime? |
This is why runtime choice is not a background infrastructure detail. It changes how the system is operated every day.
Managed Platforms
Managed application and container platforms are a strong fit when teams want to run services without owning every detail of the underlying orchestration layer. They can reduce platform surface area and let product teams focus on service contracts, data ownership, deployment quality, and operations.
Managed platforms are often attractive when:
The team has application and container skills but not a dedicated platform engineering group.
The services fit standard ingress, scaling, networking, and deployment models.
The organization values reduced operational overhead more than low-level platform control.
The workload can use platform-provided observability, identity, and configuration patterns.
The team wants to start with fewer moving parts.
Managed does not mean ownerless. Teams still own application health, deployment safety, configuration, access, logs, metrics, alerts, and cost.
Kubernetes Platforms
Kubernetes is a strong fit when the organization deliberately wants Kubernetes as a platform boundary. It can provide a broad API and ecosystem for scheduling, service discovery, ingress, deployment controllers, autoscaling, policy, networking integrations, service mesh patterns, and platform add-ons.
Kubernetes may be justified when:
The organization already has Kubernetes skill and platform ownership.
Multiple teams need a standardized internal platform.
Workloads need Kubernetes APIs, controllers, operators, or ecosystem tools.
Advanced networking, policy, ingress, service mesh, or add-on control matters.
The platform team can own upgrades, security baselines, capacity, observability, and support.
Kubernetes can be mature and powerful. It can also become an expensive distraction when the team mostly needs to run a handful of services with ordinary scaling and networking needs.
Example: Two Reasonable Choices
Consider a commerce platform being split into catalog, orders, payments, inventory, fulfillment, and recommendations.
A smaller product team may choose a managed container platform for the first version. Catalog and orders expose APIs. Fulfillment runs background workers. Recommendations can scale separately and degrade safely. The team gets container hosting, ingress, scaling, revision management, and logging without operating a full Kubernetes platform.
A larger enterprise may choose Kubernetes because it already has a platform engineering team, standardized cluster security, shared ingress, workload identity, network policy, deployment controllers, and observability tooling. In that environment, Kubernetes is not chosen because microservices require it. It is chosen because the organization can operate Kubernetes as a product for service teams.
Both choices can be mature. The weak choice is picking a runtime because it sounds architecturally advanced while the team has no plan for operating it.
Common Mistakes
Choosing Kubernetes before the organization needs Kubernetes control.
Treating containers as the same thing as microservices.
Ignoring platform team ownership.
Standardizing runtime before understanding workload differences.
Assuming a managed runtime removes the need for application observability and deployment discipline.
Letting every team invent different runtime patterns without shared guardrails.
If Someone Asks You
How should microservice runtime platforms be chosen?
A good answer is:
I choose the runtime by control needs and operating maturity. Managed platforms can fit teams that need reliable service hosting with lower platform overhead. Kubernetes can fit organizations that need Kubernetes APIs, ecosystem control, advanced platform standardization, and have the skills to operate it. In either case, the architecture still needs scaling, ingress, identity, secrets, networking, deployment, observability, support ownership, and cost visibility.
What You Should Remember
Runtime choice is an operating responsibility decision.
Questions to Check Understanding
What extra responsibilities come with Kubernetes?
Why might managed containers fit some microservices better?
How does runtime choice affect operations?