3 ms·
Say I want to write an app, deploy it, and never think about it again. What's the easiest way to do this? Fly.io? AWS Lambda?
by lopatin 4y ago
Say I want to write an app, deploy it, and never think about it again. What's the easiest way to do this?
Fly.io?
AWS Lambda?
- nprateem 4y agoGoogle Cloud Run is very easy.
- the__alchemist 4y agoIf it's a web app, Heroku is a smooth experience; it lets you deploy by pushing a git repo.
- bordercontrol 4y agoHetzner Ubuntu Server, a good firewall configuration and automated backups. I can't think of anything easier. I tried a lot of stuff, but this just works. For internal applications I basically block all traffic outside of our office network, activate auto updates for the OS and just stick to one version of the app for as long as I can. Edit: and only one app per server. Also only the Hetzner Cloud offering with managed backups and managed firewall.
- fauigerzigerk 4y agoHow does this meet the condition "write an app, deploy it, and never think about it again"? As I'm reading it, your setup is the exact opposite of that.
- bordercontrol 4y agoWhy do you think you need to touch them after deployment? You just pay the monthly bill. The thing is you can't just deploy and rest usually as there are often security concerns, your provider could run out of service, various system failures which require a restore of an healthy state or similiar. Even if you serve just static files, there could be the need to adjust your DNS, because the provider changed after 5 years something, or some other provider-related configuration. You really want to care for all those things at your frist deploy if you don't want to care for them long-term. The Hetzner firewall makes frequent security app updates mostly unnecessary, Ubuntu auto updates care for the security of the OS, the backups make recovery easy, if Hetzner goes out of service, you can restore your system wherever you want as it is just an Ubuntu server, by keeping only one app per server you also reduce the complexity of the system, separate the systems, so that failure can't spread. Managing a server is nowadays with offerings like Hetzner the easiest way to run apps which just need to work and don't need to scale to exponentially over time. Why add anything on top of it? It's done really within 5 minutes if you know what you do. If you need something which scales and doesn't require file storage / databases, then I'd go for the provider-agnostic Serverless framework. If you need storage and/or databases then it really depends, as Serverless gets costly at these things and more complex and there are more provider-lock-ins. Containers may make mor sense in such cases. At our company we use these two systems to reduce maintaining basically to zero.
- 8organicbits 4y agoI have a couple notes for node.js on AWS Lambda. If you're at all security conscious you'll want to regularly bump the runtime version and update your packages.json. Some automation with GitHub actions or similar should be able to do that. Probably add some basic testing to make sure things still work before you deploy. I haven't automated the ones I manage, and I've updated them maybe 1-2 times a year for security reasons. As an example, node 12 was released in 2019 [1] and will begin deprecation phases in another month [2]. So it looks like a 4 year support cycle, although old runtime versions will still run. If you're using any of the AWS security scanning tools, these will flag any vulnerable dependencies and then you'd update them. Those seem fairly common in the node ecosystem, so other languages may see lower toil. [1] https://nodejs.org/en/blog/release/v12.0.0/ https://nodejs.org/en/blog/release/v12.0.0/ [2] https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes...
- fauigerzigerk 4y agoDepends on your app of course, but if you can live within the confines of something like Cloudflare Pages/Workers you can get pretty close to "never think about it again" https://pages.cloudflare.com/ https://pages.cloudflare.com/