Aeion Platform vs AWS & Heroku
AWS charges $0.90/GB for RDS snapshots, requires you to build multi-tenant isolation from scratch, and has no built-in backup verification or compliance reporting. Heroku's team tier is $25/user/month with no built-in billing lifecycle. Aeion Platform ships subscription management, Aegis point-in-time restore, temporal backup retention, and SOC2/ISO27001 compliance reports of platform infrastructure for one flat fee.
Head-to-Head Comparison
| Capability | Aeion Platform | AWS (EC2/RDS/Lambda) | Heroku |
|---|---|---|---|
| **Subscription Lifecycle** | Built-in (upgrade/downgrade/cancel/reactivate/trial) | Build yourself (Stripe + Lambda) | Basic (team plans only) |
| **Multi-Tenant Isolation** | Built-in (per-tenant DB + Redis) | Build yourself (VPC, IAM, SG per tenant) | Per-app (not multi-tenant) |
| **VPS Provisioning** | Built-in (Hetzner/Contabo/DigitalOcean/Vultr via pluggable provisioning) | DIY (boto3 + CloudFormation) | Not applicable (managed) |
| **Point-in-Time Restore** | Aegis (pgBackRest-based, sidecar restore pipeline) | RDS PITR ($0.90/GB) | Not built-in |
| **Backup Verification** | Weekly restore-and-verify per tenant | DIY (manual testing) | Not built-in |
| **Temporal Retention** | 7/30/90+ days + sweep logging | S3 lifecycle rules (DIY) | Not built-in |
| **Compliance Reports** | Monthly SOC2/ISO27001 HTML/JSON | DIY (AWS Artifact) | Not built-in |
| **Real-Time Auto-Upgrade** | Usage threshold → plan escalation | DIY | Not built-in |
| **Realtime Tier Management** | Built-in (connection limits, auto-upgrade thresholds) | DIY (API Gateway + WAF) | Not built-in |
| **Tenant Notifications** | Built-in (email/Slack/webhook) | SNS DIY | Not built-in |
| **Tenant Lifecycle** | Built-in (suspend/activate/archive) | DIY (EC2 stop/start) | Not applicable |
| **Pricing Model** | Flat monthly rate | Per-resource (EC2 + RDS + bandwidth + snapshots) | Per-user ($25/user/mo) + dyno hours |
| **Total Cost at 500 tenants** | Flat fee | $5,000-$15,000/mo (estimate) | $25/user/mo (scales linearly) |
The Infrastructure Tax on AWS
AWS's cost model is usage-based — you pay for what you use. For a multi-tenant SaaS platform running on AWS:
Monthly AWS costs for 500 tenants:
- RDS PostgreSQL (Multi-AZ): ~$0.345/GB-hour × 1,000 GB × 730 hours = $252,000/month
- EC2 instances for app servers: $0.10/instance-hour × 50 instances × 730 = $3,650/month
- S3 for backups: $0.023/GB × 50,000 GB = $1,150/month
- RDS snapshots (PITR storage): $0.90/GB × 10,000 GB = $9,000/month
- Data transfer: variable, but typically $2,000-$5,000/month
- Total: $268,000+/month just for AWS infrastructure
That's before you add:
- Build team to implement multi-tenant isolation (6 months, $300K)
- Build subscription management (Stripe integration + webhooks, 3 months, $150K)
- Build backup verification (weekly restore testing, 2 months, $100K)
- Build compliance reporting (SOC2 audit trail, 3 months, $150K)
- Ongoing maintenance of everything you built (1 engineer, $15K/month)
Aeion Platform: Included in Aeion OS platform fee. No per-tenant DB instances. No snapshot storage charges. No EC2 management.
Multi-Tenant Isolation: The Hard Problem
The problem: In a multi-tenant SaaS, one tenant's bug shouldn't be able to take down another tenant's data. AWS provides raw compute and storage — you're responsible for building the isolation.
AWS's isolation model:
``` Per-tenant VPC (if you do it right): → Each tenant: separate VPC, separate subnet, separate SG, separate IAM role → 500 tenants = 500 VPCs × $0.045/VPC-hour = $16,425/month → Plus per-tenant RDS = $0.345/GB-hour × 1,000 GB × 500 = $173,500/month
Shared DB (if you cut corners): → All tenants in one DB → catastrophic data leakage risk → One misconfigured query → all 500 tenants see each other's data ```
Aeion Platform isolation model:
Per-tenant DB schema (PostgreSQL schema per tenant)
→ One database, 500 schemas
→ AeionContext automatically scopes all queries to tenantId
→ No cross-tenant data access possible
→ Cost: same as single-tenant, not 500x
This is why multi-tenant BaaS platforms exist. Building this yourself on AWS takes 6-12 months of engineering. Aeion Platform ships it on day one.
Aegis PITR vs AWS RDS Point-in-Time Restore
AWS RDS PITR:
- Enabled per-RDS instance ($0.023/GB for backup storage)
- Restore creates a new instance — you can't restore to the existing one
- Recovery time: 30-60 minutes for a 500GB database
- No selective table restore — full instance only
- No backup verification — you test it manually (if you remember)
Aeion Aegis PITR:
- pgBackRest (default) — runs continuously alongside Postgres for point-in-time recovery
- Customer-managed Postgres — also supported, for teams running their own external database
- Selective table restore — extract specific tables at a specific timestamp instead of restoring the whole instance
- Pre-restore safety snapshot — an automatic pg_dump is taken before any restore, so the restore itself is never a one-way door
- Recovery time: 5-15 minutes for a 500GB database
- Selective restore: specific tables at a specific second, not full instance
- Weekly restore-and-verify: automated, not manual
The Aegis advantage: Pick the affected tables and the exact second to roll back to, and Aegis extracts and merges just those tables into the target tenant's database — the rest of the database is never touched, so nothing else in production is disturbed by the restore.
AWS equivalent: You can't. RDS PITR restores the entire instance. If a bug corrupted 3 tables at 2:47 AM, AWS forces you to restore the full DB from the last backup — losing everything between the backup and 2:47 AM.
Subscription Management: Build vs Buy
Building on AWS (with Stripe):
typescript
// You'd need to build:
const subscriptionService = new SubscriptionService();
await subscriptionService.onWebhook(stripeEvent);
// → Which plan did they upgrade to?
// → What entitlements does the new plan have?
// → Update tenant config with new entitlements
// → Emit platform.subscription.upgraded event
// → Queue provisioning job to apply changes
// → Send confirmation email
// → Update billing records
This takes 3-4 months to build correctly. And you still need to handle:
- Trial expiry (daily cron)
- Cancellation (immediate vs end-of-period)
- Payment failure → dunning sequence
- Reactivation (resume suspended instances)
- Upgrade → downgrade → cross-grade flows
Aeion's subscription lifecycle service handles all of this natively:
- Upgrade a plan — one call updates the subscription record, grants the new plan's entitlements, emits an event, and queues the provisioning job that applies the change.
- Cancel a subscription — one call sets it to cancel at the end of the current billing period (or immediately, if requested); provisioning automatically suspends the instance when the period ends.
- Reactivate — one call clears the cancellation flags and resumes any suspended instances.
Heroku's Per-User Pricing Doesn't Scale
Heroku Teams: $25/user/month. At 100 users: $2,500/month. At 500 users: $12,500/month. At 5,000 users: $125,000/month.
Heroku doesn't have:
- Multi-tenant isolation (it's per-app, not per-tenant)
- Subscription management (you manage billing yourself via Stripe)
- VPS provisioning (it's managed — you can't bring your own cloud)
- PITR (Heroku Postgres has point-in-time restore but it's basic)
- Compliance reporting (no SOC2/ISO27001 reporting built-in)
- Tenant notifications (no built-in alert system)
- Real-time tier management (Heroku Pipelines ≠ real-time call management)
If you need multi-tenant infrastructure (managing 50+ customer accounts, each with their own data, billing, and provisioning), Heroku's team model doesn't help. You still need everything that Aeion Platform provides — you just have to build it on top of Heroku, adding to the cost.
The Compliance Gap
SOC2 and ISO27001 require evidence of:
- Backups running on schedule
- Backup restore tested periodically
- Retention policies enforced
- Audit logs retained for required period
- Incident response documented
AWS provides: Raw storage and compute. You build the evidence package yourself. An auditor reviewing your AWS setup needs:
- Access to your AWS account (security risk)
- Manual extraction of backup logs from CloudWatch
- Manual verification of S3 lifecycle policies
- Manual testing of restore procedures
- Manual compilation of all evidence into a report
Aeion Platform: generates the evidence package automatically. Monthly HTML/JSON reports uploaded to S3 alongside backups. Auditors get pre-signed URLs — no AWS account access needed.
Automated backup verification: Weekly restore-and-verify runs automatically. Results go into the compliance report. "Untested backups are not backups" — this closes the gap that trips up most SOC2 audits.
Real-Time Tier Auto-Upgrade
The problem with no auto-upgrade: A tenant on a 2,000-call-minute plan runs a 3-hour all-hands (1,800 minutes). They have 200 minutes left. At the current rate, the meeting gets cut off 10 minutes before it ends. The tenant is frustrated. They're considering switching to a competitor.
Real-time auto-upgrade:
```typescript // Monitors usage at 5-minute intervals // When usage hits 80% of limit: // → Auto-upgrade to next plan tier // → Notify tenant (email + slack + webhook) // → Do NOT interrupt the current session
// Prevents bill shock and tenant churn // Tenants are grateful when their meeting doesn't cut off ```
AWS equivalent: You build this yourself. CloudWatch alarms → SNS → Lambda → Stripe API → upgrade plan. Plus you need to handle the edge cases (what if upgrade fails? what if tenant already at max plan? what if they're mid-session?).
The Aeion Platform advantage: It's built into the real-time module. Plan entitlements include realtime.maxCallMinutes and realtime.autoUpgradeThreshold. The service reads the config and handles the rest.
Frequently Asked Questions
Either. Aeion Platform can run on a customer-controlled AWS / GCP / Azure VPC, on Hetzner / Contabo / DigitalOcean / Vultr VPS via our provisioning adapter, or on a managed Aeion-hosted instance. You bring your own cloud account if data residency matters; we bring the orchestration layer (multi-tenant DB, Redis, queues, observability, backup, compliance reporting).
Per-tenant Postgres schemas (or per-tenant databases on Enterprise) plus per-tenant Redis keyspaces. Tenant ID is injected at the kernel via the database wrapper — no query can leak across tenants by accident. Connection pooling, query budget, rate limits, and queue fairness all per-tenant. Same SOC2 control set whether you have 5 tenants or 5,000.
Trial / upgrade / downgrade / pause / cancel / reactivate flows with proration; usage-based metering tied to Stripe Billing; auto-upgrade at usage thresholds (e.g., crosses 10K MAU → Standard plan); seat add/remove with mid-cycle billing; failed-payment dunning with branded customer comms. AWS gives you the raw building blocks; Heroku gives you team plans only. Aeion ships the whole lifecycle.
Aegis PITR maintains a recoverable window of ~30 seconds RPO via continuous WAL streaming to BYOB S3 (Cloudflare R2, Backblaze, AWS, Wasabi, etc.). On VPS loss, restore-to-new-host walks through Aegis Hub: pick target host → pick target time → apply. RTO is typically 10-30 minutes depending on data size. AWS RDS PITR costs $0.90/GB and requires manual restore orchestration; Heroku doesn't offer PITR at all.
Open data layer: PostgreSQL with Drizzle migrations (export-friendly), Redis, S3-compatible object storage. Schemas + collections + workflows are JSON/TS — export any time. We're not a black-box BaaS; you can hand the data to any team running Postgres + Redis and they'll be productive. Aegis exports + audit logs are signed JSON, portable to any compliance attestor.
Flat monthly rate, not per-resource. AWS's quote-as-you-grow model produces unpleasant surprises at scale (especially RDS snapshots, NAT gateway egress, and CloudWatch). Heroku scales linearly with users. Aeion's commercial model is per-tenant or per-installation — predictable, modeled in advance, no surprise CloudFront bills.