Internal Developer Platform vs PaaS
What's the Difference and Which One Does Your Engineering Team Actually Need?
PaaS and internal developer platforms are not the same thing, but most teams treat them as if they are. That confusion leads to either staying on a platform too long or jumping to something the team is not ready for.
A PaaS runs your application on the vendor’s infrastructure. An internal developer platform automates how your team provisions and operates infrastructure inside your own cloud account. The distinction is not just technical. It affects cost, compliance, and how much control your engineering team actually has over what runs in production.
This post covers what each one does, where PaaS typically stops working, and how to figure out which one fits your team right now.
TL;DR
A PaaS deploys your code on the vendor’s infrastructure. An IDP automates how your team provisions and operates infrastructure inside your own cloud account.
PaaS works well for small teams with simple stacks. It starts breaking down around 10 to 20 engineers, multiple services, or any compliance requirement.
PaaS compute typically costs 2 to 5x more than equivalent cloud resources.
Building an IDP from scratch with Backstage takes 6 to 12 months and requires 3 to 15 engineers to maintain.
Managed IDPs exist specifically for teams that have outgrown PaaS but don’t have the capacity to build a platform from scratch.
What Is the Difference Between an Internal Developer Platform and a PaaS?
The core difference is where your infrastructure lives and who controls it.
With a PaaS, the vendor owns the infrastructure. You deploy code onto their platform, and they handle the runtime, networking, scaling, and maintenance. You work within whatever constraints they have set. Heroku, Render, Railway, and Fly.io all follow this model.
With an internal developer platform, the infrastructure runs inside your own cloud account. The IDP is the automation and workflow layer on top of it. Developers get a self-service path to deploy services and provision environments without touching the underlying infrastructure directly. The platform team sets the guardrails. Developers work within them.
The CNCF defines an internal developer platform as an integrated collection of capabilities defined around the needs of the platform’s users, not the vendor’s convenience. That distinction matters when evaluating options.
What PaaS Gives Your Engineering Team
PaaS removes the infrastructure setup problem entirely. You connect a GitHub repository, configure a few environment variables, and you have a running application. No VPC setup, no container orchestration, no server provisioning. For a small team focused on shipping product, that is genuinely useful.
Most PaaS platforms give you:
Automatic deployments triggered by code pushes
Managed runtimes for common languages and frameworks
Built-in SSL, load balancing, and basic autoscaling
Add-on marketplaces for databases, caching, and monitoring
Preview environments for pull requests
The developer experience is fast to set up and easy to understand. A new engineer can push their first deployment on day one without knowing anything about the underlying infrastructure.
That simplicity is the point. PaaS makes sense when your team is small, your stack is straightforward, and infrastructure complexity is not yet a bottleneck. The trade-off is that you are working within the vendor’s model. Their networking, their compute, their scaling behavior, their pricing. As long as your requirements fit inside those constraints, it works.
Where PaaS genuinely earns its place is in the early stages of a product. You are not hiring a DevOps engineer to set up EKS. You are not writing Terraform to provision a VPC. You are shipping features. The platform handles deployments, restarts failed containers, and scales up when traffic increases. For a team of three to five engineers, that is a reasonable trade.
The problems appear later. PaaS platforms abstract the infrastructure, but that abstraction has hard edges. You cannot configure custom networking. You cannot control where your data lives at the subnet level. You cannot integrate with internal tooling that the add-on marketplace does not support. Heroku, for example, does not support persistent storage on standard plans, limits applications to a single port, and requires containers to boot in under 60 seconds. These are not edge cases. They are constraints that growing teams hit regularly.
When your requirements start pushing against those edges, the platform stops being an accelerator and starts being a ceiling.
What an Internal Developer Platform Gives Your Engineering Team
An internal developer platform gives developers a self-service path to deploy and operate services without depending on a DevOps engineer for every infrastructure request. The infrastructure still exists and runs on your cloud account. The IDP is what makes it accessible to the rest of the team.
In practice, a production-grade IDP on AWS provisions the following inside your account when a new environment is created:
Dedicated VPC with private and public subnets
Managed EKS cluster with EC2 compute nodes
Load balancer for inbound traffic
Prometheus, Loki, and Grafana for metrics, logs, and dashboards
Managed AWS services on demand: RDS, S3, SQS, Elasticache
CI/CD pipeline wired to branch pushes
SSL certificates, encrypted secrets, and role-based access control
Developers push code. The platform handles everything underneath. No Dockerfile, no Terraform, no Helm required from the developer’s side.
The operational difference shows up most clearly during onboarding and environment provisioning. On a PaaS, a new engineer is productive quickly but is constrained by what the vendor supports. On an IDP, a new engineer gets the same self-service experience but against infrastructure your team controls. They can spin up a staging environment, deploy a service, and check logs without filing a ticket or waiting on anyone.
The platform team sets the golden paths once. Every developer on the team benefits from them without needing to understand the infrastructure underneath. When something breaks at the Kubernetes level, the platform handles recovery. Engineers who need deeper access can get it. Engineers who don’t, never have to think about it.
That split is what makes IDPs useful at scale. The abstraction is not hiding complexity permanently. It is putting it in the right hands.
PaaS vs Internal Developer Platform:
Infrastructure Control, Customization, and Team Fit Compared
Comparing PaaS and an IDP on features alone misses the point. The real difference is in what your team can and cannot do when requirements change. Here is how they stack up across the dimensions that actually matter.
The networking and compliance rows are where most teams feel the gap first. VPC isolation, custom subnets, and IAM boundaries are not optional for teams handling sensitive data or working toward SOC 2. PaaS platforms either don’t support these controls or lock them behind enterprise tiers.
Why Engineering Teams Outgrow PaaS
The shift rarely happens all at once. It starts with one requirement the platform cannot meet, and then another, until the workarounds cost more time than the platform saves.
The most common breaking points:
Networking constraints
PaaS platforms abstract networking entirely. That works until you need VPC peering, private subnets, static IPs, or custom security group rules. Heroku’s standard plans have no private networking at all. Getting it requires upgrading to Private Spaces, which is an enterprise-only feature with a significant price jump. Teams building B2B products that need to connect to customer VPCs hit this wall early.
Compliance requirements
SOC 2, HIPAA, and similar frameworks require infrastructure isolation, audit trails, and control over where data is processed and stored. Standard PaaS tiers run on shared infrastructure. You cannot tell an auditor exactly where your data lives or demonstrate VPC-level isolation on a shared runtime. Heroku’s HIPAA-compliant offering requires Shield Private Spaces, available only on enterprise plans.
Multi-service complexity
PaaS works well for a single application. At 10 or more services, environment management becomes a problem. Keeping dev, staging, and production environments consistent across services, managing shared dependencies, and coordinating deployments across a growing codebase is difficult on a platform that treats each application as an independent unit.
Observability gaps
Most PaaS platforms give you application logs and basic CPU and memory metrics. That is enough for simple workloads. It is not enough when you need distributed tracing, custom metrics, or correlated logs across services. TRM Labs, running on Render, had to build a custom log ingestion pipeline with OTEL Collectors just to get logs into their observability stack because Render’s log drains support only a single destination.
The Real Cost Difference Between PaaS and an IDP
A typical small production app on Heroku runs two Standard dynos at $50 per month, a Postgres Standard-0 plan at $50 per month, Redis Mini at $15 per month, and basic monitoring add-ons at $15 to $30 per month. That puts you at $130 to $160 per month for a minimal setup. Postgres plans escalate quickly in practice — Standard-2 runs $200 per month, and most production workloads land somewhere in between. Add-ons stack faster than teams expect.
The same setup on AWS sits closer to $130 to $220 per month depending on usage. Two t3.medium instances run around $60 per month on-demand. RDS for a production database with storage and automated backups is realistically $50 to $150 per month, not $30. An Application Load Balancer starts at $20 per month but increases with traffic. AWS can be 30 to 70% cheaper than Heroku depending on scale and usage patterns — the gap is smaller at low scale and wider as you add services.
Here is how the numbers compare across a typical mid-size production setup:
The savings are real, but the more honest case for moving to an IDP is not just compute cost. It is what you cannot get on PaaS at any price point: VPC isolation, custom networking, compliance controls, and infrastructure you actually own.
The other cost CTOs consistently underestimate is what it takes to build an IDP from scratch. Self-hosting Backstage requires 3 to 5 dedicated engineers to manage infrastructure, handle upgrades, and maintain the codebase, according to Roadie’s survey of the Backstage community. Some organisations staff teams of 12 people just for Backstage. Total cost of ownership for a self-hosted Backstage installation can exceed $1 million per year in operational overhead at scale.
That is the real trade-off. PaaS removes upfront infrastructure cost but adds a compute premium that compounds with scale. Building your own IDP removes the compute premium but adds significant engineering overhead. Managed IDPs sit in between: raw cloud compute pricing, without the internal build cost.
For teams under 10 engineers with a straightforward stack, PaaS is still the cheaper option when you factor in engineering time. The math shifts once you are scaling services, handling sensitive data, or selling to enterprise customers.
When Teams Move from PaaS to an Internal Developer Platform
The decision to move off PaaS rarely comes from a single problem. It usually builds up over several months, one workaround here, one missing feature there, until the cost of staying outweighs the cost of switching.
Two cases illustrate how this plays out in practice.
Algolia was running on Heroku when an enterprise customer required crawling from a fixed IP address for firewall whitelisting. Standard Heroku does not support static outbound IPs. The alternative was Heroku Private Spaces, an enterprise-only tier that came with a significant price increase for a single networking requirement. The team moved to Kubernetes instead. One infrastructure gap triggered a full platform migration.
Checkly had been on Heroku since 2016. By 2022 the platform had become a recurring operational burden. Upgrading PostgreSQL versions required Heroku support involvement. Disk size plans were fixed, requiring a full plan upgrade just for storage. Essential database tasks needed senior engineer involvement every time. Moving to AWS resolved all three issues and reduced the dependency on senior engineers for routine maintenance.
Both cases point to the same pattern. The trigger is rarely cost alone. It is cost combined with a capability the platform cannot provide: networking control, compliance requirements, enterprise customer demands, or operational flexibility.
If any of this sounds familiar, you are likely already in the transition phase, not approaching it.
The common signals that indicate a team is ready to move:
Running multiple services, often 10 or more, with inconsistent environment configurations across dev, staging, and production
Hitting networking constraints that require workarounds or enterprise tier upgrades
Facing a compliance audit that requires VPC isolation or audit trails
Selling to enterprise customers who require dedicated infrastructure or BYOC deployments
Spending a significant portion of engineering time, often 20% or more, on deployment tooling and infrastructure maintenance
Onboarding new engineers taking longer than expected due to infrastructure complexity
When several of these apply at the same time, teams are usually closer to needing a shift than they realize.
If your team is currently on Heroku and evaluating the move to AWS, this migration guide covers the exact steps involved.
The BYOC Problem
Spinning Up Dedicated Infrastructure for Every Enterprise Customer
For teams selling to enterprise customers, PaaS creates a specific problem. Enterprise deals often require dedicated infrastructure inside the customer’s own cloud account. On a standard PaaS, that is not possible. On a shared runtime, there is no path to VPC isolation per customer, no way to provision inside a customer’s AWS account, and no mechanism for the customer to maintain control over their own data residency.
SuprSend, a notification infrastructure company, ran into this directly. Every new enterprise deal required spinning up dedicated infrastructure manually. The engineering team was spending significant time on per-customer setup that had nothing to do with the product. Using an IDP, they provisioned per-customer AWS environments in under 30 minutes using the same git-push workflow their engineers already used. The operational overhead that previously blocked enterprise deals was removed without changing how the engineering team worked. Read the case study here
Should You Build Your Own IDP or Buy One?
Once a team decides to move toward an IDP, the next question is whether to build it internally or use an existing platform. Both are valid paths. The right answer depends on your team size, engineering capacity, and how much time you can spend on platform work versus product work.
Building in-house
Gives you full control. You can design golden paths around your exact stack, integrate with internal tooling, and own every layer of the platform.
The most common starting point for teams figuring out how to build an internal developer platform is Backstage, the open source internal developer platform originally built by Spotify and now a CNCF project. Self-hosting the Backstage internal developer platform requires 3 to 5 dedicated engineers to manage infrastructure, handle upgrades, and maintain the codebase, according to Roadie’s survey of the Backstage community. Getting a usable instance into production typically takes 6 to 12 months. Total cost of ownership can exceed $1 million per year at scale.
Building from scratch makes sense in specific cases:
Compliance requirements so unusual that no managed platform can meet them
Multi-cloud or hybrid infrastructure with complex dependency graphs
Regulatory constraints that prevent sending any metadata to a third-party vendor
Outside these cases, a full DIY build adds significant overhead without adding proportional value, even for teams with dedicated platform engineering capacity. The time spent maintaining platform infrastructure is time not spent on the actual developer experience improvements that make an IDP worth having.
Buying a managed IDP
The best internal developer platforms handle infrastructure provisioning, observability, CI/CD wiring, and environment management out of the box, running entirely inside your own AWS account. Engineers get a self-service path to deploy services without touching Terraform or Helm. The platform team sets guardrails once. Every developer benefits from them without needing to understand what is running underneath.
This approach makes sense when:
Your engineering team’s time is better spent on product work
You do not have a dedicated platform team
You need production-ready AWS environments quickly without accumulating infrastructure debt
You want infrastructure your team controls, without the cost of building the tooling around it
The hybrid approach
This is what most mature platform teams end up adopting, including those with dedicated platform engineering staff. Use a managed IDP as the foundation for environment provisioning, CI/CD, and observability. Build custom tooling only for the parts that are genuinely specific to your organisation, such as internal approval workflows, custom cost allocation logic, or proprietary security controls.
This keeps the platform team focused on high-value work rather than maintaining infrastructure that already exists elsewhere. The best internal developer platform for most teams is not the one with the most features. It is the one that removes the most friction without creating new kinds of it.
Not sure which approach fits your team? Book a quick demo and see how LocalOps handles this in practice.
FAQs
1. Internal Developer Portal vs Platform: What’s the Difference?
An internal developer portal is a UI layer that surfaces information about existing infrastructure, service catalogs, documentation, ownership. Backstage is a portal. An internal developer platform provisions and manages cloud resources. It gives developers a self-service path to deploy services, spin up environments, and access observability without filing a ticket. A portal shows you what exists. A platform automates what happens. Most teams searching for the best internal developer platforms end up landing on Backstage first and discovering this distinction only after months of setup.
2. Do you need a platform engineering team to run an internal developer platform?
For a DIY IDP built on an open source internal developer platform like Backstage, yes. You need engineers who can maintain the codebase, manage upgrades, and build integrations. Platform engineering and internal developer platform adoption are closely linked in enterprise organisations for this reason. But managed IDPs change the equation. A small team without a dedicated platform function can run a production-grade IDP on AWS if the platform handles provisioning, observability, and CI/CD out of the box. The platform engineering investment shifts from building infrastructure to configuring a platform that already exists.
3. Can PaaS handle compliance requirements like SOC 2 or HIPAA?
Standard PaaS tiers cannot. Most run on shared infrastructure without VPC isolation, which is a baseline requirement for SOC 2 and HIPAA audits. Heroku’s HIPAA-compliant offering requires Shield Private Spaces, an enterprise-only tier with a significant price jump. An AWS internal developer platform provisions dedicated VPCs, private subnets, encrypted volumes, and role-based access controls inside your own account by default. For teams heading toward a compliance audit, this is usually one of the clearest signals that PaaS is no longer the right fit.
4. At what point does PaaS become more expensive than running on your own cloud?
It depends on scale, but the gap typically becomes significant around 10 or more services. At that point PaaS compute markups, per-seat charges, and add-on costs add up faster than the raw AWS equivalent. A typical mid-size production setup on Heroku runs $400 to $800 per month. The equivalent setup on AWS via an IDP runs $150 to $350 per month. The internal developer platform architecture on AWS also includes observability, private networking, and compliance controls that would require enterprise PaaS tiers to replicate.
5. Is an internal developer platform only for large engineering teams?
No. The common assumption is that IDPs are enterprise tools requiring large platform engineering teams and months of setup. That was true when building one meant assembling Backstage, Argo CD, Terraform, and Prometheus from scratch. Managed IDPs have changed this. A team of 10 engineers on AWS can run a production-grade internal development platform without a dedicated DevOps hire. The shift is less about team size and more about infrastructure complexity. Once you are running multiple services, selling to enterprise customers, or facing compliance requirements, an IDP starts making sense regardless of headcount.
Conclusion
PaaS is not a bad choice. It is a starting point. For small teams moving fast with a simple stack, it does exactly what it promises. The problems start when your requirements outgrow what the vendor supports, and by the time most teams realize that, they have already spent months working around the limitations.
An internal developer platform does not replace PaaS simplicity. The best ones preserve it while giving your team infrastructure they actually control. Developers still push code. Environments still spin up automatically. The difference is that the infrastructure runs in your AWS account, compliance controls are built in from the start, and enterprise customers can bring their own cloud without requiring manual setup for every deal.
The question is not really IDP vs PaaS. It is whether your current platform is still working for you or quietly becoming the ceiling.
If you are at the point where PaaS is starting to feel like a constraint rather than a convenience, LocalOps is worth looking at. It provisions production-grade AWS environments without Terraform, Helm, or Dockerfiles, and runs entirely inside your own AWS account.
Book a Demo — Walk through how environments, deployments, and AWS infrastructure are handled in practice for your setup.
Get Started for Free — Connect an AWS account and stand up an environment to see how it fits into your existing workflow.
Explore the Docs — A detailed breakdown of how LocalOps works end-to-end, including architecture, environment setup, security defaults, and where engineering decisions still sit.



