The real price of a backend in São Paulo: $529 on AWS vs $19 on Skapi

In the last article we said a Skapi project in São Paulo runs at a fraction of what a traditional server backend costs there, and that getting there was hard. Here is the bill, line by line: $528.71 a month for the traditional stack, $19 for the same backend on Skapi, and how we made that work.

Skapi Flag of Brazil

Why São Paulo is expensive

AWS charges more in São Paulo than in most of its regions, and it is not a rounding error. Here is what the same building blocks cost in São Paulo (sa-east-1) and in N. Virginia (us-east-1), the region most tutorials silently assume you are in. List prices, on demand, as of September 2026.

Building block São Paulo N. Virginia São Paulo costs
App server, t3.medium, per hour $0.0672 $0.0416 62% more
Database, RDS db.t3.medium Multi-AZ, per hour $0.302 $0.145 108% more
Database storage, gp3, per GB-month $0.219 $0.115 90% more
Server disk, EBS gp3, per GB-month $0.152 $0.080 90% more
NAT gateway, per hour $0.093 $0.045 107% more
Application load balancer, per hour $0.034 $0.0225 51% more
File storage, S3 Standard, per GB-month $0.0405 $0.023 76% more
Data transfer out, per GB $0.150 $0.090 67% more
CDN delivery, CloudFront, per GB $0.110 $0.085 29% more
CDN requests, CloudFront HTTPS, per 10,000 $0.022 $0.010 120% more
Email, SES, per 1,000 messages $0.10 $0.10 the same
User accounts, Cognito Lite, per monthly active user $0.0055 $0.0055 the same

CDN prices follow the viewer, not the origin, so a Brazilian audience pays the South America rate wherever the files live.

Two things stand out. The parts that run all month, servers, databases and gateways, carry the steepest premium. The parts that only cost when someone uses them, email and identity, cost the same everywhere. Keep that split in mind. It is the whole story.

The bill for a traditional backend

Let's price a modest production app. Not a toy: 50,000 registered users, 20,000 of whom sign in each month, 3 GB of database, 120 GB of uploaded files, 100 GB served through the CDN each month, and 5,000 transactional emails. That is the exact ceiling of Skapi's Standard plan, so the comparison at the end is fair.

Built the traditional way in São Paulo, with the redundancy you would want for something real, the bill looks like this:

Line What it is Per month
App servers 2 × t3.medium, one per availability zone $98.11
Server disks 2 × 30 GB gp3, plus daily snapshots $13.20
Load balancer Application Load Balancer, one capacity unit $32.85
NAT gateway Outbound access for servers in private subnets $69.75
Database RDS PostgreSQL db.t3.medium, Multi-AZ, 20 GB $229.22
File storage S3, 120 GB and its requests $6.68
CDN CloudFront, 100 GB and 2 million requests $15.40
API traffic out 30 GB of responses to the internet $4.50
Email SES, 5,000 messages $0.50
User accounts Cognito Lite, 20,000 active users, first 10,000 free $55.00
DNS and monitoring Route 53 zone, CloudWatch basics $3.50
Total $528.71

You can cut that down. Run one server in a public subnet, drop the load balancer and the NAT gateway, run the database in a single availability zone, and it comes to about $256 a month. It also means the site goes down every time you deploy, reboot, or the database enters its maintenance window, and there is nothing to fail over to when the one server dies.

For scale: the same production stack in N. Virginia comes to about $311. São Paulo adds 70% to the bill for the privilege of being close to your users.

List prices, on demand, before discounts. A one-year reservation trims the server and database lines by roughly a third, in exchange for paying for capacity you may never use. AWS's always-free allowances would cover the CDN and transfer lines at this size; they are shown at list price because they are the lines that grow with success.

What the bill does not show

The monthly figure is the easy part. Every line in it is also a thing you have to build, and then keep.

Servers. Choose an image, harden it, open the right ports and only those, install a runtime, write a deploy pipeline, put TLS in front of it, and then keep it patched for the rest of its life. Two servers means doing everything twice and keeping them identical. Autoscaling means an image pipeline on top of that.

The database. A subnet group, a parameter group, a security group, a backup window, a maintenance window, a failover test you actually run, connection pooling so a traffic spike does not exhaust it, and a plan for the day the disk fills up. Multi-AZ doubles the price, and it is the only version you would put a business on.

Files and the CDN. A bucket with public access blocked, a policy that lets your servers write and nobody else, presigned URLs so users can upload without going through your servers, CORS rules, lifecycle rules. Then a CloudFront distribution with origin access control, cache policies, invalidations, a custom domain, and a certificate that, for CloudFront, must be issued in N. Virginia whatever region your files live in.

The network. A VPC, public and private subnets in two zones, route tables, an internet gateway, a NAT gateway, and IAM roles narrow enough to be safe and wide enough to work. None of this serves a single request. It is the price of admission.

And then the months after. Patches, certificate renewals, disk alarms, the 3 a.m. page, the database upgrade you have been putting off. If one developer spends even four hours a month keeping this running, that time alone costs more than the entire Skapi plan below, at any rate you would pay a developer in São Paulo, Buenos Aires or Bogotá.

Automated emails, compared

Email is the line that looks free and is not. SES charges $0.10 per thousand messages, so 5,000 emails cost fifty cents in São Paulo, exactly as in Virginia. The cost is everything around that number.

Before SES will send a real email you verify a domain, publish DKIM, SPF and DMARC records, and apply to leave the sandbox with a written description of how you handle bounces and complaints. Then you build that handling: notification topics, a suppression list, retries. Then the actual emails: a verification flow with a code that expires, a welcome email, an invitation, each one a template, a trigger and a queue so a burst of signups does not hit a rate limit. If you want to send a newsletter, add subscriber storage, a subscribe and unsubscribe flow that complies with the law in every country you send to, and a sending pipeline that paces itself.

On Skapi that whole list is a settings page. Verification, welcome and invitation emails go out from your project's own sending address with no code. Newsletters have subscribers, subscription and unsubscribe links, and a send button. Standard includes 5,000 sends a month and Premium 50,000, and the deliverability plumbing is done once, for everyone, and kept warm.

The same backend on Skapi

Same users, same data, same traffic, same city:

Monthly cost of the same backend in São Paulo: AWS production $528.71, AWS bare minimum $255.85, Skapi Standard $19.00$0$100$200$300$400$500US dollars per month, São Paulo, list pricesAWS, production: $528.71 a month$528.71AWSproduction2 servers,Multi-AZ database,ALB, NATAWS, bare minimum: $255.85 a month$255.85AWSbare minimum1 server, 1 zone,down on everydeploySkapi Standard: $19.00 a month, 28 times less than AWS production$19.0028 times lessSkapiStandardRedundant,minutes to set up,kept by us

28 times less than the production stack. 13 times less than the one that goes down when you deploy.

Over a year, that is $6,345 against $228. The difference is not a discount. It is a different way of running a backend.

Here is what each side gives you for the money, one line at a time. First the cheapest of each: the AWS bare minimum next to Skapi Standard.

AWS, bare minimum Skapi Standard
Price per month $255.85 $19
Database RDS PostgreSQL with 2 vCPU and 4 GB of memory, one zone, 20 GB disk: $114.61 3 GB, included
File storage S3, 120 GB: $6.68 120 GB, included
Web hosting Served from your one server, or from a bucket you configure Included, with a subdomain and HTTPS
CDN and bandwidth CloudFront 100 GB, 2 million requests, 30 GB of API traffic: $19.90 100 GB, included
User accounts Cognito Lite, 20,000 active users: $55.00 50,000 accounts, included
OpenID login Set up by you in Cognito Included
Automated emails SES, 5,000 messages: $0.50. Templates built by you 5,000 sends a month, included
Newsletters Built by you: list, opt-out link, sending 5,000 subscribers
Realtime data Built by you, on the one server Included
Push notifications Built by you Included
Webhooks Endpoints you write and host Included
API secret keys Kept on your server Included
App server 1 × t3.medium, 30 GB disk with snapshots: $55.66 None to run
Monitoring and DNS CloudWatch and Route 53: $3.50 Usage meters in the dashboard
Redundant No: one server, one zone Yes
Backend deploys The site goes down each time None needed
Scaling A bigger server, by hand Automatic
Setup A day Minutes
Upkeep Yours Ours

And the full version of each: the AWS production stack next to Skapi Premium. To be generous to AWS, we added database overage to Premium until it matches the 20 GB database disk of the AWS stack, even though Premium already outdoes that stack everywhere else: five times the files, four times the bandwidth, ten times the emails.

AWS, production Skapi Premium
Price per month $528.71 $94 ($89 plan, $5 overage)
Database RDS PostgreSQL with 2 vCPU and 4 GB of memory, two zones, 20 GB disk: $229.22 20 GB: 10 GB included, 10 GB more at $0.50 per GB, $5.00
File storage S3, 120 GB: $6.68 600 GB, included
Web hosting Served from your servers, or from a bucket you configure Included, with a subdomain and HTTPS
CDN and bandwidth CloudFront 100 GB, 2 million requests, 30 GB of API traffic: $19.90 400 GB, included
User accounts Cognito Lite, 20,000 active users: $55.00 100,000 accounts, included
OpenID login Set up by you in Cognito Included
Automated emails SES, 5,000 messages: $0.50. Templates built by you 50,000 sends a month, included
Newsletters Built by you: list, opt-out link, sending 50,000 subscribers
Realtime data Built by you, across two servers Included
Push notifications Built by you Included
Webhooks Endpoints you write and host Included
API secret keys Kept on your servers Included
App servers 2 × t3.medium, 2 × 30 GB disk with snapshots: $111.31 None to run
Load balancer One capacity unit: $32.85 None to run
NAT gateway For the private subnets: $69.75 None to run
Monitoring and DNS CloudWatch and Route 53: $3.50 Usage meters in the dashboard
Redundant Yes: two zones, set up and tested by you Yes
Backend deploys Rolling, through a pipeline you build None needed
Scaling Rules you write and tune Automatic
Setup Days Minutes
Upkeep Yours Ours

That is $94 against $528.71. Even with the overage counted, Premium costs more than 5 times less.

The prices in each AWS column add up to the total at the top of it. The lines without a price are the ones the bill leaves out: they are paid in time instead. Both AWS columns are the bills from earlier in this article, sized for 120 GB of files and 20,000 active users. Sized for what Premium includes (600 GB of files, 400 GB of bandwidth, 50,000 emails, 40,000 active users) on the same servers, the AWS production bill comes to about $728 a month.

Standard is $19 a month in São Paulo, the same as in Oregon, Paris, Mumbai, Singapore or Seoul. For that you get the database, file storage, CDN, web hosting, user accounts with OpenID login, automated emails and newsletters, realtime data, API secret keys and webhooks, with room for 50,000 user accounts, 3 GB of database, 120 GB of files and 100 GB of bandwidth. Premium is $89 for 100,000 accounts, 10 GB of database, 600 GB of files and 400 GB of bandwidth. A small project runs on Free for nothing at all.

And all of that is before counting a single hour of anyone's time. The four hours a month from the section above cost more than the Skapi plan on their own.

How we got the price down

We are not going to draw you our architecture, and we do not have secret hardware. What we have is a set of rules we did not break, and in São Paulo they matter more than anywhere else.

Nothing idles. Look back at the first table. The steep premiums all sit on things billed by the hour whether or not anyone is using them. A traditional backend in São Paulo pays for 730 hours of servers, 730 hours of database and 730 hours of gateway every month, at 3 a.m. on a Sunday as much as at noon on payday. Every part of Skapi is metered by use: a request, a record read, a gigabyte stored, a message sent. When your users are asleep, so is your bill. That is what serverless means to us, and we applied it to every resource in the chain, not just the code.

Fixed costs are shared, not repeated. The expensive lines above, the redundant database, the load balancer, the gateway, are fixed costs a single project pays alone. In Skapi those costs exist once per region, and every project in that region shares them. Your project's share of a fixed cost is close to zero, and that, more than any clever trick, is where the fraction comes from.

Bytes go to the cheapest place that can hold them. Records live in a database that charges for what you store and read, not for a machine that waits. Anything large, files, uploads, hosted sites, record payloads over 32 KB, goes straight to object storage and is served from the CDN, so a download never touches a compute layer at all. Database storage is the most expensive byte in São Paulo, so we keep as few of them there as we can, and we made that change on every plan.

Identity and email are services, not servers. User accounts live in a managed directory built for that job, with verification, password reset and multi-factor flows already there. Email is a queue, with delivery, bounces, complaints and sender reputation handled once for the whole platform. These are the parts that cost the same in every region, and they are the parts nobody should rebuild per project.

Scale is a consequence, not a plan. Because every part is metered, a spike in traffic is a larger bill for that hour, not an outage, and a quiet month is a smaller one. There is no instance size to pick, no capacity to reserve, no failover to rehearse. The pieces that would go down are the pieces we do not run.

Security comes with the shape. There are no servers in your project to patch, no SSH, no open ports. Every request is authenticated and authorized on its own, every component talks to the next with the narrowest permission that works, data is encrypted in transit and at rest, and private records can be encrypted in the browser under your user's own password. A project's data never leaves the region it was created in. For Latin American teams, that last line often matters as much as the price.

Why São Paulo was hard

Here is the part we promised to explain. The rules above are how Skapi works everywhere. São Paulo tested every one of them.

Serverless does not escape the regional premium. It meets it on a different bill. Every meter we rely on runs faster in São Paulo: storage per gigabyte, requests per million, bytes out per gigabyte. Some managed services cost more there, some arrived later than in other regions, and a few of the shared pieces that make a fixed cost disappear had to be planned again so they would still disappear at São Paulo prices. Keeping the plan price flat, $19 in São Paulo exactly as in Oregon, meant wasting nothing: fewer hops per request, caching wherever it pays for itself, moving bytes as little as possible, and checking that no component, anywhere in the chain, sits idle on your behalf.

It was the hardest region we have opened, and we opened it on purpose. We want developers in Brazil and across Latin America to have affordable, efficient, solid access to backend infrastructure in their own region, at the same price as everyone else, without the tax the region has quietly charged for years. A student in Recife and a startup in Santiago should be able to run something real for the price of a few coffees a month. Now they can.

Where to start

Create a project, choose São Paulo, and run the numbers against your own AWS bill. If the difference is not obvious in the first month, we would like to hear about it.

← Back to all articles