Running costs of a SaaS

Last updated:

My attempt at answering the age-old question: how much does it cost to start and run a (bootstrapped) software company?
service description cost / unit
Hexadecimal I monitor all my websites using Hexadecimal. Since workers (machines that perform uptime and certificate checks) are separated from the rest of the infrastructure, I will still get notified if Hexadecimal goes down. $16 / month
Fastmail Business email. Snappy web interface and your support requests don't go to /dev/null. $5 / month
Sendgrid Transactional email. Generous free plan, but I have had a few problems in the past. $0 / month
Cloudflare Domain registration and DNS servers for the root domain and all subdomains. I use CNAME flattening so that Netlify can point to the root domain. Caveat: you can't change name servers (NS records) once your domain is administered by Cloudflare Registrar, which is bummer. Switched from iwantmyname (they're also great). $8.03 / year
Netlify The site you're on is hosted on Netlify. They handle certificate renewals and the whole asset pipeline. The static site is comprised of plain old HTML and CSS files, with sprinkles of JavaScript for interactivity (I use nanoc to generate a static site). Result: ~3KB web pages (when gzipped) that load in less than 500ms. The website works fine on potatoes^H^H^H low-powered phones, and I get the accessibility and SEO out of the box, although I don't support ancient browsers. $0 / month
Heroku Hosting a Rails 6 app. All pages are rendered on the server. They take care of certificate renewals. It is very easy to get up and running on Heroku, but costs and arm and a leg once you start growing (not that I worry too much about it). Also, application metrics, such as response time, throughput, memory usage, and a few Ruby specific ones. This obviates the need to use a third-party application performance monitoring SaaS. $7 / month
Redis Cloud Managed Redis hosting, since AWS ElastiCache doesn't allow outside access to the cluster (technically, you can connect either via SSH tunnel or a proxy NAT instance, but it is too duct tapey). $10 / month
Papertrail Aggregating logs from all servers. For privacy and performance reasons, I don't use third-party analytics, so it is the only window inside the app. I set up alerts that notify me whenever logs match some predefined regex rules (e.g., new signup). $0 / month
Sentry Exception tracking. I used to rely on logs for error tracking (e.g., "fatal OR exception OR error") but got tired of dumb bots hitting the same (nonexistent) endpoints, which kept triggering false alerts. $0 / month
AWS EC2 4 background workers distributed globally. Running on t3a.micro with one Elastic IP attached to each of them. The daily cost also incorporates mysterious EC2-Other category. I am using $5000 credit from the Stripe Atlas to cover my monthly bill (on top of the free tier). Once I run out of credits, I will spread out my compute instances across multiple VPS providers. For the remaining EC2 boxes, I will probably buy them as reserved instances. AWS' billing is pretty opaque, their UI leaves a lot to be desired, and bandwidth charges are preposterous. If you're just starting out and want to rent a virtual machine, consider VPS providers first. $1.40 / day
AWS RDS Managed Postgres hosting. db.t3.micro with Multi-AZ failover. Backups are retained for 18 days. Encryption at rest and in transit. I use a custom parameter group that forces SSL on all connections. $1.20 / day
AWS CloudFront CDN for static assets (for the web app only). $0 / month
AWS SNS Sending SMS messages. One downside is that I can't purchase fixed phone numbers, which means I can't whitelist those numbers on my phone (for the Don't Disturb mode on iOS). ¯\_(ツ)_/¯
Github Hosting for git repos. I used to have two different repos (a static site and a Rails app), but now they live under the same repo and share static assets (using symlinks). I configured Netlify and Heroku to automatically deploy code once I push to the master branch of those repos. I deploy to workers manually, using Capistrano. $0 / month
Notion I use Notion for keeping track of my backlog (kanban board), internal wiki, and jotting down random article ideas. $0 / month
Slack I have built and currently maintain a Slack app. $0 / month
Stripe Payments Payment processing. Additional 1% for foreign currency conversions. 2.9% + $0.3 / charge
Stripe Radar Payment fraud detection and prevention. $0 / charge
Stripe Billing Recurring subscriptions, payment recovery, revenue analytics, invoices & receipts generation, and partial EU VAT compliance. First $1 million is processed for free. The whole SCA thingie could have been handled better, especially the documentation part. 0.4% / charge
Stripe Atlas They help you to incorporate a Delaware C Corp or LLC, open a bank account, and give you access to a bunch of discounts/credits (e.g. $5000 AWS credit). I went with a C Corporation instead of an LLC because the latter complicates the tax situation for non-US residents. All in all, Atlas has been a great experience. $500 / once
Rocket Lawyer Companies formed in Delaware are required to maintain a registered agent in the state. The first year is included in the Stripe Atlas' application fee. $100 / year
Silicon Valley Bank Business checking account that (optionally) comes with Stripe Atlas. Meh. $25 / month
pass Free and open source command line password manager for Unix. Each password lives in a separate GPG encrypted file. Using Git to track changes. I don't have team members, so there is no need to share passwords or keys. Switched from KeePassXC. Passwords are one of the few things I'm not comfortable storing on someone else's computer (i.e. cloud). $0 / month
Authenticator Free and open source two-factor authentication app for iOS. Switched from FreeOTP. Authenticator app only backs up 2FA tokens if your backup is encrypted (iTunes backup). $0 / month