Platform.sh (now part of the Upsun product family) has been a reliable hosting platform for PHP, Python, and Node.js applications for years. It offers strong multi-environment support, built-in services, and enterprise compliance features. However, its YAML-based configuration system, complex resource-unit pricing model, and steep onboarding curve have prompted many development teams to explore simpler Platform.sh alternatives.
This article compares Platform.sh with Out Plane across configuration complexity, build systems, pricing, and developer experience. It is written for teams actively evaluating their hosting options — not to dismiss Platform.sh, but to help you determine when a simpler platform is the right fit.
Why Developers Look for Platform.sh Alternatives
Platform.sh solves complex hosting problems. The question is whether your hosting problems are actually complex.
For teams with sophisticated multi-branch deployment requirements, large PHP monoliths, or strict compliance needs, Platform.sh delivers genuine value. But a significant portion of the developer community encounters the platform's complexity before they encounter its benefits.
YAML Configuration Overhead
Deploying an application on Platform.sh requires at minimum three YAML configuration files:
.platform.app.yaml— application definition, build hooks, runtime configuration.platform/routes.yaml— URL routing, redirects, and service binding.platform/services.yaml— database and cache service configuration
Each file has its own schema, its own conventions, and its own failure modes. Teams new to Platform.sh spend considerable time reading documentation before their first successful deployment. Teams returning to the platform after time away often need to relearn which setting lives in which file.
This is not a design flaw — it reflects the platform's depth. But for straightforward web applications, three configuration files before you see a deployed container is a meaningful friction cost.
Resource-Based Pricing That Is Hard to Predict
Platform.sh pricing is based on resource units rather than simple compute hours or per-minute metering. You select a plan and allocate CPU, RAM, and storage to each container. The pricing scales with those allocations across every environment.
In practice, many developers find it difficult to predict monthly costs before they have deployed and measured their application. The available documentation explains the model clearly, but translating it into an expected invoice requires understanding how your application uses resources across each environment — and doing that calculation before deploying is challenging.
Onboarding Complexity
Platform.sh uses its own CLI tool as the primary interaction interface. Deployments go through the platform CLI or a direct Git remote. Understanding the platform's concepts — environments, services, routes, and build hooks — requires upfront investment before productive work can begin.
New team members joining a project on Platform.sh face a meaningful learning curve. Unlike platforms that map to familiar concepts (GitHub integration, web console, Dockerfile), Platform.sh has its own model that must be learned on its own terms.
The Upsun Transition
Platform.sh has been transitioning its product offering under the Upsun brand. For teams evaluating the platform today, it is not always clear which interface to use, which documentation applies to which product, and how existing Platform.sh accounts relate to the Upsun offering. This transition-period confusion is a reasonable concern for teams that want stable tooling and clear documentation.
Limited Docker Support
Platform.sh uses a proprietary build system. While the platform supports containers internally, your Dockerfile is not the primary interface. Teams that have standardized on Docker-based workflows, multi-stage builds, or container image CI pipelines need to adapt their existing practices to fit the Platform.sh model rather than the other way around.
Comparison: Platform.sh vs. Out Plane
| Feature | Platform.sh | Out Plane |
|---|---|---|
| Configuration | YAML files (3+ config files) | Web console or outplane CLI |
| Deployment | platform CLI / Git | GitHub connect + Deploy |
| Build System | Proprietary | Docker + Buildpacks |
| Pricing | Resource units (complex) | Plan base plus per-minute compute |
| Free Tier | Trial only | 14 day free trial on Starter and Pro |
| Database | Built-in services | Managed PostgreSQL |
| Environments | Multiple per project | Per-application |
| SSL | Automatic | Automatic |
| Custom Domains | Yes | Yes |
| Docker | Limited | First-class support |
| Monitoring | Built-in | Built-in logs and metrics |
| PHP Support | Excellent | Via Buildpacks or Docker |
| Scaling | Manual resource allocation | Manual instance count, up to 10 by plan |
| Enterprise | Yes (mature) | Yes |
Pricing Comparison
Platform.sh Pricing
Platform.sh pricing is resource-based and environment-aware. The entry-level plan starts at $10 per month for a single environment with minimal resource allocation. Production-grade plans that include adequate CPU, RAM, and additional environments cost meaningfully more.
Each environment on Platform.sh is a full stack replica — it runs its own application containers and services. This is a powerful feature for branching workflows but it also means that every active environment contributes to your monthly bill. Teams running five or ten development branches simultaneously pay for compute across all of them.
The resource allocation model requires you to pre-configure how much CPU and RAM each container receives. Allocating too little causes performance problems. Allocating too much increases cost without benefit. Tuning this allocation accurately requires operational experience with the specific application under realistic load.
Out Plane Pricing
Out Plane uses a flat monthly plan with compute metered by the minute. Starter is $9 a month and Pro is $29, each including a monthly usage allowance in the base price, and anything above that allowance is metered on the same invoice.
Starter and Pro both open with a 14 day free trial, so you can put a real application in front of real traffic before committing. SSL certificates, custom domains, CI/CD, logs, monitoring, and bandwidth are included rather than billed as extras.
Because billing follows running time rather than a resource allocation, you do not pre-configure RAM or CPU envelopes per environment before deploying. You choose an instance count instead, up to your plan ceiling of 1 on Starter, 5 on Pro, and 10 on Growth.
For teams running staging and development environments alongside production, one Pro plan covers up to 100 applications, so a new environment adds compute minutes to the same bill rather than a new subscription.
Key Differences
Configuration: YAML Files vs. Web Console
Platform.sh requires you to define your application, routes, and services in version-controlled YAML files. Changes to infrastructure are made by editing those files and pushing. This approach has real advantages for teams that want infrastructure-as-code, auditability, and Git-driven change management.
Out Plane's configuration lives in the web console at console.outplane.com. You connect a GitHub repository, select a branch, choose Dockerfile or Buildpack as the build method, and deploy. Environment variables, scaling settings, and domain configuration are all managed through the UI.
Neither model is objectively better. YAML configuration gives you more fine-grained control and Git history for infrastructure changes. Web console configuration has lower overhead and a shorter path to first deployment. The right choice depends on your team's workflows and the complexity of what you are deploying.
Build System: Proprietary vs. Docker and Buildpacks
Platform.sh uses its own build system, which is informed by the configuration in .platform.app.yaml. You specify a build flavor (for example, php:8.2 or nodejs:20), define build hooks, and the platform handles the rest. This system works well within the Platform.sh ecosystem and supports a wide range of language runtimes.
The constraint is portability. A Platform.sh application configuration does not translate directly to a Dockerfile or a standard container image. If you want to run your application locally with the same build process, or push the image to a container registry, you need a separate setup.
Out Plane supports both Dockerfiles and Paketo Buildpacks as first-class deployment methods. A Dockerfile you write once runs identically in local development, in CI, and in Out Plane. Buildpacks automatically detect your language and framework if you prefer not to write a Dockerfile. Either way, the build artifact is a standard OCI-compatible container image.
For teams that have already adopted Docker-based workflows, this is a meaningful operational difference.
Pricing: Resource Units vs. Per-Minute
Platform.sh requires you to commit to resource allocations — defined CPU and RAM — for each container in each environment. You pay for those allocations whether or not your application uses them fully.
Out Plane measures compute by the minute on top of a plan base that already includes a monthly usage allowance. You do not plan capacity per container in advance. You set an instance count and the platform bills the minutes those instances run.
The practical impact is most visible on multi-environment setups. A staging application is one more app under the same plan rather than another full stack replica with its own allocation, and because instances stay up instead of sleeping, opening that staging URL after a quiet week costs you no cold start.
PHP and CMS Hosting
Platform.sh has deep support for PHP applications. Laravel, Symfony, WordPress, and Drupal are well-supported with first-class documentation, pre-built configuration examples, and a runtime that has been tuned for PHP workloads over many years. If your primary stack is PHP and you want a hosting provider with deep PHP expertise and proven patterns, Platform.sh has a strong track record here.
Out Plane deploys PHP applications through Buildpacks or Docker. The Laravel deployment guide covers the full process. For most PHP frameworks, Paketo Buildpacks handle language detection and dependency installation automatically. Custom PHP configuration, extensions, and version pinning are handled through the Dockerfile or Buildpack configuration.
When Platform.sh Still Makes Sense
Platform.sh has genuine advantages in certain situations. A fair evaluation of alternatives means acknowledging them.
PHP-heavy projects with complex service dependencies. Platform.sh's built-in support for Solr, Elasticsearch, Vault, and other services makes it straightforward to deploy applications that depend on a non-trivial service stack. Its PHP runtime configuration options are extensive and well-documented.
Multi-environment branching workflows. Platform.sh's core feature is the ability to create a full application stack for each Git branch. Development branches get their own database, cache, and application container with a single command. For teams that review feature branches with live data or need isolated test environments per PR, this capability is genuinely valuable and difficult to replicate elsewhere.
Existing Platform.sh expertise on the team. If your team has engineers who know Platform.sh well — who understand the configuration files, the CLI, and the deployment model — the onboarding cost is already paid. Switching platforms resets that investment.
Enterprise teams with existing Platform.sh contracts. Organizations running large, stable applications on Platform.sh with enterprise support agreements have limited incentive to migrate. The operational risk of migration does not justify the change unless costs are prohibitive or specific features are blocking work.
When Out Plane Is a Better Fit
Docker-based workflows. If your team already uses Dockerfiles across development, CI, and deployment, Out Plane treats Docker as the primary deployment method rather than an alternative path. Your existing container configuration works without modification.
Non-PHP applications or mixed-language services. Out Plane's build system is language-agnostic. Node.js, Python, Go, Rust, Java, and Ruby applications are all first-class deployments. See the Heroku alternative guide for a broader view of supported stacks.
Simpler pricing. If you want billing that tracks actual usage rather than committed resource allocations, a plan base plus per-minute compute removes the need to tune resource envelopes before deployment. You deploy and pay for what runs.
Faster onboarding. Connecting a GitHub repository and deploying takes a few minutes without reading a configuration schema. Teams iterating quickly or evaluating hosting options benefit from reduced setup time.
Transparent costs across environments. If you run multiple environments, they all sit under one plan, up to 100 applications on Pro, and each adds only the compute minutes it runs. Platform.sh charges for allocated resources in each active environment regardless of traffic.
Starting a new project without platform lock-in. Because Out Plane uses standard Dockerfiles and Buildpacks, your application is not tied to a proprietary build system. Moving between platforms in the future requires no build configuration changes.
Migration from Platform.sh
Migrating an application from Platform.sh to Out Plane is a practical process for most web applications. The key steps are export, adapt, deploy, and cut over.
Step 1: Export Environment Variables
In the Platform.sh CLI, retrieve your current environment variables:
platform var:list --environment mainExport the values you need and prepare them for import into Out Plane's environment variable editor.
Step 2: Export Your Database
Platform.sh provides built-in database dump tooling. For PostgreSQL:
platform db:dump --environment main --relationship databaseThis creates a local dump file you can restore after provisioning a managed database on Out Plane.
Step 3: Prepare a Dockerfile or Verify Buildpack Detection
If your application already has a Dockerfile, it is ready to use on Out Plane without changes.
If you are using Platform.sh's build hooks and no Dockerfile exists, review the build commands in your .platform.app.yaml and translate them into a Dockerfile. For many common frameworks, Paketo Buildpacks will detect the language and framework automatically — you may not need a Dockerfile at all.
A minimal Node.js example:
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]For PHP applications like Laravel, see the Laravel deploy guide for a complete Dockerfile example with PHP-FPM and Nginx.
Step 4: Connect and Deploy on Out Plane
- Go to console.outplane.com and sign in with GitHub.
- Select your repository and branch.
- Choose Dockerfile or Buildpack as the build method.
- Add your environment variables using the Raw Edit input.
- Click Deploy.
Out Plane builds your application, deploys it, and provides a URL. Subsequent pushes to your configured branch trigger automatic redeployment.
Step 5: Provision and Restore Your Database
Create a managed PostgreSQL instance from the Out Plane console. Once provisioned, restore your dump:
pg_restore --no-acl --no-owner -d your-connection-string dump.sqlUpdate your application's DATABASE_URL environment variable to point to the new instance.
Step 6: Update DNS
Add your custom domain in the Out Plane console, then update your DNS CNAME record to point to your Out Plane application URL. SSL is provisioned automatically once DNS propagates.
After verifying the application is running correctly, you can decommission the Platform.sh environment.
For a broader comparison of deployment workflows and platform choices, see the Render alternative guide.
Summary
Platform.sh is a capable platform with a long track record, especially for PHP applications and teams that need per-branch environment isolation. Its configuration depth and enterprise maturity are real advantages in the right context.
For teams that find YAML configuration overhead, resource-based pricing, and proprietary build tooling more friction than value, simpler alternatives exist. Out Plane offers per-minute compute billing, native Docker and Buildpack support, and a web console and CLI that get applications deployed quickly — without requiring three configuration files before the first deployment.
Starter and Pro each open with a 14 day free trial, so you can evaluate the platform before committing. The migration path from Platform.sh is straightforward: export your data, add a Dockerfile or rely on Buildpack detection, connect your repository, and deploy.
Ready to simplify your hosting setup? Get started with Out Plane and start your 14 day free trial.



