Running costs for running a web app
cushionapp.com
cushionapp.com
For saving on costs we use:
- Bitbucket over Github (Private repos are free, although Github has more features, so it depends on how much you use really)
- Email Hosting Zoho over Google (FREE): We tend to recommend Zoho to single entrepreneurs since it offers 10 accounts for free on your custom domain.
- CMS (FREE): We use our own barebones one that's similar to siteleaf.
- Redis/Web Server/DB Server ($40/mo) Digital Ocean over AWS/Heroku: DO Droplets for launch + initial marketing, and then depending on how things turn out, EC2 or more Droplets.
- SSL (FREE): Recently tried out Let's Encrypt. Works beautifully. Will probably use that for everything in the future.
- Exceptions (FREE): New Relic seems to do a decent job, although the paid plan over at Airbrake seems a lot better. Haven't tried Sentry, but will give it a shot after reading this post.
- Log Management (FREE): We use tail and grep :D It's messy but we survive
- Assets / CDN: Sometimes Cloudflare (free), sometimes S3/Cloudfront (same as article)
- Chat (FREE) Glip over Slack: Glip's free offering is better than Slack's, because you can confine people outside the organization to specific channels, which works fantastically for us.
- Fonts (FREE): We tend to advocate some decent looking Google Fonts that get the job done
Completely free SSL Certificate. 'Nuff said.
I don't know about Zoho, but in case of Google Apps, they allow you a configuration to route all mail through a host of yours which would allow you to create these aliases without having to pay for actual accounts.
At lest that's what I'm doing at our place. All mail to our domain goes to our MX which does alias expansion and then forwards is to Google Apps (after making a backup copy into a maildir in case Gmail goes away and we need emergency-access to mail).
Google Apps in turn forwards all outgoing mail to that machine too which then makes a backup copy in a Sent-Mail maildir, before actually sending the mails off to the recipients (this step is harder because now it's your responsibility to deal with SPF, PTR lookups and mail server rep in general - but it's no rocket science either)
They're much better at support than Google (which isn't saying much, but at least you have someone that answers).
Thankfully it doesn't affect me currently -- I'm using class 2 certificates -- but I'll be doing more research come renewal time.
you should - it's amazing. When I tried it out, the really nice UI and the ability to self-host (it's good to know it's there - we're still using their hosting though as it's way less hassle) it was what immediately won me over.
While I understand that these numbers also give an opportunity for people to point out areas where there may be potential cost savings or opportunities to improve infrastructure, I am not sure generic comments of saying you are spending too much or too little, or I don't spend that much are beneficial. A few key pieces of information that would help correlate these numbers in my opinion are total users on each plan, monthly active users, and the average amount of data required for the users.
Just based off the Stripe numbers I would estimate that they have between 6000-7000 annual paying users (this number may actually be a little lower if the majority of users are paying monthly instead of annually). That does not include members that only trial the service, although I would suspect this number is small.
Long story short, every business has different requirements and usage. What works for one company with 6000 users may not work great for the another company with 6000 users. I just hate seeing people say that someone is spending too much without knowing all the details.
However, the flip side is that many services have alternatives that do about what they do. They might do so with a lower price or more capabilities. People mentioning those in comments of articles like this facilitates the discovery of those products for people not aware of them.
An example for me was arguing that much of what "cloud" stuff does can be done with dedicated hosting if it was setup correctly. That we just need a combo of the two to satisfy certain markets focused on security and dependability where sharing hardware isn't permitted but they want flexibility & low costs. Thanks to a commenter, I found out I had re-invented the concept of "bare metal hosting" and SoftLayer provided exactly what I was thinking about. I wouldn't have discovered that if everyone and I were just giving props to the OP or further elaborating their own use case.
So, I think exploring the reasons behind the choices of company in question and bringing up alternatives are beneficial. One facilitates understanding. One discovery.
Web services expenses aren't even close to their cost of adding an additional employee to solve these problems in-house.
Learning to automate something a more seasoned *NIX veteran could do in an hour is not always a predictable time expense, and then they might create bugs or run into other issues. $100/month can a bargain and buy you time to do more important things.
Researching services to use can turn into a black hole. There is always a better service that you don't know about. It can be better to decide "I will spend one hour researching metrics/dashboard services, and pick the best one I find, and spend another testing out the service." rather than trying to end up with the most perfect solution and testing every solution there is.
That said, sometimes it's more time efficient to avoid having one extra service to maintain. One has to avoid using a service in a way that the business is too dependent on it, or that the service is not easily replaced. That's just part of what makes running a business hard.
That's another good point about researching services can turn into a black hole. It is almost like the question of what framework/language should I use to build my startup.
I have no issue over the costs with paying for all these services as it is almost always cheaper than building/setting up the same tools yourself, the issue I have is the lack of skills/understanding that going down this route encourages. I like to build everything myself so I learn, not because this is the most efficient way to run things. When something breaks (it always does at some point) it means I can fix it.
There is also the other point which is I love learning about all this stuff :)
There is an individual thing in the AR deployment which exists for no technical purpose to get us a piece of paper issued by Rackspace which we need for legal reasons. That thing costs more than everything on this page combined. We have one part-time employee; she's 3X more expensive than that thing.
If you're put off by $80 for a database wait until you get quoted rent, insurance, taxes, accounting fees, any engagement with a professional, review of a customer's MSA to sell them an enterprise contract, healthcare for a single person, travel to a single conference, the wifi at the hotel for a single conference, etc etc.
Also: there is virtually no scenario under which a SaaS app grossing $Xk per month has a better financial or technical outcome by working on minimizing expenses when you could be working on selling more accounts and selling better accounts.
I would also stress that there are other reasons to keep complexity down, like hating to do paperwork (or work of any kind).
Of course, it's also just my natural inclination. My common response to problems is more along the lines of, "I can write a script to do this," than, "I bet there's a SaaS for this." That may well be inefficient, but it's how I roll.
For a company with multiple employees, this really is peanuts. If you can do better, that's great, but it's not the standard experience in business.
In the entire lifetime of their service, they've spent $8,727.57. That's less than it would cost to hire me to optimize their infrastructure.
Even though I've worked on building cost-optimized and efficient deployments for other companies, for my own projects I first turn straight to Heroku. It requires substantial traffic for my opportunity cost to be justified: I'm typically much better off charging larger companies to tune their deployments than using the same skills to shave pennies off my bill.
I do think that when you are first launching a startup, you should probably do everything as cheaply as possible, which probably means using a VPS or IaaS. As soon as your infrastructure becomes more complicated, you can use Heroku instead of hiring people to manage it for a while. Then see where your growth takes you -- you will probably find that eventually it makes more sense to hire a couple people to manage some IaaS or even renting racks and buying hardware.
As with all things in life, it really depends. I believe this particular configuration makes sense for companies who want to focus on product, not infrastructure -- at a cost of expensive hosting.
However I wish they would have disclosed traffic handled by Heroku servers as well.
It's surprising to me that people think they're spending a lot on infrastructure when they spend $800 on fonts, etc. When you drop the payment processor charges (which are per transaction) they're at $7k to run a site with a lot of functionality for a year. Seems pretty reasonable.
So, one $30-50k engineer gets split 5-10 ways on infrastructure. Most maintenance is automated with setup and occasionally fixing something using up most time. You usually negotiate 1 day to a week of dedicated time out of the month w/ split being flexible.
Heroku and Redis might still come out a better deal. It's just not going to be nearly as different as people think because one doesn't have to load-up on IT people to deploy or maintain common configurations. All kinds of consultants and smaller fish that will do it way cheaper [than you mentioned] with cost spread across multiple, small businesses.
- The time and money it takes to find said $30-50k engineer
- The risk (and therefore potential cost) if the engineer doesn't do the job correctly
- The unknown cost of "occasionally fixing" could be $50 or $50,000. Given how nebolus the DevOps position is, you also can't be sure the stuff this individual is doing is considered best practice.
- There is overhead time spent on managing such a resource (teleconferencing, IM's, etc)
- There is potential that the resource is unavailable and therefore a potential downtime that could cause your business loss
There's a reason Heroku exists and has been successful, and these are just a few of them.
But this one i would like to ask some questions about:
"The unknown cost of "occasionally fixing" could be $50 or $50,000. Given how nebolus the DevOps position is, you also can't be sure the stuff this individual is doing is considered best practice."
Who gets to decide what's best practice? How does such information about such best practice propagate? How much does it cost to acquire such best practice knowledge? Is trying to mitigate for this all the time a theoretical constraint on all possible solutions (i.e. without trying to mitigate for this, things will not work at all) or for any of the issues you bring up that are probably valid assumptions for some set of solutions?
- The time and money it takes to find and evaluate providers like Heroku
- The risk (and therefore potential cost) if the SaaS solution doesn't handle your needs as advertised
- Unknown costs that crop up both in paying the provider and handling stuff outside the provider.
- Overhead spent managing cloud applications
- Potential that local Internet or cloud startup experiences downtime.
There's a reason dedicated IT people exist and have been successful, and these are just a few of them.
I've seen a lot of people that hire devops in-house (technically, it's a little hard to see how "devops" might work with the "ops"-person just doing drive-by installation and maintenance once every month -- but I suppose if the "dev" part isn't "special" (web application server + database + static resources + database) one could argue there's not much need for "devops", just "ops"?).
Although 30k for full-time ops works sounds really low, anywhere? (As a customer, I'd probably prefer one tenth of a 100k/year engineer than one tenth of a 30k/year engineer... even if the price might be 3-4 times as high).
http://www.aonix.com/pdf/PercDatasheet.pdf
They run POSIX and safety-critical apps side-by-side on a microkernel (eg QNX, INTEGRITY) w/ latter usually on a built-for-purpose runtime like PERC. They also would combine app, dependencies, and runtime into one image that could go into a ROM. Services like Boxfuse are doing it for cloud but the model goes back over a decade with proven benefit. Goes back further in security kernels (eg Aesec's GEMSOS or BAE's XTS-400) where they did same thing for preventing sensitive components from leaking to ported POSIX/Linux apps. So, it goes back almost three decades now. That's how long it takes industry to learn apparently. ;)
EDIT: Wait, you're the founder rather than just a user. You might have heard of some of this advanced, clever Java stuff already then. Haha.
I would expect the other way around. In fact, "for a while" doesn't work in real life. So moving from AWS to Herkou then migrate to another IaaS? That's going to be really costly. My pitch is use the tool you are more comfortable with at the beginning. When you grow to a reasonable size, I would start creating infrastructure on AWS directly (or other IaaS providers). I work with AWS daily so if I were to start my business I'd build on AWS first (plus there is AWS startup credits that you can apply). YMMV.
Having a Iaas/Paas doesn't mean you don't have to manage anything - that's a myth. Sure, it might be doable if you own a trivial app with just 1 web server + 1 app server + 1 database server. But once you're doing anything remotely complex like building a 10-node Elasticsearch cluster that is running out of RAM, or a 10 Cassanda node cluster, or a Kafka queue that can overfill, you always need an engineer to manage your infrastructure.
I know companies that don't rely on any hosted cloud services for our infrastructure, and have just 1-2 people they rely on to be that infrastructure guy, and even they are not 100% full-time. It's only when things blow up that they tell him to stop what he's currently doing, and address the issues. Unless you have 10K+ employees, you'll be hard pressed to find companies that have full-time engineers that just twiddle their thumbs, and stare at a monitoring dashboard 40 hours a week to monitor a component.
Depending on one's business, HA/performance may not matter that much, but personally my startup is having a 'proper' design from day 1 - downtime is not acceptable for my business model.
Personally I'm pretty confident about market-fit and expected growth even before the launch day of my startup.
But that's not the case, most times!
Less servers and components mean less things to break.
Grab a dedicated server and host your shit on it (have a DB replica because losing data sucks, but that is easy). You will be able to run like that for much longer than you probably suspect and the chance of downtime will be massively reduced.
Why? Because a single server has a very low chance of having anything going wrong.
Not only that, but there is a lot of overhead in performance when you split everything up into components. You will be surprised how many requests you can handle on a single inexpensive dedicated server when you haven't put too much effort into "architecture".
When you actually find yourself running out of headroom on that setup you will know much more about your application and it's requirements then you did at the start, so you will have a better idea of what to split out, and a better understanding of what parts of your app need more performance anyway.
Similarly, if the work you are performing has any value for your business, it must be retryable, and the queued items must be safely stored (i.e. don't use a single Redis server - use something distributed like SQS instead).
All of that calls for a 'proper' architecture. I'm not talking microservices or anything fancy - just a webapp/worker/db separation and the like. Which is exactly what dedicated server (or DigitalOcean) users tend to lack at early stages.
Fortunately database warm standbys are WAY easier than true multi-master.
If using Digital Ocean allows them to move faster, then sure that makes more sense. But doubt that's true in this case.
Some of the things I find expensive are te SSL line items and more peculiar than expensive really, a $25 image carousel.
If letsencrypt could be a drop in replacement for te SSL spend it would save them some money.
Other than that, I don't use Heroku, but not wanted to manage a db is pretty reasonable and the cost offset is likely there.
Sometimes these startups are 2 people. So the tech cycle would be hard enough, not to mention business and customer support.
I would off course never use a carousel though.
I've always thought that bigger companies use font services like that and not startups.
Also, there is no cost for a designer in the pricing, so either that is a startup cost not included in the ongoing pricing, or is done in house. And a designer is not cheap.
For instance, take a look at this font I'm currently integrating into the app I'm working on:
https://www.myfonts.com/fonts/intelligent-foundry/averta/ https://www.myfonts.com/fonts/intelligent-foundry/averta/buy...
If you want to put these on the web, you're paying $200 per font type. If you want to buy the whole family, that's almost $1200.
Companies with a design focus are happy to pay this in order to differentiate themselves from others.
I mean, $180/month for a running app, that is making money, isn't that much. Once the traffic grows, and you're spending $500 or $1000 per month, yes, it becomes worth it to look into alternatives (because $1000 on Heroku can probably be replaced by $150-200 on more powerful hardware). But moving from Heroku to a less managed option just to save $80/month doesn't seem particularly worth it.
Of course if you don't know how to do that, then you pay them to do it for you, until you can hire someone to do it on your own.
You could totally spin up multiple digital ocean instances to get a much cheaper infrastructure. I usually use one for load balancing, 2+ for running the app, and usually one for the backend postgres. You could also get away with using something other than digital ocean for the postgres.
But for 6000 users, depending on the app. I can probably get away with like $30 a month with this setup. Including the database.
Total setup time might be a day the first time. But it scales pretty well, costs significantly less.
The other expenses appear to be various other services (slack, support site, logging service, etc). Lot's of 3rd part services to handle stuff.
Obviously it's a lot cheaper if you can do many of these things yourself (run your own support web app, use a free chat service, etc, etc). But we all have to decide what services we want to pay for vs run ourselves - in some cases it is cheaper to not have to spend the time!
We got 6 months free Mailchimp and fee-free on Stripe for the first 60k i think, really helped at the time
Simply not having to think about how to stage, locate and run an app saves a lot of visible and hidden engineering time.
Source: I work for a company which donates engineering time to what is, in some respects, a Heroku competitor (Cloud Foundry).
Looking at https://devcenter.heroku.com/articles/ssl-endpoint using SSL as an addon for $20/M is expensive. With ELB I can pay namecheap for an SSL cert for like $10-$30 once and be done with it.
By default Heroku offers a wildcard SSL certificate which only covers
‘*.herokuapp.com’. This means that ‘Full SSL’ can be utilized as a default,
which does not require that the SAN contains your FQDN. To utilize
Full (Strict) you will need to add your own SSL certificate to your
Heroku app, which can be done by using their ‘SSL Endpoint’ add-on.
https://support.cloudflare.com/hc/en-us/articles/205893698-C...I think that starting startup can cut a lot of corners by using open source resources and cheap cloud servers like DO.
The SSL certificate expense is listed as $99/year from namecheap, ie. $8.25/month, so there seems no need to get a Symantec one.
However they/it/he are paying Heroku $20/month for handling the SSL traffic, not the certificate itself, which probably includes running a load balancing server in front of their apps that automate the SSL termination across nodes. Which seems like a fair cost to me.
I think the description of this cost is the error which causes the confusion.
I use AppEngine for my experimental projects because I can get a simple data model and some handlers running in minutes and a (supposedly automatically scalable) useful backend up in less than a day, and at very low cost. (Virtually free if I use an *.appspot.com domain).
You do get lockin issues but don't you also get lockin from Heroku? Is there big advantages to Heroku that make it worth it?
An instance on DigitalOcean would be more like 2 hours.
There's no lockin that I've experienced on Heroku.
Most of my time is spent consulting docs.
More generators than those will allow you to create reusable app templates which have these features so you don't have to repeat the (still very simple) configuration process for each app.
AppEngine is a great tool for a great price. It scales smoothly with an affordable increase in pricing.
Heroku is sort of famous for getting too expensive at large scale. Their advantages are their ecosystem (most of the additional services listed in the OP can be installed quickly, and you're still only billed by Heroku), and their UIs which tend to be easy to understand and operate.
https://web.archive.org/web/20071105005403/http://heroku.com...
It's fairly likely they were working on them in parallel without knowledge of each other, though.
Which log aggregation services is everyone using ?
I've not used Papertrail, so can't compare to them, but it's significantly easier to use than Loggly, they've been kind to us through the odd overage, and it does what we need it to do (Centralise a load of application logs and allow us to search over them and set alerts). The live tail feature is nice as well.
Looking to migrate to https://logentries.com At least their free plan offers 5Gb/month.
Why not include the cost of your time to maintain and improve the service? Without including the cost of your own time it seems hard to make budget decisions (e.g. the tradeoff between a PaaS and using a provisioned VPS). Even if you're not paying yourself anything, it seems important to include what you could be making if you were doing something else with your time.
As others have said, Heroku seems like a very expensive way to lock yourself in to one provider.
Without a doubt, this cost has increased over time, but in the beginning of the startup, it was just $20 or $30 a month.
Ive built and home grown all of these products or at least what I needed in house.
Shameless plug: https://rdnation.com and https://snation.com
The details of the WOT report make it seem like it could be an outdated report of spam/malware.
Might not be that important in your case, I am guessing.
I'm confused.
No one is understanding that having a few extra hours a month to build features and find customers is worth a couple hundred bucks. It's probably worth thousands of dollars a month.
There is a point of diminishing returns, of course, pushing down to $5/month is a lot of pain -- super low cost super low resource hosting, etc.
I would try to reduce costs in those Heroku workers... $175/month seems steep.
It may pay off for certain organisations, but it currently a quite a rabbit-hole, with a constantly changing landscape, complexities of its own, etc.
By the way, your use of Heroku makes total sense given that you're basically alone, I hope that the lock-in won't be too difficult to overcome when moving away from it.
I also want to say that your site has a great design. Are you doing that yourself or would you mind sharing the service you're using?
Is there any reason for this or just an oversight?
I used that for my static S3 site, it's working fine.
---
# Pros of setting up your own host.
- Huge cost savings.
# Cons
- Heroku is way easier to scale, just drag the slider. Upgrading databases / redis is still a pain. I recommend going with RedisCloud instead of Heroku Redis. With database you have to do a migration and copy the data over.
- Having to deal with securing your own server and maintenance.
- High upfront cost due to setup
At the end of the day, it's about what your time is worth :). There's no right answer. I go with Heroku myself. The instant gratification is hard to beat.
That's why I recommended in a other comment using people that do stuff similar to what you need and split cost among several companies.
Judging by the Stripe fees, I'd hazard that your cumulative revenue is in the $30k range. I'm sure there are marketing and advertising expenses that aren't listed here, but that seems like a pretty healthy gross margin.
If I moved to Heroku or AWS, my profits would definitely suffer.
If your VPS box could handle that... they might still have a better business model.
Unfortunately even that is pretty expensive given how weak my country's currency is against the dollar.
hey we don't know how to do those cryptics admin stuff on the command-line let buy services instead and atomise our monthly costs ...
I don't even talk about tons of open source solutions that would reduce even more the costs.
OK I'm probably biased here
I had no idea they were free.
It's interesting to consider whether certain services are pricing for perceived value and what the market will bare, or under-pricing for acquisition in an immature market and going for the land grab, or just underpricing themselves.
This is to say: a shopping list like that is utterly meaningless without the context of what the service architecture trying to achieve.