DigitalOcean App Platform
pages.news.digitalocean.com
pages.news.digitalocean.com
Heroku gives instant deployment for the most common types of apps (python/java/ruby). It's PaaS done right, it's fantastic. You should really have a look if you're not aware of it, it's only $7 for a starter app.
Problem is, scaling up is about $50 per gigabyte of memory which makes it a dead end for anything non trivial. You're forced to go to digital ocean / Linode / OVH instead to have something affordable.
That leaves Digital Ocean as the only alternative (don't trust Linode) and it sucks because it only gives me a server to manage. I don't want to manage a server I want to run a (python) application. It's 2020 this sort of things should auto deploy from GitHub without bothering me to manage an operating system.
Do they only patch non-breaking updates? Or are you on their schedule to ensure your app will run on the latest version?
In practice your application restarts at least once a week. It's transparent because a new instance is started first and takes over. The provider can move applications around to add/drain servers and perform maintenance.
As a real world example, I run a personal blog. If it were running on S3, my personal finance would have been obliterated when it got featured on HN and served 1+ TB of traffic.
The concern for me is a lack of hard limit on spending on GCP, Azure, and AWS. If I screw up and allocate a bunch of resources unintentionally, I'm left holding the bill. That's a terrible setup for PaaS because all programming involves mistakes eventually, especially for new users learning the system.
Granted, there are likely limits on accounts, but those are to protect the services from fraud, no to protect the user from overspending. The limits aren't well defined and it's not something you can rely on because MS might consider $10k / month a small account while it's a ton of money for me.
Azure customers have been asking for hard limits on spending for 8 [1] years with radio silence for the last 5.
There's a difference in goals I guess. If I spend more than expected I WANT things to break. Microsoft, Google, and Azure want me to spend unlimited amounts of money, even if I don't have it. At least AWS can be set up using a prepaid credit card so if I screw up they have to call me to collect their money and I negotiate.
1. https://feedback.azure.com/forums/170030-signup-and-billing/...
- Hobby kid doesn't want to overpay, shut everything down
- Business absolutely doesn't care about spend, if they get some kind of marketing result traffic spike they just want the site to stay up even if it blows the average budget
Guess which one they optimise for?
While this statement can be true in some cases I vividly remember bosses of largish (budget wise company) running around like headless chickens yelling to kill every running instance of service just because they were hit by way more "success" that they've planned for.
Almost everyone will be unhappy if they're stuck with a six figure bill for non-converting visits because their site went viral. Everyone will be unhappy if they're stuck with a six figure bill because their site was used in a DDoS reflection attack, or got pwned and used in a DDoS attack directly.
Everything I run on nickle-and-dime-to-death cloud services, such as AWS, won't even respond to unauthenticated requests (Nginx return 444, or reachable only via Wireguard) precisely to mitigate this risk. To do anything else is just financially irresponsible.
I've even considered coding a kill switch that will shut down AWS instances if they exceed billing limits, but the fact that AWS charges a fee to check your spend via an API makes this awkward and speaks volumes about Amazon's motivations.
Amazon's refusal to offer spending caps on AWS benefits Amazon and only Amazon.
A good article is around 50k visits. The most I've done was 300k over a few days of going viral on HN/reddit/twitter/other. I published some stats there https://thehftguy.com/2017/09/26/hitting-hacker-news-front-p...
Shutdown your servers? Wipe your SSDs and storage buckets? Remove your DNS records? Should it be permanent? If not then they're just subsidizing the costs. If it's soft-limit then its just a warning, and if you just want a warning then billing alarms already exist in every cloud.
Also for most customers, the data and service is far more important than the cost. Bills can be negotiated or forgiven afterwards. Lost data and customers can't.
In other words, I don't necessarily need to set a hard spending limit, but I want to set a hard spending growth limit (allowing for short bursts), either directly in monetary terms or indirectly through rate limits on individual services.
I'd be absolutely fine with that in a sub-account or resource group as long as I had to enable it.
A while back I wanted to try out an Azure Resource Manager template as part of learning something. Since I was _learning_ it, I wasn't 100% positive what it was going to do, but I knew that it should cost about $1 to deploy it.
With a hard limit on spending I would have set it to $10, run the thing and been ok with the account being wiped if I hit $10. Even $100 I could tolerate. Unlimited $$ was too risky for me, so I chickened out.
The worst part is I can't even delete my CC because it's tied to an expired trial that I can't update billing for.
> Also for most customers, the data and service is far more important than the cost.
So don't enable the hard limit.
You know. When I hit the storage limit of my SSD it doesn't wipe my data. It just ceases to store more data. When I rent a server for a fixed price and my service is under a DDOS attack then it will simply cease to work for the duration of the attack. If there is a variable service like lamba that charges per execution then lambda can simply cease to run my jobs.
You can neatly separate time based and usage based charges and set a limit for them separately. It doesn't even need to be a monetary limit, it could be a resource based limit. Every service would be limited to 0GB storage, 0GB RAM, 0 nodes, 0 queries, 0 api calls by default and you set the limit to whatever you want. AWS or Google Cloud could then calculate the maximum possible bill for the limits you have chosen. People will can then set their limits so that a surprise bill won't be significantly above their usual bill.
Your comment is lazy and not very creative. You're just throwing your hands up and pretending there is no other way even though cloud providers have created this situation for their own benefit.
Before you go around calling people lazy, I suggest you put more thought into why creating more options for people who are overwhelmed by options is generally not productive and can cause unintended consequences and expose liability. With some more thought, you'll also realize that AWS is optimized for businesses and, as stated, losing customers or data is much worse than paying a higher bill, which can always be negotiated after the fact.
I run a small side business, and these unlimited cloud plans are just a no go. A medium to large company could totally absorb a 5 figures bill, but that would be a dead sentence to my side project. Also, considering the variable costs of bandwidth of AWS, Azure or Cloudflare, one competitor could simple rent an OVH server and incur insane costs to my business while only spending 1/10 of the money.
Right now, I'm using Heroku (with a limited number of dynos and a single PgSQL database) together with BunnyCDN (which allow me to pay for prepaid usage). If I ever get DDoS'ed, my app will most probably be inaccessible or at least significantly slower, while I'll receive an email alert, from which I can decide myself to allocate more resources.
Wouldn't be surprised if I'm top 1% of personal bloggers on HN or something like that. I'd be shelling out AWS thousands of dollars over the years if I were using anything AWS, or more likely I'd be either broke or the blog would have crumbled under the traffic each time never going viral.
The difference between $2 and $20 will strike when you start having pictures and with $200 the day you (accidentally) put a large image or GIF.
With an ad blocker, this page takes 83 requests to load a total of 2.31 MB.
Wordpress is actually really good on that, it's resizing the images automatically for thumbnails and mobiles with caching.
And I don’t know how you’d set up your blog with AWS but I don’t see how it could be expensive to host static content there.
I honestly wonder what's the average distribution for HN contributors. I imagine it's not much for personal blogs. Not trying to compare myself to the new york times or cloudflare blog obviously.
(My experience with high-ranking HN posts: initially with DreamHost, later with cheapest AWS ec2—never a noticeable impact with either)
HN/reddit/twitter/android can all send a similar amount of traffic. There's one order of magnitude there, how many places an article is featured at the same time?
Then there's an order of magnitude within each place, how much interest and readership the article could gather? Highly variable. The first comment alone can make or break an article.
I also haven’t had the number one spot on HN (except maybe briefly), but was in 2 and 3 for long stretches and even an order of magnitude more traffic wouldn’t have been a problem.
Two orders probably would have been, but I have a hard time imagining a 100x traffic difference between the 1 spot and the 2 spot. Then again, if it was a very slow day here vs a very busy day maybe (though in my case it wasn’t a very slow day).
It's not about rank. It's about the specifics of the article, mainly the title and the content. It simply attracts more or less readership.
Maybe I'm reading this wrong, but it looks like 1 TB of outgoing traffic would be ~$90
https://aws.amazon.com/s3/pricing/
I've had things hit the HN front page a few times while just hosting on ec2 and never had a noticeable increase in charges. Then again, I wasn't hosting very large files.
I've had some images hit reddit (hotlinked) and exceeded 10-15TB per image, and that cost under $10 at other (non-AWS/Azure/*) places.
But I don't think DO really solves this problem either. They say they have spending caps in some of their marketing materials, but the finer print says that overage billing is $0.01/GB. Now that's a whole lot better than Amazon's $0.09/GB, but it's not a cap.
DO can say they have "predictable pricing" because in the vast majority of the cases the "free allotment" that comes with your droplet is enough, so you never see a bandwidth charge, you pay the cost of your droplet and you're done. So yes, it's more predictable because Amazon would charge you $5.23 one month, $4.87 another month, and DO charges you $5 every month.
But I'm not worried about the 99% case, I'm worried about the extreme scenario where I somehow go viral or get DOSed. And both options leave me exposed.
That's not to say DO isn't a better deal for the hobbyist than AWS. The equivalent of DO's $5 droplet will run you much more on AWS, especially if you actually use the bandwidth they're allotting you. And the big 3 do a lot of nickel-and-diming, which is a nuisance compared to the simpler pricing model of the smaller providers.
Companies that allow it almost certainly are not meeting all the relevant laws for those customers that do change region.
Some folks suggest using a DB to store secrets on GAE, but this is (IMO) just obfuscation.
- Google App Engine (PaaS)
- Google Cloud Run (serverless containers)
- Fly.io (serverless containers with a minimum of 1 container running per configured region)
There is probably a good hundred of them at this point.
For $5/month you can get 250GB of storage with 1TB outgoing.
Additional is $1/100GB and $10/TB
Edit: You're talking about spaces[1], I'm talking about volumes[2].
The screenshot you shared is attempting to add additional volumes to a droplet. See the pricing for droplets, it includes 25GB of SSD and 1TB of transfer.
[0] Amazon ($0.1/GB): https://aws.amazon.com/ebs/pricing/
Azure ($0.075/GB): https://azure.microsoft.com/en-us/pricing/details/managed-di...
Google ($0.17/GB): https://cloud.google.com/persistent-disk/#section-7
edit: formatting
That's exactly what I did. Taking the cost of my time for setting everything up and maintaining it, I estimate the net cost is about 1/10th of what it would be in the cloud.
It's the closest offering I've found to Heroku and am planning to migrate all our services to it due to significantly better pricing. Make sure you look into it.
You can run worker code by moving them into individual HTTP calls, triggered by whatever workflow you want. Cloud Tasks, PubSub, Cron, etc.
See https://cloud.google.com/secret-manager/
I recommend this community-maintained FAQ on Cloud Run:
The petty snipe is not necessary or appreciated.
Google has a terrible reputation with consumer services but has been pretty decent with Google Cloud so far. The biggest negative example would be Google Maps pricing changes but that seems to be different class of issue.
There was also a similar one for Mozilla: https://killedbymozilla.com/
Perhaps they were being weary due to the practices the entirety of the company has displayed in the past, in regards to killing off products.
Not sure about Google Cloud in particular, though.
Google Cloud isn't someone's side project though so the risk is much lower. You're right that services can be shut down at moment's notice but that applies to any service of any kind. Unless you host with multiple cloud providers at the same time you cannot avoid that risk.
Cloud run is very easy to get started with. It's basically a service that runs and scales a docker based application. They bill per request based on some notional cost of cpu and memory. They give you some options for using bigger instances, which influences the per request cost. You can go from 256MB to 2GB memory and I think you can have up to 2 or 4 vcpus (one of those, we use 1). You can specify a minimum (default 0) and a maximum (default 1000) number of instances. If a request comes in and nothing is running, it starts an instance. After idling a while it disappears again. So, if you get a low amount of traffic, mostly there will be something running without costing too much. At some point you raise the minimum to 1 instance and it starts costing a bit more.
Crucially, there is a freemium layer: you don't get charged unless you hit a certain amount of requests. So, when prototyping, this is very cheap. Basically we managed to keep our cost around a few dollars while in the last months.
As this is part of Google cloud, you can transition to other solutions (like their hosted kubernetes) eventually. You also have access to other stuff. E.g. we use firestore as a cheap (but limited) database and the google secret store for secrets, and some storage buckets.
When you click together a cloud run deployment, it can create a cloud build for you that points to your git repository and set up automated deployments. If you have a Dockerfile, it will try to build and deploy that. If you need to customize what the build does, you can provide a custom cloudbuild yaml file (similar to github actions, travis-ci, and other popular ci options).
After it comes up, you get a nice https endpoint. You can actually add password protection to that as well if you need it. And you can optionally use your own domain.
So, we are running a spring-boot project for next to nothing. When the time comes, we'll likely swap out firestore for a proper database as this may get expensive as they bill per read and write and certain operations are just going to use up a lot of reads (e.g. a count operation). It's fine as a dumb key value store but it is very limited in terms of other features (e.g. querying).
However, Google's hosted databases are expensive and don't really make sense until you are ready to spend a few hundred dollars per month. Same with Kubernetes. Kubernetes does not make sense until you are ready to commit to a burn rate of hundreds of dollars per month. And it's completely overkill unless you actually are deploying multiple things.
That isn't exactly true, for a few reasons.
First is, the top tier public sticker price is roughly $35/GB.
Second is, at higher scales, you'll sign a contract with them that discounts your rates further.
Third is, this is presuming you're paying $ for memory alone. While that might be relevant for individual apps which need that specifically, on the whole you're paying for the ecosystem, the standardization, the PaaS. You're trading money for your time back. The product you're buying is not simply GB.
Except when the only thing you need over the $7 hobby instance is more memory.
You can even run multiple App Engine apps for mostly free, because their free tier is calculated based on the actual instance-hours running, and with App Engine you can configure it to that when you don't get any traffic there's no instance running (they spin up a new one when there's a new request in that case).
The way to deploy java/python/ruby/node.js is complex on their own, I feel golang can fix that part by the language design itself.
My project currently runs on Digitalocean managed k8s and setting it up really wasn't hard. I had everything already in containers for dev/prod anyway, and having those run on k8s just meant I had to write the deployment manifests that pull the containers and setup the pods.
What I love about managed k8s (and also shared a couple times in comments on HN) is that it's separated from the servers below. I can have 20 containers (that can be separate things all-together) running on the cheapest Droplet and would only pay whatever that droplet costs, so under $20. Then when I need more power, I just scale the Droplets used for the k8s cluster and my pods/containers get shoveled around the available resources automatically.
I liked this approach so much that I now have a private 'personal projects cluster' that runs on digitalocean with the cheapest/weakest droplet avvailable, and whenver I have a small hobby project that needs to be hosted somewhere, I just add that container to the k8s cluster and be done with it.
Google cloud run is essentially here is a docker image that listens on the $PORT env variable. Spin it up when you get requests. It will handle X queries per second (you can set limit). If more than X, scale it up to this many replicas.
I pay about 10 cents for my site. Zero maintenance. I push code to GitHub, GitHub builds an image, pushes to GCR and tells cloud run to use new image.
This is how things ought to work for simple web server like functionality. “Here’s a dockerfile and source tree, build it, run it and auto scale it with this https domain” Boom!
I pay 10 cents a month to google. They have no shame charging me 3 cents on my credit card.
I would argue that the complexity cost is ongoing not just front loaded. There is an overhead for every new application. For instance putting it in a Docker image, deploying it using gitops flavour of the month and then any extra policy management and routing.
Security, OS patches, maintaince and more than anything DDOS attacks. I don't want to handle all that, I just want to concentrate on development not maintaince.
It's only managed in the same way that AWS Elastic Beanstalk is managed.
A lot of Fortune 500 companies have Cloud Foundry setups and it's built on some of the same tech as Heroku so it's fairly accessible
Disclosure: I work for VMware via the Pivotal acquisition.
The issue is not that it happened, or that they had clueless staff; the issue is that their board and senior management thought that the best way to respond to their own error was to blatantly lie in their blog that there was no problem at all.
It seems to have worked; they're massively valuable now.
Why oh why is GitHub now considered the single place where code lives? Even as alternative providers gain in popularity.
It’s really sad to see DigitalOcean requiring this for some reason.
Please either allow use of arbitrary Git repositories (e.g. self-hosted GitLab in my use case) or provide a stand-alone CLI tool to enable deployment of anything, like Firebase does.
Disappointing so far.
> You can deploy the source code directly from your GitHub repositories (support for GitLab and Bitbucket is coming soon).
Naming specific git hosts suggests it may not be available on "arbitrary Git repositiories" in the near future, but looks like they are at least planning to broaden the options for where to have your code live
If they started with support Git Remotes and then supporting specific platforms, they would have covered all use cases from the get-go, albeit with slightly poorer UX.
But instead they chose to only support specific platforms, missing plenty of people who actually want to use this, but can't.
I bet GitHub covers the vast majority of their target users.
[0]: https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protoco...
> I bet GitHub covers the vast majority of their target users.
Sure, but if they added Git, they would reach everyone using GitHub + everyone else who is using Git.
With powerful primitives you can build powerful abstractions, Git is one of the examples of this. But if you instead focus on a single-use case (using GitHub), adding the rest becomes a lot harder, than if you started with the basics. Something 90% of product people in SF seems to have forgotten lately (or never learned?)
The App Specification supports a normal Git repository. However, I can see how this might be a problem if your repository is private as there are no configuration options for auth.
I've currently got a web app I'm just self-hosting on a DO VPS for $5/month. I have a Postgres DB on the same VPS (via a Docker image), with a 10-line shell script & cron job for backups to Backblaze B2 (which costs ~nothing/month for my tiny DB).
Additionally, my web app is a Kotlin API and a Nuxt.js SSR server, so I think I'd have to set it up as two separate "apps" on this platform. That means I'd be going from $5/mo to $25/mo.
On one hand, that's not a ton in the grand scheme of things. On the other hand, the whole reason I use DigitalOcean and self manage my infrastructure is to _not_ have to pay that kind of money for my projects with no revenue.
$120 / year for peace of mind that your production DB is backed up is well worth it for a lot of people, especially if the alternative is potentially a bug in a homegrown shell script which could silently fail catastrophically and lose your whole DB.
It doesn't sound like that argument. He compared it to Heroku's offerings, which are $0-9.
Cram it into that $5/month, bump the swap to 2GB and then deploy your DB into it... backups are supported if you just straight up map a persistent volume out to your B2 (https://github.com/caprover/caprover/issues/410)
Edit: Be aware during automated upgrades you will trip CPU alarms.
It's not super pretty like Heroku but it works.
Recommend adding NetData integration so you can monitor your hardware without logging into instances.
https://www.heroku.com/pricing#data-services
On Digital Ocean the first offering with 4GB of RAM costs $60 and it only has 38GB of storage:
My conclusion -- YMMV! -- is that I'd happily pay that much to "set and forget" the DB in a proof-of-concept or hobby context. I realize it's not perfect, and there are cheaper options, but I really think they gave us a cheap-enough deal, and you can always play sysadmin if it's too much for you.
I'm not a big DO customer but I appreciate their pricing transparency: having worked professionally with 2/3 of the major Cloud companies I would never put anything there that's billed to my own account.
* wildcard subdomains aren't supported.
* Only CNAMEs to digital ocean's CDN are supported (can't have an A record).
* There was no way to run a console command.
* Bandwidth is 12x higher than usual droplets and unlike standard droplets there isn't an included bandwidth pool.
There is a console now, was added a few weeks ago.
I'm particularly disappointed to hear this. Digital Ocean likes to say they have simple and predicable pricing, they even say so in TFA - charging high prices for bandwidth is surely the most despised practice of the big 3 cloud providers. I don't expect this from DP. I'm not angry, I'm just disappointed...
There's just too much of a premium for this over a standard DigitalOcean droplet though. At the low end you're paying double for the same resources, and at the high end you're paying 4x.
I deployed a toy Node.js app that was a bit too resource hungry for 1 virtual CPU. The cheapest plan with 2 virtual CPUs is $150 per month (vs. $15 for a droplet with 2 virtual CPUs).
Seems like there are some pricing issues to work out.
The team agreed that we had some gaps that needed to be filled, you will now see new plans:
Basic $40/month 4GB RAM & 2 Shared vCPUs
Pro $75/month 4GB RAM & 1 Dedicated vCPU
We've also increased the vCPU count on the Pro $50/month plan from 1 to 2 vCPUS so it's now:
Pro $50/month 4GB RAM & 2 Shared vCPUs
For example, static sites should be included for free on top of Spaces. There's no way this offering will be able to compete with Vercel, Netlify, or Firebase which all offer static sites for free with CDN. Vercel even includes 1TB of traffic per month, for free.
My Procfile looks like this:
web: datasette . -h 0.0.0.0 -p $PORT
Full notes here: https://til.simonwillison.net/til/til/digitalocean_datasette...Also, note that you shouldn't use SQLite, at least with heroku, because apps should be stateless https://12factor.net/processes
First, you don't actually know that using SQLite would make the OP's app stateful—if datasette is set up in immutable mode, then the .db files are no more indicative of a stateful process than a static CSV or a JSON or YAML config.
Second, not every app needs to be a 12 factor app, and you're not in a position to understand the trade-offs OP is dealing with. "Best practices" rarely are best in every circumstance, and often conflict.
dokku manage to hit that sweet spot of making everything easy and convenient but still let you do fine tweaks if you need it
A very small app composed of:
- App Platform using 2 containers - $12 x 2 = $24 (not sure, price is weird)
- PostgreSQL - $15
- Redis - $15
- Object Storage - $5
At ~$60 it becomes a bit too expensive.
To steal an old saying, VMs are cheap if your time is worth nothing. My time on weekends is worth nothing. Shrug.
Outbound transfer – 40GiB per app
Overall a cool idea. Would personally still prefer GCP Cloud Run which will bill me for request time only and allow me to scale based on requests per second.
https://azure.microsoft.com/en-us/services/app-service/stati...
[0]: https://nanobox.io/
Nanobox was a tool that allows you to build and manage a container with setups for heroku build packs. It handled deployment, load balancing, etc. Similar to heroku for example. But it also worked with Vultr, Amazon, etc.
Google has reached Microsoft-level naming complexity...
I'm interested to know - what's the sales pitch for DO over Render? I'm noticing some pricing differences but at first glance it seems they tip Render's direction. I'm also noticing Render is a bit further along (persistent storage, cron jobs, custom domains).
EDIT: see sibling comment from anurag. It appears they now list the regions they support in their documentation.
I'm happy to see this. Makes it a viable contender to GCP Cloud Run, which has become my favorite way to deploy serverless apps.
I can't see any features listed that enable me to control costs to prevent surprise bills. If a site got submitted to HN and hugged to not-to-death-because-it-autoscales then I'd wake up to a bunch of alerts and massive outbound bandwidth bill. I don't want that. I want something that stops that happening.
If the App Platform doesn't have that feature, and it isn't planned, that's OK but I'd argue that isn't really preventing a surprise bill as the marketing site claims. A warning isn't quite the same as prevention.
I was creating a public S3 bucket today and wanted there to be a hard limit, so I couldn't get slapped with a huge AWS bill. Looking at the docs, it appears I can get alerts but not set a hard limit on my billing.
If you're worried about billing, S3 is not a great choice. S3 is precisely unlimited storage for enterprise.
This is exactly the sort of thing I'm talking about, but for money rather than computing resources or bandwidth. I'd like a feature that where the requirement is effectively "Fall back to a serving sorry-I'm-poor.html instead of the app if the total monthly bill has exceeded $xxx". For a side project I'm more interested in not paying an unexpected bill than getting traffic.
I think for most companies, it's better to set the expectation that the service costs money, bursts will cost more money, and then forgive outlier charges once or twice. It's tremendously difficult to compete against the AWS's of the world, putting work into features specifically to minimize how much people spend seems like a good way to fail a company.
In those cases, the users will either not know or not think about such expense limits.
The solution is to set relatively strict limits by default and even occasionally warn users about unused/underutilized resources.
But as you said: such features are bad for the bottom line .
And I can appreciate the enormous difficulty of competing with the big 3.
For people who are inexperienced or don't give it much thought, just waiving their overage fees creates a really nice experience. We've had multiple instances of people asking why their bill is so high and being relieved/excited when we explained it and made it go away. People love when we're responsive to problems.
It's also something that people actively dislike about AWS, and thus a good selling point. Albeit it's probably mostly smaller projects that care about this.
I may not underestand parent, but it sounds like its not equivalent to a button next to the auto-scale but more like an email and pre-requisite knowledge that it exists?
We were concerned about spending time on marginal features that didn't actually matter much to people, so we "launched" it without building it to see if anyone cared.
So you could perhaps also consider that if it is only marketed when you sign up and not a clearly defined feature some people (like me) will just never sign up at all.
My guess is that people who are interested in controlling costs are also not getting enough value from auto scaling services. So we're already not attracting those folks, and offering a cost control feature isn't enough to get us over the hump.
Not even considering something like AWS with a bazillion types of services, say you have a cloud hosting service that runs nothing but auto-scaling clusters of servers billed by the hour. So I set a cap on costs but not cap on scaling up and turn it loose. It gets a hug of death from something, scales to the sky, does serve all of that traffic fine, but burns through my monthly cost cap in an hour. Oops, now it's down entirely for the next 3 weeks or whatever. Does anybody in the world who's willing to pay for hosting something actually want that? I have to doubt it.
On the other hand, capping the scaling size by number of hosts sounds pretty reasonable. Set a cap at say 2x your normal peak traffic. You get a hug from something, it hits the cap. Most of your extra traffic gets errors or really slow responses, but your service stays up, even when the traffic dies down. Your monthly costs are a bit higher than usual, but manageable. That sounds like a much better result to me.
That doesn't even get into stuff like, oh hey we dropped your DB server because you hit your cost cap early and it costs money to keep it running and to create a new backup too, hope you don't miss that data too much!
If for some convoluted reason this is wrong, then you guys really need to reconsider how you're presenting your prices and to lay out exactly what those convoluted reasons are, because Fly's pricing page certainly tells people that trying to match DigitalOcean's $5 plan is going to cost 10x on Fly.
What a customer-hostile thing to say, never working with you!
What if I told you that if you're actually trying to build a relationship with your customers and have them want to do business with you, it's best to focus on solving their problems as opposed to taking as much of their money as possible.
The point is that I'd rather just wave surprise fees than build a bunch of infrastructure to prevent them. From what we can tell, customers almost never have surprise bursts of traffic, but it's something they think about a lot. It's pretty easy to just say "you're not responsible for expenses associated with abuse or attacks or other nasty surprises".
The purpose of a metered service is to give people access to tools and features that would be prohibitively expensive otherwise. The trade off is that the expense also grows incrementally.
I don't want to need to depend on you being in a good mood to waive fees (or more likely, to hope you're not so low on runway that support gets incentives not to waive them until after your next round closes). I don't want to have to guess whether your terms mean what they say, or whether that giant potential bill might magically go away if I incur it and can convince you it was, quote, nasty.
I do want to deal with people who have thought hard about how to build their product in a way that I can depend on and reason confidently about, and who treat me like the seasoned adult I am.
You deposit funds (let's say $20) into your account, and as your site consumes resources, it draws from your balance. So $20 is $20. If you set up a crummy low-traffic blog and that $20 lasts four months, then fine. If it lasts two weeks and then there's a surge in traffic, or the server hits some bug that causes it to spiral out of control, then your site gets killed when your balance hits $0. You can set up alerts, but there's a hard limit for how much you can be charged—it's whatever funds you deposited into your account. (Really, that's not even the right way to put it, because you're charged at the moment you deposit them.)
This isn't acceptable for everybody—many businesses would prefer to stay up and be billed after-the-fact. But that use cases is already well-served by the industry. (Overserved, really.) The market segment where the alternative situation is the best fit (pretty much every hobbiest who isn't bringing in a single cent off their side project) is extremely underserved. NFSN is the only provider I know of that even offers this.
So it autoscales up until it hits the maximum threshold and stops. Yes, if the app needed more resources than this, due to a spike in traffic, than performance would obviously suffer. But depending on the budget and needs of the project this might be the preferred outcome over incurring unexpectedly high server costs that you are not prepared to handle.
Predictable pricing means that each month my bill is the same: I'm on a $15 plan, I pay $15 a month. No nickel-and-diming, no hidden fees, life is simple. This is a good thing.
Controlling costs means that no matter what happens, my costs will not exceed $x/month. Service might degrade if necessary, but I will not pay for anything above some upper limit.
Seems that DO has the former but not the latter, because if things get out of hand (caused by an attack, a bug in my code, going viral) the customer can be stuck with a bill. Alerts do not alleviate this risk. Pricing that is generally predictable does not alleviate this risk. Only a hard cap does. I want a plan that says "you have 250 GB of traffic, after which requests will fail and you'll get an email". You can make it nicer by sending me a warning email at 200GB so that I have time to upgrade my plan if I want.
If you want controllable costs and you don't want people using your service because interest explodes, then just stick to a regular droplet, no?
The entire point of this is that if usage explodes, you want to pay to support that usage. That's the entire feature.
(Also, HN frontpage traffic isn't that much -- it's a few requests per second at most, not thousands per second.)
The only scenario I can imagine where this would be a genuine concern would be if you were subjected to a (D)DoS-type attack. But in that case you still want legitimate users to get through, so you really need a separate DoS-protection layer which is totally orthogonal to this.
Am I missing something?
Why would that be true? I thought the point of a PaaS was getting a Platform - as a Service. I don't interpret that to mean having no control or limits on potential costs. To me a PaaS is about not wanting to manage a the metal or infra under the app. Which i don't think is misguided or inaccurate.
To look at it differently: I am a customer to someone. I am a customer who wants to buy a product that manages all of the infra for my application. I also have a limited budget, and the notion of an unlimited budget is an instant no for me.
Call the XaaS whatever you like, but my motivation is clear. Maybe DO doesn't want me as a customer (if what you say is true about PaaS), but i think there's opportunity there for a new XaaS.
If your droplet isn't using all of it's resources (CPU, RAM, DISK), they are able to oversell their capacity.
There's a difference between load balancing of shared resources and (what I believe must be) deliberately deceptive practices. A customer-centric company would send an email to notify you of this kind of over-charging.
It's premeditated and dispicable.
The pricing model for App Platform seems antithesis to that, though, which is interesting. DO is becoming more like AWS/GCP with every feature release, which I don't necessarily find to be a good thing.
Nothing was deployed. Zip, zero, zilch resources were used month-on-month. My fault, yes, but naively I assumed if this was the case, billing would automatically drop to zero.
Whilst I bought access to X servers but had no way to remove the charge associated with that without contacting customer services when I decided X=0, permanently.
I mean, really? I have no problem with PAYG or PAYG to a capped amount, but PAYG for a fixed amount regardless of whether or not the resources are actually deployed is disingenuous at best.
This is like leasing a car, leaving it parked, and then complaining you have to pay the lease.
You don't complain that you were charged $200 for renting a parking space and never using it, no reason for this to be different for servers.
https://www.digitalocean.com/blog/introducing-digitalocean-app-platform-reimagining-paas-to-make-it-simpler-for-you-to-build-deploy-and-scale-apps
Yours is tracking clicks.Perhaps I've been spoiled by services like Netlify. I'd be interested to know what the benefits are of using DO's service over free alternatives.
I host on Google Cloud Storage, it is not that easy but not that hard either [5], GoAccess for web analytics, no HTTPS. I would be interesting to have a matrix of supported features on different platforms. And how deployment compares to Nginx, letsencrypt, git.
[1] https://www.netlify.com/products/analytics/
[2] https://community.netlify.com/t/download-raw-server-access-l...
[3] https://docs.netlify.com/domains-https/https-ssl/
[4] https://docs.netlify.com/routing/headers/#syntax-for-the-hea...
[5] http://sergeykish.com/google-cloud-storage-static-hosting
I've used GCS before and I agree it's not easy/hard, but certainly not as simple as Netlify.
> I would be interesting to have a matrix of supported features on different platforms. And how deployment compares to Nginx, letsencrypt, git.
That would be useful, especially now that there are more and more options out there. I've seen benchmark comparisons but features would be more useful in my opinion, unless the speed is really poor.
I'll have to look at the benefits of that over Netlify, too.
It seems the bulk of the time was from installing ruby gems for Jekyll. Maybe GitHub Actions mirrors them or something so it can run faster?
Besides that, it works great. Actual live performance seems as snappy as one would expect from a static site and setting it up was almost one click. I'll definitely be looking into this in more detail.
First impressions are good and I may well migrate over for static site and API server (API server is currently running on a droplet as a single docker container, so seems like a nice way to lower the effort I have to put in). Everything else is running on AWS for.. reasons.. so this looks like a nice way to simplify my non-AWS stuff. I'll be experimenting with it over the coming days! The bandwidth limits are the biggest concern.
I don’t mind fraud protection measures, and am willing to provide additional verification based on what’s asked for and relevance. But there’s no such process with this company.
Later I see large scale layoffs in DigitalOcean, and I don’t think the situation could get any better.
I know the same kind of lack of customer service could be said of Google and certain other companies too. But DigitalOcean made my very first experience a bitter one and to advocate against it.
I moved to lightsail. It has problems but at least AWS support treats you like a human.
I mean, the cheapest Droplet is $5 a month with 1GB of Memory, 1 vCPU, 1TB transfer and 25GB storage. While the same tier of App Platform only gives you 512MiB of Memory and 40GiB Outbound transfer, plus you have to pay extra for the storage/db.
Why the price varied this much? Kubernetes was that expensive?
Caprover is essentially a really nice GUI for docker swarm, Let's encrypt and nginx.
Or yes, use their one click droplet and be using DO anyway except you manage the server if it breaks. Also auto scaling? That's on you
Eg, if someone wants to clone something and it manages to succeed, they clearly got _something_ right. Either a captive audience, a better UX, a better pricing structure, etc. There's almost always room for ~innovation~ competition, so why poke fun at it?
I suppose if you think it's truly inferior in every way compared to Caprover your tone might make sense - but even then, i've never heard of Caprover, if i was a customer looking for this product (and i may be) i'd probably have defaulted to DigitalOcean for this. If that alone ends up being profitable for them - a Caprover clone with a well known name - why wouldn't they do it?
I see these types of "HN Dropbox" comments on HN so frequently and i just don't get it. There's lots of angles to product viability, and these comments seem to be purposefully ignorant. Not saying you are ignorant, just that the comments seem to try to ignore any logical reason for competition.
I had to go to Heroku before to be badass but now I can do that with DO who align more to my way of thinking as a developer.
But there's also the problem of fragmentation in open source.
I've been using caprover from the early days, and I've seen how much work githubsaturn has put into making it really easy to use.
I think digital ocean has left a lot to be desired on their new offering, which could have been avoided, if they considered collaborating.
And ofcourse I never said digital ocean is just rsync. Just like caprover isn't just docker swarm. The whole is greater than the sum of its parts.
But their new offering is definitely inferior in terms of functionality.
Google AppEngine is very similar.
Their managed Kubernetes offering is a bargain compared to EKS.
That said, auto-configuration guessing based on the contents of a GitHub repo is probably the future - Automatically get a redis server when you've installed a redis driver, etc.
I wonder how they are doing this from a security standpoint. For customer workload isolation is every container actually a VM? The pricing/sizing kind of makes it look like that.
> App Platform provides predictable, easy-to-understand pricing
How? Outbound network is charged per-GB. I know autoscaling isn't supported yet, but hopefully they support setting a max number of instances. One of the things people like about DigitalOcean over other cloud services is that you can sign up to pay $X per month and know that is what exactly what you will pay, no surprises.
> Upcoming features
The list of things not supported yet includes auto-scaling and VPC. It is hard to imagine using a PaaS without autoscaling. And I wouldn't want to build out a microservices-like architecture without VPC.
Overall I really like the concept of the offering. Simple PaaS, with custom container support, Kubernetes (for what it is worth in a PaaS, I don't know), and predictable pricing. That all sounds really good.
I have more than 30 sites with Digital Ocean and I manage them via Forge. Total I pay is about $100/month including the droplet.
I would have to pay $150/month ONLY for the apps without including the droplet if I use this system?
Am I missing something?
I was really keen on on until I saw that section.
The benefit of PaaS offerings is generally that you pay per request.
The bandwidth limits on this also seem incredibly out of whack with standard droplets.
Though I would forgive you for forgetting about EB since it sometimes feels like AWS's neglected step child.
Have fun tonight!
/s
Or from this here DO innovation either.
AWS in general follows a paradigm where the target market is generally large, huge enterprises with niche use cases and large IT organizations that don't mind (and often require) taking fine-grained control of things like setting up CI/CD pipelines, deployment configurations, etc. These things are all possible and powerful on AWS but they mostly require self-configuration, which is sort of the opposite of what Heroku/DO App Platform are trying to be.
Beanstalk is in a weird place because it still follows that AWS paradigm of "we want to expose all of these fine-grained controls to the power users at large enterprises" while also still attempting to make it easier for the average developer. The end result is that Beanstalk gets stuck somewhere in the middle.
Beanstalk is a very capable and powerful service, and you certainly can set up a CI/CD pipeline in the way you've described, but you have to set it up yourself using AWS CodePipeline or by using the beanstalk CLI... which is certainly not as developer friendly as something like Heroku, especially if it's just a hobby app that you're toying with on the weekends.
And to muddy the waters a bit more, AWS also has Amplify, which actually does have one-click-setup for a GitHub linked CI/CD pipeline, but AFAIK it's mostly meant for static websites or for mobile apps, so it isn't exactly the same target use cases as Beanstalk.
This sentence is a bit worrying though:
"We automatically analyze your code, create containers, and run them on Kubernetes clusters."
I still want to be able to make _some_ decisions as a developer.
You do have complete control over the configuration, see https://www.digitalocean.com/docs/app-platform/references/ap...
Really, Go? It's barely used!
HN when discussing a new product: "OUTRAGE! It must support EVERYTHING I want on launch day!"
You are describing internet mostly. There's simply too many unreasonable people on the internet.
Maybe examples of how server/workers communicate, support for RPC, event queue. I'm in the process of figuring out all this stuff and App Platform sounds perfect, but without a starting point it may become more straightforward to take the platform-agnostic approach and spin up droplets where I control all of this.
Basic plan has 40 Gib/month egress = 0,0001808 * 40 = 0,00723 MB/s
Professional plan has 100 Gib/month = 0,0001808 * 100 = 0,0018 MB/s
That's not much if you need to server some actual content. This is really just to run cheap workers that don't require much cpu/ram and networking. And even then it might be cheaper to just get a vps.
Not just you, I think Heroku is getting a bit pointless.
After all, writing k8s yaml files and automating my infrastructure instead of focusing on my product gets me up in the morning, that's the real excitement. I shouldn't be the only one who is ecstatic about this.
So anyway, why would anyone what to use a PaaS?
An easy and proprietary deploy layer isn't anything new. Docker makes it already quite easy to deploy anything, either to a single machine with docker-compose or k8s for multiple nodes. Former isn't much harder than any "app platform", is enough for most, you aren't vendor-locked-in and hosting costs are at the lowest since it's bare-metal. You want something easier? There are already gazillions other (proprietary) options.
Maybe I missed something but I don't get what makes DO any special here.
Extremely hesitant to GCP ever since they performed that price hike of their GKE product for their control plane.
I really can't trust them anymore, given that nearly all of Google's entire product suite can just get deprecated whenever they feel like it.