AWS alternative for small apps
AWS Alternative for Small Apps
Updated
Resilis can be an alternative for a small application and database whose requirements fit a managed app platform. Start with the AWS services you actually use: AWS is a broad platform, and moving an app does not replace every dependency or remove every AWS charge.
Identify what is on your AWS bill
Separate app costs from shared infrastructure. Record region, resource, usage, billing period, and pricing terms for each line item. Allocate shared costs consistently. An account-wide invoice or promotional month may not represent one app’s recurring cost.
Check EC2/ECS/Fargate, RDS, EBS, load balancers, NAT, transfer, S3, CloudWatch, and Route 53 where present. Include EKS, queues, identity, and other dependencies actually used. This checklist does not assume your app uses every service.
| Bill component | What to inventory | Pricing source |
|---|---|---|
| Compute | Region, instance/task size, hours, commitments, and idle capacity | EC2 on-demand pricing; use your actual compute product |
| PostgreSQL | Instance, storage, backup, topology, and transfer | RDS PostgreSQL pricing |
| Load balancing | Running hours and usage dimensions | Elastic Load Balancing pricing |
| NAT and networking | Gateway hours, processed data, egress, and paths between services | VPC pricing; reconcile separate transfer charges |
Compare a small app and PostgreSQL
Illustrative USD estimates before tax, for 30 days / 720 hours. Resilis app and PostgreSQL each average 0.25 billable vCPU and 0.5 GB RAM, with 10 GB database disk. Assumptions are not measurements or minimum sizes. Resilis uses binary GB; provider unit conventions can differ. Excludes app disk, egress, objects, build overage, HA, and outside infrastructure.
The Resilis row is a model for an app and one PostgreSQL database, not an equivalent EC2/RDS configuration or an AWS quote. A larger memory requirement, replicated database, or retained AWS service changes the comparison. Compare the same time period and include work required to operate each option.
Hobby: $10/month runtime credit, 200 build minutes. Pro: $50/month runtime credit, 500 build minutes. Pay the plan minimum plus eligible usage beyond credit; do not count usage twice. CPU: $0.004104/vCPU-hour; RAM: $0.00972/GB-hour; disk: $0.01/GB-day; database fee: $5/month Hobby or $10/month Pro. Build overage: $0.02/minute, separate from credit. Egress/object storage consume runtime credit. Raising database RAM to 1 GiB gives $19.98 Hobby or $24.98 Pro usage; Pro still bills $50.00.
Resilis billing source and current allowances — checked October 17, 2026.
| Service / plan | Capacity and boundary | Monthly cost / official source |
|---|---|---|
| Resilis Hobby | App + PostgreSQL; 0.5 GB RAM each; 10 GB DB disk | $16.48 usage and estimated bill; $10 credit floor |
| Resilis Pro | Same assumed resources; higher database service fee | $21.48 usage; $50.00 estimated bill |
| Your AWS application | Actual region, capacity, topology, discounts, and retained services | Calculate from the source-linked inventory above; no generic AWS total |
Check the services Resilis does not replace
Map each dependency to a destination or an explicit decision to retain it. A managed PostgreSQL database is not a substitute for every RDS engine, topology, extension, or integration. Managed app deployment does not reproduce an AWS IAM policy graph, queue, event bus, or private-network architecture automatically. Test the required behavior before changing production.
Existing Amazon S3 buckets can be connected, as can external Cloudflare R2 or Backblaze B2 storage. Connection registers accessible storage; it does not provision a new bucket or migrate objects. If you retain S3, include its storage, operations, and transfer costs. Resilis managed object storage is a separate choice at $0.035/GiB-month, prorated hourly; it consumes runtime credit, as does egress at $0.10/GB.
Treat an app-to-database path across providers as an architecture decision. Verify connectivity, latency, access restrictions, and transfer charges. Removing a NAT gateway from a diagram is not evidence its cost disappears: confirm no remaining workloads require it before scheduling decommissioning.
| Need | AWS inventory | Resilis scope |
|---|---|---|
| App hosting | EC2, ECS, or other runtime actually used | Railpack/Dockerfile app deployment through GitHub or agent workspace |
| Data | Database engine, topology, extensions, and recovery requirements | Managed PostgreSQL/MySQL; confirm configuration and restore needs |
| Object storage | Existing bucket and access policy | Managed storage tariff or external bucket connection |
| Infrastructure ownership | Current network and compute responsibilities | Managed target or connected VPS/Kubernetes with retained infrastructure duties |
Plan a migration from AWS
Rehearse with a disposable target and representative data. This checklist is not a completed app test. Assign a cutover owner and acceptance criteria.
Inventory.
Map each runtime, RDS dependency, IAM-integrated service, bucket, job, callback, and private-network dependency. Mark what stays on AWS, its owner, and its continuing bill. Identify database features and extensions before choosing the destination.
Build and configure.
Build the app from the selected repository with Railpack or a Dockerfile. Replace provider-specific configuration only after the replacement behavior has been tested. Set secrets through sensitive configuration and bind DATABASE_URL. Never commit connection strings, log credentials, or paste them into agent conversations.
Rehearse data transfer.
Check PostgreSQL versions, extensions, roles, encoding, and clients. Use pg_dump --format=custom --no-owner and pg_restore --no-owner --no-acl --exit-on-error into a new, empty test database. Resolve grants/ownership separately. Use protected PostgreSQL service and password files. Apply chmod 600 to the password file. Never use command-line passwords. Encrypt dumps and restrict access. Remove dumps under your retention policy after verification.
Verify behavior.
Compare row counts and key records. Test authentication, writes, uploads, jobs, callbacks, and connectivity. Rebuild and confirm persistence; inspect sanitized logs.
Freeze writes and cut over.
Pause all writers on AWS, including workers, jobs, and integrations. Repeat the final dump/restore and verify data before enabling destination writes. Prepare the managed-app domain and TLS. Lower the DNS TTL ahead of time where appropriate. Change DNS after serving checks. Keep one authoritative writer despite cached DNS.
Bound rollback.
Retain the source and a verified backup until acceptance. DNS can route back, but after destination writes begin, reconcile those writes before switching databases. App rollback does not restore data or reverse schema migrations. Agree on the data-loss boundary and recovery procedure before cutover; retire old resources only after approval.
Choose the compute and recovery boundary
Resilis offers managed compute or connected VPS/Kubernetes, with managed PostgreSQL/MySQL. External S3, R2, and B2 connections register existing buckets. They do not provision or migrate buckets. MCP setup needs no paid plan; authentication and operation entitlements apply. Connected infrastructure retains its bill and duties. Custom domains are unavailable on connected compute and S3-backed static sites.
Verify entitlements, backups, restore points, and a restore rehearsal. Lower estimates do not establish equivalent availability, support, recovery time, or capacity.
When AWS is the better fit
Stay when your application depends on AWS services, network controls, compliance requirements, or operational features that the proposed destination does not satisfy. Existing expertise, committed-use discounts, and shared infrastructure can also change the economics. Include migration engineering, duplicate operation during testing, and the risk of losing a required integration.
To reduce an AWS bill, first inspect unused resources, sizing, and retained dependencies within your current architecture. Migration is one option, not the only one. Request a workload estimate using a sanitized resource list and a complete comparable billing period; do not send account secrets or private application data.
Frequently asked questions
Will moving an app remove the entire AWS bill?
No. Retained databases, buckets, domains, monitoring, shared networks, and other services can keep generating charges. Decommission only after checking dependencies, data retention, and approval requirements.
Why is there no single AWS monthly price?
Region, resource selection, topology, usage, discounts, and shared infrastructure vary. A made-up small-app total would hide these choices. Use your actual AWS inventory and the linked official pricing pages.
Can I keep S3 while moving compute?
External S3 connections are supported for accessible existing buckets. Verify permissions and application behavior, and retain the S3 bill in the comparison. Connecting a bucket does not migrate its contents.
Evaluate your own workload
Use your resource measurements, required features, and recovery needs to decide. Request a workload estimate, review pricing, or try the recorded Node.js and PostgreSQL example.