[HN Gopher] Fly.io: The reclaimer of Heroku's magic
       ___________________________________________________________________
        
       Fly.io: The reclaimer of Heroku's magic
        
       Author : sealeck
       Score  : 171 points
       Date   : 2022-05-15 19:56 UTC (3 hours ago)
        
 (HTM) web link (christine.website)
 (TXT) w3m dump (christine.website)
        
       | onphonenow wrote:
       | I'm using fly.io lightly.
       | 
       | One thing for me - fly.io is cool, does a lot of cool fancy
       | things. However, the basic PaaS stack from Heroku gets a bit lost
       | / not always fully there for me. For a while they didn't really
       | talk about their container deploy story (AWS App Runner / AWS
       | Fargate, AWS ECS). Digging in, it's all doable, but they do so
       | many cool things it sometimes isn't obvious to me how the basics
       | go. That's changed in last year (at least looking at the docs)? I
       | also had some bobbles on UI in past.
       | 
       | I don't need multi-region in my case, but I do want low latency
       | for example. Easy to find this on aws
       | (https://www.cloudping.info/) - a bit harder to get all regions
       | with a ping endpoint on fly.io - I went looking, they have a demo
       | app you can I think find what they see as closest region, but I
       | wanted to roll my own cloudping.info style approach and it wasn't
       | obvious how to do so. I'm getting about 8ms from my home computer
       | to my closest AWS region.
       | 
       | The basic story need for me is github commit -> goes to dev for
       | review -> promote to production? I happen to use containers now
       | (even if inefficient) because getting stuff "working" often is
       | easier -> if it's working on the container on my machine, it'll
       | work up in the cloud.
       | 
       | That said, there is definitely I think a crop of AWS / Heroku
       | competitors that are going to start to be competitive (think
       | cloudflare on primitives, fly.io and render etc on PaaS style).
        
       | newaccount2021 wrote:
        
       | colesantiago wrote:
        
         | Bilal_io wrote:
         | Edge on Android with the built-in AdBlock Plus prevented all
         | ads from showing up.
        
         | sealeck wrote:
         | I mean you could just install an ad blocker.
        
         | normie3000 wrote:
         | No ads for me either
        
       | st3fan wrote:
       | For me the missing bit in Fly is scheduled tasks. I know how to
       | solve this by spinning up an app that runs permanently as a
       | scheduler, but basic cron-like scheduling should be part of the
       | platform IMO. All other FaaS-like service do this.
        
         | tptacek wrote:
         | I'd love to do this, if for no other reason than I _hate_
         | working with cron. What would you use it for? What would the
         | ideal version of this feature look like for you? What kind of
         | apps would you be more easily able to ship? Is it mostly so you
         | wouldn 't need to keep a single tiny running VM sitting around
         | running cron?
        
           | st3fan wrote:
           | Some apps are just that - a periodic task. Nothing more.
           | Ideally a task project would have a git repo with a short
           | fly.toml, a requirements.txt and a main.py. (In case of
           | Python. I'm not familiar with using other languages on
           | fly.io) I don't think it needs to be more complicated than
           | that.
        
           | krn wrote:
           | > What would the ideal version of this feature look like for
           | you?
           | 
           | I think that Render solved "Cron as a Service" beautifully:
           | 
           | https://render.com/docs/cronjobs
        
           | DizzyDoo wrote:
           | The sort of things I have had running on a schedule (using
           | Celery[0] or something like it) are sending a set of emails
           | at a certain time, running a report or generating the data
           | for reports, even running a backup of some data.
           | 
           | [0] - https://docs.celeryq.dev/en/stable/userguide/periodic-
           | tasks....
        
           | joseph wrote:
           | I'd like to do any one-off job, not only scheduled ones;
           | retrieving data and transforming or storing it, scraping a
           | web page, running a database migration. My biggest annoyance
           | with Fly is the assumption that everything is a long running
           | application.
        
       | [deleted]
        
       | pharmakom wrote:
       | Can someone explain what fly.io actually _is_ for someone with an
       | AWS background?
        
         | jjtheblunt wrote:
         | the website for fly.io is extremely well written in explaining
         | fly.io in terms of AWS
        
       | [deleted]
        
       | normie3000 wrote:
       | How mature is fly.io?
        
         | throwawaycuriou wrote:
         | Define mature
        
         | mrkurt wrote:
         | We are DigitalOcean circa 2015 mature. Good enough for some
         | very large customers, good enough for many developers, not some
         | place I'd run pacemaker infrastructure.
        
           | indigodaddy wrote:
           | Does anyone run pacemaker on non-baremetal? Can you even? I'm
           | aware you're just using it as an analogy/example, but was
           | just wondering..
        
             | antod wrote:
             | I did run some VRRP or CARP stuff (forget the specific
             | tool/protocol - but that's kinda like pacemaker right?) in
             | an immature OpenStack cloud once that didn't have a good
             | LBaaS yet. It was a semi supported hack documented by the
             | provider.
        
           | sanjayio wrote:
           | Where would you feel comfortable running pacemaker infra?
           | Half-joking here.
        
             | [deleted]
        
       | Shadonototra wrote:
       | Fly.io is backed by YCombinator
       | 
       | In order to increase transparency on Hacker News, it would be
       | nice it the title was changed to include the fact that's it's
       | backed by YCombinator
       | 
       | https://www.ycombinator.com/companies/fly-io
       | 
       | --
       | 
       | I personally don't think it's better than Heroku, you have much
       | less features, Heroku is much cheaper + they have an unbeatable
       | free tier
        
       | config_yml wrote:
       | Does fly.io have the same git push deploy magic?
        
         | jchw wrote:
         | Kind of; flyctl deploy will "magically" build and deploy your
         | app. They show how incredibly easy it is to throw this into
         | GitHub Actions, which I've probably done about 8 times in the
         | past week, and it seems to work about as well as you'd expect.
         | (My only deviation from the example is that I limit the
         | branches to deploy to just master.)
         | 
         | To me, flyctl deploy is perhaps even better, because it is VCS
         | agnostic and integrates with existing pipelines. I think it is
         | fully worth it.
        
       | sergiomattei wrote:
       | I don't feel that way at all.
       | 
       | Every time I've tried Fly (trust me I've wanted to love it),
       | there's always a rough edge or the service breaks for me.
       | 
       | First time I tried it, the web panel wasn't even loading. Second
       | time, months later, everything was 500ing and I couldn't find a
       | way to SFTP into a disk (!!!). Total dealbreaker.
       | 
       | This was easily done in Render.com with an even more magical
       | experience. Deploy from a GitHub repo and I was live in minutes.
       | Upload the files from local and done.
       | 
       | I want to love Fly so much. I align with their mission. I love
       | their first class Elixir support. But so far I'm not impressed.
       | 
       | It looks to me like Render is seriously taking the PaaS crown at
       | the moment, with innovation after innovation, affordable pricing
       | and excellent user experience.
        
         | jhardy54 wrote:
         | Why do you need to SFTP into a disk?
        
           | sergiomattei wrote:
           | I was moving a Ghost blog from Render. Ghost is notorious for
           | having a difficult time with hosting assets in S3, so it uses
           | disks.
           | 
           | I needed to move the Ghost assets directory for all the
           | posts.
           | 
           | This was a ten minute thing in Render. SOL in Fly.
        
             | indigodaddy wrote:
             | Can you not ssh into a fly instance and then pull?
        
               | sergiomattei wrote:
               | No. Flyctl SSH does not allow this functionality.
        
           | [deleted]
        
         | mrkurt wrote:
         | We've been kicking around ideas for managing files on volumes.
         | This is a common problem - it's actually more difficult than
         | you'd expect because "securitah". Once your volume is mounted
         | in one of your VMs, we can't run tools outside the VM to let
         | you manage the file system. On something like k8s with vanilla
         | Docker, we could. But no one should run multitenant Docker.
         | 
         | It's not really an excuse, just a reason it's taking longer to
         | solve than we'd like.
         | 
         | The errors on the web UI sucked. These have improved
         | drastically in the last three months (because we have smart,
         | dedicated people working on fullstack for us now).
        
           | sergiomattei wrote:
           | Thank you for the response. I want to love your service.
           | 
           | Will keep an eye on the changelogs to see when I can test
           | deploy my apps.
        
       | the__alchemist wrote:
       | > Heroku was catalytic to my career. It's been hard to watch the
       | fall from grace. Don't get me wrong, Heroku still works, but it's
       | obviously been in maintenance mode for years.
       | 
       | Sounds like mission accomplished; the elusive 1.0.
        
       | hthrowaway5 wrote:
       | At one point (a very long time ago now) it was declared that
       | Dogwood was the future and as a result Go would be the language
       | of choice at Heroku and Erlang would be no more.
       | 
       | Trouble is that Erlang ran all the important Cedar code (it might
       | still today) and the Erlang engineers didn't particularly like
       | the news that Erlang code was essentially deprecated so they left
       | and nobody knew how to maintain the stack. This definitely wasn't
       | the only problem we had but it was a big one.
       | 
       | What do fellow Herokai think? Was Dogwood a fool's errand? Or did
       | we just not get enough staff to build it properly?
        
       | chasd00 wrote:
       | if you're counting pennies just use dokku on a vps, there was
       | even an article here on HN recently. By the time you outgrow it
       | you'll have outgrown the vast majority of the new paas sites that
       | are springing up trying to be the next Heroku and your choice of
       | where to go next will be easier. In the meantime, you'll have
       | saved all that effort on just picking where your app is hosted
       | and, instead, spend it on actually delivering your app. crazy
       | thought, i know.
        
       | brundolf wrote:
       | The only thing I don't like is their usage-based pricing. On
       | Heroku I could pay $7 a month and _know_ I 'd never be charged
       | more than that. I'm sure when you're scaling a service it's fine
       | - maybe even better - to do it on a sliding scale. But for a
       | fire-and-forget blog site, I don't want to have to worry about
       | stuff like that.
        
         | sanjayio wrote:
         | Big concern of mine as well. They take your CC for usage, which
         | is reasonable given bad actors, but then I can't put a limit on
         | my monthly charges.
        
         | detaro wrote:
         | That's also something that has kept me with VPS hosts over
         | cloudy things for hobby stuff: a) included traffic amount is
         | vastly higher there, leading to way lower cost per GB if you
         | need it and b) they usually do just cap you if you exceed
         | traffic and don't opt-in to pay more.
        
         | natly wrote:
         | Just use a static hoster for a blog site (like netlify or even
         | github pages).
        
           | ushakov wrote:
           | what if they want to use a CMS?
        
             | pkalinowski wrote:
             | https://forestry.io could help
        
               | [deleted]
        
           | brundolf wrote:
           | I've got a small amount of dynamic content
        
             | skrtskrt wrote:
             | DigitalOcean App Platform has a $5/month flat rate for
             | dynamic stuff on top of two static sites hosted for free...
             | 
             | if something goes crazy and you end up using a wild amount
             | of outbound data, it looks like the next jump up is only to
             | $12
        
               | [deleted]
        
         | mrkurt wrote:
         | This is a problem. And a bit of an own goal on our part.
         | 
         | I hate services that don't put a price on things like bandwidth
         | (because there's always a price!). So we priced bandwidth and
         | made it transparent. You can put an app on Fly.io and server
         | petabytes of data every month, if you want. We'll never
         | complain that you're serving the wrong content type.
         | 
         | But the reality is - having an unlimited bandwidth promise is
         | perfect for for a fire and forget blog site. We're not doing
         | ourselves any favors with scary pricing for that kind of app.
        
           | brundolf wrote:
           | I think it's also fine to just say "that's not our primary
           | target market". Just thought it was worth pointing out as a
           | (perhaps small?) segment of Heroku's market, if we're
           | comparing apples to apples
        
             | mrkurt wrote:
             | Oh but you are! And it won't even cost you anything. I'd
             | bet money your blog fits in our free tier, we just don't
             | (a) tell you that and (b) solve the "what happens if
             | there's a bandwidth burst" problem.
        
               | brundolf wrote:
               | Yeah, I also supposed that it would probably _mostly_ fit
               | in the free tier, which is great. But I 'd lose a small
               | amount of sleep over the possibility of getting a huge
               | bandwidth burst (DDOS or otherwise) that goes straight to
               | my bank account
               | 
               | A feature that could help would be giving people the
               | option to set a cost limit, where if their site surpasses
               | that limit in a given month you just pull it offline
               | instead of charging more money. That's what I'd want for
               | my blog site, and I've heard others request such a
               | feature from other cloud providers
        
           | ignoramous wrote:
           | > _We 'll never complain that you're serving the wrong
           | content type._
           | 
           | Cloudflare shouldn't restrict media (video, images, and
           | audio) from its unlimited bandwidth promise for Workers and
           | R2 (though, ToS doesn't yet reflect that).
           | 
           | https://news.ycombinator.com/item?id=28682885
           | 
           | > _But the reality is - having an unlimited bandwidth promise
           | is perfect for for a fire and forget blog site_
           | 
           | I think, an auto _flyctl pause -a <myapp>_ when _myapp_
           | exceeds _$x_ in charges (with an auto-resume when the billing
           | rolls over) may serve as a viable interim solution. May be
           | this is already possible with fly.io 's graphql api?
        
           | EnKopVand wrote:
           | I don't want an unlimited bandwidth promise, I want a cap
           | that I know can never be exceeded. I mean, I use Azure
           | professionally and one of the key reasons I don't use it to
           | host my own stuff is exactly because it could potentially
           | become very expensive. I'd rather have my own stuff shut down
           | until I decide what I want to do with it.
           | 
           | Things like alerts are fine, professionally, but not for
           | things like running a small app, blog or whatever, that
           | you're not sure where is heading.
           | 
           | I don't think anything I've build on my own time has ever
           | ended up breaking my bank, but signing up my credit card is a
           | risk I'm never going to take, and I'm fairly certain I'm not
           | alone in that. Of course I have no idea if there are enough
           | of us to make small scale fixed prices products profitable at
           | scale.
        
             | mrkurt wrote:
             | We actually launched with that feature:
             | https://news.ycombinator.com/item?id=22616857
             | 
             | No one took us up on it. What we found is that the majority
             | of people want their stuff to stay up, and the right UX for
             | "shut it down so you don't get billed" is not obvious.
             | 
             | We ended up implementing prepayment instead. If you sign up
             | and buy $25 in credit, we'll just suspend your apps when
             | the credit runs out.
             | 
             | Bandwidth is weird because we have to pay for it (as does
             | every other provider). We aren't yet in a position where we
             | can just make it free without limits. Maybe next year. :)
        
               | brundolf wrote:
               | I can't speak for your whole market, but I know for me
               | the pre-loading flow sounds really clunky because I'd
               | have to go and manually add funds each month (right?)
               | 
               | It's understandable if your usage data showed the fee-
               | capping feature just wasn't popular enough to be worth
               | maintaining, though that would surprise me based on this
               | thread (but possibly HN just isn't representative of the
               | whole market)
        
               | ceejayoz wrote:
               | I'd be happy with a "refill if under $10 up to $x/month".
               | If they can cut off when you're out of credit they can
               | presumably do it for other criteria, too.
        
           | bsder wrote:
           | > And a bit of an own goal on our part.
           | 
           | More than a bit.
           | 
           | Simply give people the option to put a charge limit and let
           | the app be offline when that limit gets hit. Don't make it
           | the default, but do allow people to do it.
           | 
           | This would resolve 99% of the fear people have. And most
           | people wouldn't set the limit anyway. However, your
           | _knowledgable_ people might set it, and those are the ones
           | you 're most trying to attract.
        
       | 2c2c2c wrote:
       | There's a lot of chat about fly.io on HN. possibly just because
       | the founders and friends are posters here.
       | 
       | Is there any in depth comparison between them and render.com ?
        
         | jchw wrote:
         | As an occasional third-party Fly "shill" of sorts, I mainly
         | talk about Fly because I've really wanted almost exactly what
         | Fly does for a long time now. I'd tried other things like
         | Hyper, Fargate and Cloud Run, but they've mostly been
         | disappointing in some regards, being cumbersome to use or get
         | started with, unrealistically expensive, or simply being too
         | slow or limited. Fly is none of that. It still has some stuff
         | that's lacking; resizing disks is probably the biggest thing
         | missing; the proxying is surprisingly complete but UDP services
         | are a little awkward; copying data in and out is somewhat
         | tricky, you have to use SSH but over a wireguard tunnel with an
         | ephemeral SSH key and on Windows it's not particularly fun. (I
         | don't _think_ SCP is supported either, which is fine, but
         | still.) It remains exciting nonetheless because it scratches an
         | itch that I don't feel anyone else has really managed to;
         | Netlify and Vercel and probably Cloudflare Pages does static
         | sites very well, but Fly feels like, so far, the first PaaS to
         | do any arbitrary service very well. The ability to throw Docker
         | images into micro VMs with such ease and speed with this
         | paradigm is truly liberating.
         | 
         | edit: As a note, I have _not_ tried Render. I am sure it is
         | fine too. I found Fly first and it satisfies my needs well
         | enough that I don't feel it is necessary to keep searching,
         | though I wouldn't mind checking it out just to see what it has
         | to offer.
        
         | atonse wrote:
         | I think it is because they are refreshingly open about their
         | stack and people love their writing tone.
         | 
         | And the architecture seems solid.
        
           | sanjayio wrote:
           | Agreed, really enjoyed their tone on explaining SQLite and
           | litestream.
        
         | mavbo wrote:
         | Not in-depth, but two things that have stood out to me in
         | assessing Render vs Fly are Render's lack of Multi-region apps
         | and release phase scripts for running migrations. Easy multi-
         | region apps seem to be a main selling point of Fly. However,
         | both of the features I mentioned are on Render's roadmap
         | (Multi-region apps has been on their roadmap since 2019, so
         | maybe not a priority?)
        
           | matthewcford wrote:
           | these were the reasons we chose fly in the end; very happy
           | with it
        
       | sergiotapia wrote:
       | My experience with Fly.io has not been a good one.
       | 
       | If I could sum it up, it would be that the dev ux needs a lot of
       | work, and it seems like they are mostly focused on the
       | fundamentals of the platform first.
       | 
       | Following their guide you get postgres not spinning up and
       | linking to your app correctly and you have to nuke your entire
       | app.
       | 
       | The billing UI is weird and feels cobbled together.
       | 
       | I don't feel secure using Fly right now. But again, they are
       | doing cutting edge shit and are probably focused on the
       | underlying bedrock of the platform. They can always circle back
       | to polish the dev ux.
       | 
       | Right now we're on Render.com and it does absolutely everything
       | we want with wonderful dev ux.
       | 
       | In my mind it's a race: can fly catch up to render's UX before
       | render can catch up to flys global mesh load balancing? We'll see
       | who wins.
        
         | mrkurt wrote:
         | It's very generous of you to assume we're focusing on
         | underlying platform. It's true! But it's a difficult thing to
         | notice when our service gave you papercuts.
         | 
         | We've just now grown large enough to have people focus full
         | time on the in browser UX. If you feel like fiddling around
         | again in a few months, let me know and I can hook you up with
         | some credits. :)
         | 
         | The billing UI is definitely cobbled together. This is because
         | I built it over a weekend and it's marginally better than "no
         | billing UI". I have learned that if I'm building features, they
         | probably aren't gonna be very good.
        
       | mountainriver wrote:
        
       | jedisct1 wrote:
       | Koyeb https://www.koyeb.com also feels magical.
        
       | ushakov wrote:
       | i'm running https://wikinewsfeed.org on fly.io
       | 
       | very satisfied so far and would definitely deploy there next
       | time!
       | 
       | the killer feature i like the most is automatic prometheus
       | metrics collection
       | 
       | one thing i don't really like about fly.io is the fact that they
       | charge money for free Let's Encrypt SSL certs
        
         | datalopers wrote:
         | They aren't charging for the certificate so much as they're
         | charging for TLS termination, infrastructure, DNS, caching,
         | handling invalidations, etc. It's also 10 free then $0.10/mo
         | per certificate thereafter (or $2/mo for wildcard). They also
         | donate 50% of their TLS fees to Let's Encrypt.
         | 
         | So, yes, some users will have have to pay for certificates, but
         | it seems extremely reasonable to me.
        
           | ushakov wrote:
           | well, maybe
           | 
           | but, my expectation as a PaaS customer in 2022 is that you
           | shouldn't need to pay for a SSL cert
           | 
           | the expectation is because nobody else charges for them
           | anymore, not even their competitors
        
             | datalopers wrote:
             | Do they? I feel like you're just uncomfortable with line-
             | item pricing and prefer flat all-in-one pricing. What are
             | the other competitors that offer actual PaaS instead of
             | static-site hosting?
             | 
             | * Render.com charges $0.60 per custom domain after the
             | first 25
             | 
             | * Heroku gives you "free" custom certificates once you're
             | on a $7/mo minimum.
        
               | anurag wrote:
               | A clarification: _every_ static site or full stack app
               | can have up to 25 custom domains for free on Render. Most
               | sites only have 2 (apex and www).
        
       | taylorlapeyre wrote:
       | The main thing I want is pipelines - review apps, staging apps,
       | and promotion to production, all integrated closely with GitHub,
       | along with a slack integration that lets me do all of it in a
       | public chatroom.
       | 
       | Until another service has all of this, we're sticking with
       | Heroku.
        
         | anurag wrote:
         | Render has review apps (https://render.com/docs/preview-
         | environments). We're actively working on pipelines (early
         | access ETA late summer).
        
           | taylorlapeyre wrote:
           | Any plans for a chatops extension for Slack? The best think
           | about Heroku is being able to say "/deploy [app]/[branch] to
           | [environment]", and have it Just Work, all with inline
           | threads that convey status updates about the deployment. Does
           | Render plan to build something like that?
        
             | anurag wrote:
             | No immediate plans, but I'd love to see this on Render at
             | some point, and not just for Slack.
        
         | [deleted]
        
         | mrkurt wrote:
         | First, Heroku's pipelines and GitHub integration are (or, I
         | guess, were) excellent.
         | 
         | We (Fly.io) intentionally didn't build a pipeline replacement.
         | We exist for one reason: to run apps close to users. We're just
         | now to the size where we can do that well. It'll be a while
         | before we can get good at a second thing. Heroku shipped them
         | something like 8 years after they launched.
         | 
         | At the same time, GitHub actions and Buildkite are _very_ good.
         | They're less opinionated than Heroku Pipelines, but I don't
         | regret figuring out how to use them for my own projects.
         | 
         | I think there's a chance that emulating Heroku that closely is
         | a path to failure in the 2020s.
        
           | taylorlapeyre wrote:
           | Yeah, totally get that.
           | 
           | > I think there's a chance that emulating Heroku that closely
           | is a path to failure in the 2020s.
           | 
           | I'm not sure I agree, considering that a different platform
           | emulating this exact setup with ~zero configuration is
           | basically everything we want! GitHub actions is (I agree)
           | really great and very versatile, but I'll take Heroku's UI
           | over digging through actions plugin documentation for hours
           | any day.
        
         | EqNoteqp wrote:
         | I get the intention with Slack. I've never understood, except
         | for the geek cred, pushing work into chat services. Github is
         | open to the team too.
         | 
         | I hear complaints about chat distractions and see engineers
         | create those distractions. I'm at a loss why we want to do that
         | to ourselves?
         | 
         | Nevermind it's one more pipeline for messages to lost in. It's
         | needless complexity and configuration too.
        
           | closeparen wrote:
           | Chat is a multi-player CLI. Anything you would do in a
           | terminal that your team members should also know about can
           | profitably be integrated with chat.
        
           | bri3d wrote:
           | The main reason is to use a chat solution is as a unified
           | ledger / single pane of glass. Silly as it is, there isn't
           | really a better solution out there for "integrate all of my
           | third-party deploy, CI, build, etc. status updates in real
           | time, in one place." Sure, someone can click into GitHub, but
           | if you use another service to deploy into, does GitHub pipe
           | the status of that service into your dashboard? How about
           | error logs and alerting, do they go there? If there's a
           | customer incident, does the trust site status show up as
           | well?
           | 
           | On Slack and other chat solutions, it's possible to set up a
           | #operations style single-pane-of-glass channel with deploy
           | notifications, error alerting, and customer communication
           | platforms all pushing to the same place. If an incident
           | occurs, engineers, product, support, etc. can all collaborate
           | around what's going on in real-time without needing to ask
           | "hey has someone updated the trust site yet?" or click into
           | 10 different tabs.
           | 
           | It's honestly pretty good when it works well and really bad
           | and noisy when it doesn't, but it has a place.
           | 
           | Non-engineering are usually in Slack too, which really helps
           | when support, product, or the field need quick answers to
           | easy questions like "has this commit been deployed yet
           | today?"
        
             | tshaddox wrote:
             | Perhaps for looking back to see the history of things, a
             | unified ledger is convenient. But as a notifications/alerts
             | solution it's terrible because it essentially guarantees
             | that the signal to noise ratio will be incredibly low.
        
       | kbrisso wrote:
       | Using Fly.io it was pretty easy to to spin up an app.. I wish it
       | used Docker Up/Compose files though. I'm not a Docker expert but
       | being able to use those files seems like it would be easier to
       | deploy apps. Please correct my ignorance if this isn't so.
        
       | daxfohl wrote:
       | Heroku was magic for hosting college projects of 2010's
       | complexity. The failure wasn't in the prohibitive cost at scale
       | (though that factor didn't help); it was that for most real-world
       | stuff we need IaaS, not PaaS. That has become more and more
       | evident over the last ten years.
       | 
       | I think if fly succeeds, they need to figure out edge IaaS, and
       | not put all their eggs into edge PaaS. And I hope they do! I'm
       | curious what a successful edge IaaS looks like!
        
       | anon3949494 wrote:
       | After all the chatter this week, I've come to the conclusion that
       | Heroku froze at the perfect time for my 4 person company. All of
       | these so called "features" are exactly what we don't want or
       | need.
       | 
       | 1. Multi-region deployment only work if your database is globally
       | distributed too. However, making your database globally
       | distributed creates a set of new problems, most of which take
       | time away from your core business.
       | 
       | 2. File persistence is fine but not typically necessary. S3 works
       | just fine.
       | 
       | It's easy to forget that most companies are a handful of people
       | or just solo devs. At the same time, most money comes from the
       | enterprise, so products that reach sufficient traction tend to
       | shift their focus to serving the needs of these larger clients.
       | 
       | I'm really glad Heroku froze when it did. Markets always demand
       | growth at all costs, and I find it incredibly refreshing that
       | Heroku ended up staying in its lane. IMO it was and remains the
       | best PaaS for indie devs and small teams.
        
         | sanjayio wrote:
         | I'm always confused why edge services are always selling points
         | given point 1. The most basic of backend services won't be able
         | to completely utilize edge services.
        
           | anon3949494 wrote:
           | Yep, for anyone confused on how this works:
           | 
           | You'd still be sending writes to a single region (leader). If
           | the leader is located across the world from the request's
           | origin, there will be a significant latency. Not to mention
           | you need to wait for that write to replicate across the world
           | before it becomes generally available.
        
             | mrkurt wrote:
             | This is the distribute-your-Rails-app-without-making-any-
             | code-changes version of that story. It works great for apps
             | that are 51% or more read heavy. You drop our library in,
             | add a region, and off you go. The library takes care of
             | eventual consistency issues.
             | 
             | HTTP requests that write to the DB are basically the same
             | speed as "Heroku, but in one place". If you're building
             | infrastructure for all the full stack devs you can target,
             | this is a good way to do it.
             | 
             | Distributing write heavy work loads is an application
             | architecture problem. You can do it with something like
             | CockroachDB, but you have to model your data specifically
             | to solve that problem. We have maybe 5 customers who've
             | made that leap.
             | 
             | In our experience, people get a huge boost from read
             | replicas without needing to change their app (or learn to
             | model data for geo-distribution).
        
               | anon3949494 wrote:
               | It's also trivial to serve read requests from a caching
               | layer or via a CDN. At any sufficient scale, you're
               | probably going to need a CDN anyway, whether your
               | database is replicated or not. You don't want every read
               | to hit your database.
        
               | jrockway wrote:
               | I don't think this is that trivial. I've never seen it
               | done correctly. It typically manifests itself as not
               | being able to read your own writes, and I see this all
               | the time (often from companies that have blog posts about
               | how smart their caching algorithm is). For example, you
               | add something to a list, then you're redirected to the
               | list, and it's not there. Then you press refresh and it
               | is.
               | 
               | I guess that's acceptable because people don't really
               | look for the feedback; why do users add the same thing to
               | the list twice, why does everyone hit the refresh button
               | after adding an item to the list, etc. It's because the
               | bug happens after the user is committed to using your
               | service (contract, cost of switching too high; so you
               | don't see adding the cache layer correspond to "churn"),
               | and that it's annoying but not annoying enough to file a
               | support ticket (so you don't see adding the cache layer
               | correspond to increased support burden).
               | 
               | All I can say is, be careful. I wouldn't annoy my users
               | to save a small amount of money. That the industry as a
               | whole is oblivious to quality doesn't mean that it's okay
               | for you to be oblivious about quality.
               | 
               | (Corollary: relaxing the transactional isolation level on
               | your database to increase performance is very hard to
               | reason about it. Do some tests and your eyes will pop out
               | of your head.)
        
               | mrkurt wrote:
               | Database read request are not the same as readonly HTTP
               | requests. I am much happier having all requests hit my
               | app process than I am trying to do the CDN dance.
               | 
               | Right now your choices are: run a database in on region
               | and:
               | 
               | 1. Use the weird HTTP header based cache API with a
               | boring CDN
               | 
               | 2. Write a second, JS based app with Workers or Deno
               | Deploy that can do more sophisticated data caching
               | 
               | 3. Just put your database close to users. You can use us
               | for this, or you can use something like Cloud Flare
               | Workers and their databases.
               | 
               | My hot take is: if something like Fly.io had existed in
               | 1998, most developers wouldn't bother with a CDN.
               | 
               | Weirdly, most Heroku developers already don't bother with
               | a CDN. It's an extra layer that's not always worth it.
        
           | kasey_junk wrote:
           | It's a tremendous latency speed up for read heavy apps that
           | can tolerate eventually consistent read replicas. Any app
           | using a popular sql rdbms likely falls into this category at
           | scale. Any app using a redid cache likely falls into this
           | category at scale.
           | 
           | Also any app that has global clients and terminates ssl
           | likely benefits from edge compute.
        
         | closeparen wrote:
         | Hot take: if people spent half the energy doing multi-region
         | that they today spend screwing around with Kubernetes, they'd
         | be a hell of a lot more reliable.
        
           | jpgvm wrote:
           | I think people misconstrue the benefits of k8s to be related
           | to reliability or similar. Ultimately it's about the API and
           | the consistency and productivity it offers.
           | 
           | For larger teams having a well defined API that delineates
           | applications from infrastructure that doesn't require extreme
           | specialist knowledge (it still requires some specialist
           | knowledge but vastly less than direct manipulation of
           | resources via something like Terraform) is a massive
           | productivity boost.
           | 
           | Of course none of that matters if you have 4 developers like
           | OP but for folks like myself that routinely end up at places
           | with 300+ engineers then it's a huge deal.
        
             | Trasmatta wrote:
             | > I think people misconstrue the benefits of k8s to be
             | related to reliability or similar. Ultimately it's about
             | the API and the consistency and productivity it offers
             | 
             | I think this is the first time I've heard somebody say one
             | of the benefits of kubernetes was productivity.
        
         | donmcronald wrote:
         | > It's easy to forget that most companies are a handful of
         | people or just solo devs.
         | 
         | I have the same complaint all the way down to simple sysadmin
         | tasks. Ex: MS365 has a lot of churn on features and changes.
         | It's like they think everyone has a team of admins for it when
         | in reality a lot of small businesses would be satisfied with a
         | simple, email only product they can manage without help.
        
         | iammiles wrote:
         | I strongly agree with your last paragraph. I used Heroku for my
         | wedding website and I would 100% use it again on a project
         | site.
         | 
         | In about 15 minutes I was able to take my site from localhost
         | to a custom domain with SSL with just a little more than a git
         | push. I can't think of many solutions that are simpler than
         | that.
        
         | twblalock wrote:
         | Even small companies should be multi-region, if they care about
         | uptime.
        
           | ceejayoz wrote:
           | Very few companies have uptime requirements so critical they
           | can justify this. Small companies with limited ops resources
           | may struggle to make a multi-region setup work more reliably
           | than a single-region one.
        
           | tomnipotent wrote:
           | No, they shouldn't. In many instances it's cheaper to
           | tolerate downtime than to pay to avoid it, especially when
           | there's no SLA involved.
        
             | treeman79 wrote:
             | Most of the time. If heroku is having downtime. Then Amazon
             | is having downtime. Then half the internet is down. Let
             | customers know Amazon is down. Sit back and relax.
        
               | nosvince wrote:
               | Wow, that's a horrible way of thinking about the user
               | experience. And honestly, I'm not surprised. That's why
               | companies that really care about the user experience will
               | always steal market share from those that don't.
        
               | neojebfkekeej wrote:
               | It's actually small companies that care about user
               | experience that will often make these trade-offs. Less
               | time managing multi-cloud deployments means more time
               | spent building our core product and talking to users.
        
               | [deleted]
        
               | tomnipotent wrote:
               | Uptime isn't an axiom. Most software isn't mission
               | critical and most users won't notice if it's down for 30
               | minutes once or twice a month, and for everything else we
               | have SLA's to manage professional expectations.
        
         | hthrowaway5 wrote:
         | As someone that was a very active Heroku user for years and
         | then worked there for years: I wouldn't trust it as my host.
         | There is nowhere near enough people maintaining it in order to
         | have confidence it'll run without reliability or security
         | issues. They aren't exactly in a position to retain or attract
         | talent either.
         | 
         | I thought Cedar was going to fall over years ago but ironically
         | I think people migrating _off_ the platform are helping it stay
         | alive.
        
         | tomjakubowski wrote:
         | > Multi-region deployment only work if your database is
         | globally distributed too. However, making your database
         | globally distributed creates a set of new problems, most of
         | which take time away from your core business.
         | 
         | Guess what? fly.io offers a turnkey distributed/replicated
         | Postgres for just this reason. You use an HTTP header to route
         | writes to the region hosting your primary.
         | 
         | https://fly.io/docs/getting-started/multi-region-databases/
         | 
         | You do still need to consider the possibility of read replicas
         | being behind the primary when designing your application. If
         | your design considers that from day 1, I think it takes less
         | away from solving your business problems.
         | 
         | Alternatively, you can also just ignore all the multi-region
         | stuff and deploy to one place, as if it was old-school Heroku
         | :-)
        
           | nickjj wrote:
           | > Guess what? fly.io offers a turnkey distributed/replicated
           | Postgres for just this reason. You use an HTTP header to
           | route writes to the region hosting your primary.
           | 
           | Doesn't this take away a lot of the benefits of global
           | distribution?
           | 
           | For example if you pay Fly hundreds of dollars a month to
           | distribute your small app in a few datacenters around the
           | globe but your primary DB is in California then everyone from
           | the EU is going to have about 150-200ms round trip latency
           | every time you write to your DB because you can't get around
           | the limitations of the speed of light.
           | 
           | Now we're back to non-distributed latency times every time
           | you want to write to the DB which is quite often in a lot of
           | types of apps. If you want to cache mostly static read-only
           | pages at the CDN level you can do this with a number of
           | services.
           | 
           | Fly has about 20 datacenters, hosting a small'ish web app
           | that's distributed across them will be over $200 / month
           | without counting extra storage or bandwidth just for the web
           | app portion. Their pg pricing isn't clear but a fairly small
           | cluster is $33.40 / month for 2GB of memory and 40GB of
           | storage. Based on their pricing page it sounds like that's
           | the cost for 1 datacenter, so if you wanted read-replicas in
           | a bunch of other places it adds up. Before you know it you
           | might be at $500 / month to host something that will have
           | similar latency on DB writes as a $20 / month DigitalOcean
           | server that you self manage, Fly also charges you $2 / month
           | per Let's Encrypt wildcard cert where as that's free from
           | Let's Encrypt directly.
        
             | anamexis wrote:
             | Yes, there are hundreds of different ways you could
             | accomplish this. Fly.io is a convenient and easy to use
             | one.
        
             | [deleted]
        
             | manmal wrote:
             | You don't need to route every write to primary though, but
             | only those writes that have dependencies on other writes.
             | Things like telemetry can be written in edge instances.
             | Depends on your application of course, but in many cases
             | that should be only a tiny fraction of all requests needing
             | redirects to primary.
             | 
             | And why would you get 20 instances, all around the world
             | right out of the gate? 6-7 probably do the job quite well,
             | but maybe you don't even need that many. Depending on where
             | most of your customers are, you could get good results with
             | 3-4 for most users.
        
               | nickjj wrote:
               | > You don't need to route every write to primary though,
               | but only those writes that have dependencies on other
               | writes.
               | 
               | Thanks, can you give an example of how that works? Did
               | you write your own fork of Postgres or are you using a
               | third party solution like BDR?
               | 
               | Also do you have a few use cases where you'd want writes
               | being dependent on another write?
               | 
               | > 6-7 probably do the job quite well
               | 
               | You could, let's call it 5.
               | 
               | For a 2gb set up would that be about $50 for the web app,
               | $50 for the background workers, $160ish for postgres and
               | then $50 for Redis? We're still at $300+?
               | 
               | I was thinking maybe 5 background workers wasn't
               | necessary but frameworks like Rails will put a bunch of
               | things through a background worker where you would want
               | low latency even if they're happening in the background
               | because it's not only things like sending an email where
               | it doesn't matter if it's delayed for 2 seconds behind
               | the scenes. It's performing various Hotwire Turbo actions
               | which render templates and modify records where you'd
               | want to see those things reflected in the web UI as soon
               | as possible.
        
               | nicoburns wrote:
               | For low-latency workers like that it might make sense to
               | just run them on the same instance as the web servers.
        
       | nehalem wrote:
       | Being a small-scale Heroku user, I have a hard time deciding
       | whether to stay with Heroku or move to render.com or fly.io.
       | Before the latest incident, Heroku seemed to be frozen but
       | stable. Now... I don't know. Are they even trying to bring back
       | Github Connect?
       | 
       | Fly.io seems cutting-edge but I feel I would not profit from
       | their multi-region, close to the user infrastructure. So what are
       | their tradeoffs? Render.com appears more complete (?) and
       | cheaper. But they don't have the same elegant database backups or
       | the pipeline with review apps.
        
         | ignoramous wrote:
         | Fly.io isn't as much cutting-edge as it is a _rethink_ on what
         | devex on Cloud should look like. It is a fantastic offering
         | that despite its shortcomings is really a _delight_ to use. I
         | use it for toy projects (mostly stateless, or state stored
         | elsewhere but not on Fly.io), but there are plenty who run
         | pretty serious workloads. Give it a spin! You 'd be surprised
         | how butter-smooth all that cutting-edge is.
        
           | cxr wrote:
           | > [...] despite its shortcomings [...]
           | 
           | What do you see as some of its shortcomings? Do e.g. semi-
           | broken docs (or other instances of unclear/uncertain
           | messaging) factor into your impression?
        
         | ushakov wrote:
         | i used both Render and Fly.io
         | 
         | Render is more user-friendly and great for teams, but Fly.io is
         | more flexible and has more advanced features
        
         | anurag wrote:
         | Render has native automatic backups for PostgreSQL:
         | https://render.com/docs/databases#backups
         | 
         | Review apps on Render are called Preview Environments:
         | https://render.com/docs/preview-environments
        
       | dubswithus wrote:
       | --delete
        
         | detaro wrote:
         | As the article mentions, it doesn't force you to use docker.
        
       ___________________________________________________________________
       (page generated 2022-05-15 23:00 UTC)