←back to thread

528 points sealeck | 2 comments | | HN request time: 0.604s | source
Show context
brundolf ◴[] No.31391105[source]
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.
replies(7): >>31391168 #>>31391192 #>>31391253 #>>31391362 #>>31392452 #>>31392496 #>>31395938 #
mrkurt ◴[] No.31391192[source]
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.

replies(8): >>31391245 #>>31391399 #>>31391400 #>>31391442 #>>31393115 #>>31393823 #>>31394011 #>>31395406 #
1. ignoramous ◴[] No.31391399[source]
> 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?

replies(1): >>31394032 #
2. TJSomething ◴[] No.31394032[source]
Yup. Not too hard. This outputs the current bandwidth in gigabytes when you pass your app name.

  #!/usr/bin/env bash

  set -euo pipefail

  QUERY=$(cat <<EOF
  {
      "variables":{
          "app":"$1",
          "start":"$(date +%Y-%m)",
          "end":"$(date -d "$(date +%Y%m01) +1 month -1 day" +%Y-%m-%d)"
      },
      "query":"query (\$app: String!, \$start: ISO8601DateTime!, \$end: ISO8601DateTime!) { app(name: \$app) { organization { billables(startDate: \$start, endDate: \$end) { edges { node { app { id } category quantity } } } } } } "
  }
  EOF
  )

  curl https://api.fly.io/graphql \
      -H "Authorization: Bearer $(fly auth token)" \
      -H 'content-type: application/json' \
      --compressed \
      -X POST \
      --data-raw "$QUERY" \
      --silent |
      jq '[.data.app.organization.billables.edges[].node | select(.app.id == "'"$1"'" and .category == "data_out") | .quantity] | add'