拠点を1つから16に増やすと、読みの片道は25.3msから2.4msになりました。
同じとき書き込みは25.3msのままです。受ける場所が1つだからです。
近くで動かすので読みは速くなります。ただし効くのは、利用者の集まりを覆うまでです。
Fly.ioは、利用者の近くでアプリを動かします。公式はFly.ioはアプリケーションを利用者に物理的に近いところで動かす。世界中の設備で、自分たちが運用する機械の上でと述べています。
どこまで近づけるのか。拠点の数を変えて実際に測って比べました。
利用者 200,000人を、7つの集まりに偏らせて置く
拠点はよく使われる場所から順に置く。距離1.0を片道 70ms として換算する
拠点の数 平均の片道 95%点 いちばん遠い人 1拠点だけの場合との比
1拠点 25.3ms 48.0ms 50.0ms 1.00倍
2拠点 14.6ms 35.3ms 41.2ms 0.58倍
4拠点 6.5ms 25.3ms 29.6ms 0.26倍
8拠点 2.4ms 3.8ms 4.4ms 0.09倍
16拠点 2.4ms 3.7ms 4.4ms 0.09倍
32拠点 2.4ms 3.7ms 4.4ms 0.09倍
8拠点で平均2.4msに届きます。1拠点の0.09倍です。
16でも32でも同じ2.4msでした。利用者の集まりが7つなので、それを覆った時点で止まります。
いちばん遠い人を見ると、1拠点で50.0ms、8拠点で4.4msです。11分の1になりました。
平均より裾のほうが大きく縮みます。拠点を増やす効果は、遠い人にいちばん強く出ます。
拠点ごとに持ち合う形の弱点はAmazon CloudFrontの記事で扱っていて、増やすほど元への問い合わせが増えます。
集まりを覆った時点で、増やしても変わらなくなる。
Fly.io runs applications physically close to users: in datacenters around the world, on servers we run ourselves.原文Fly.io ドキュメント「Fly.io Regions」 この内容の有効期限2027-02-18
どの地域にも置けます。ただし書き込みを受ける場所が1つなら、そこの距離は変わりません。
Fly.ioでは、置く地域を選べます。公式は次に挙げるどの地域にも、あなたのアプリを置くことができると述べています。
置ける場所が増えても、書き込みは別です。実際に測って比べました。
利用者 200,000人。書き込みを受ける場所は1つだけで、いちばん大きな集まりに置く
読みは近い拠点から返せる。拠点の数を変えて、読みと書きの片道を比べる
拠点の数 読みの平均 書きの平均 書きが読みの何倍
1拠点 25.3ms 25.3ms 1.0倍
4拠点 6.4ms 25.3ms 3.9倍
16拠点 2.4ms 25.3ms 10.7倍
読みは25.3msから2.4msまで縮みます。書きはどの行も25.3msです。
差は1.0倍から10.7倍まで開きました。拠点を増やすほど、この開きは大きくなります。
読みが9割を占める用途なら、拠点を増やす効果はそのまま出ます。書きが多い用途では、ほとんど変わりません。
だから先に測るのは、読みと書きの割合です。拠点の数はその後で決まります。
書き込みも分ける場合は、Amazon S3の記事で見たように、同じものを別々に直したときの扱いを決める必要が出てきます。
You can host your apps in any of the following regions.原文Fly.io ドキュメント「Fly.io Regions」 この内容の有効期限2027-02-18
すぐ止めて、すぐ立ち上げられます。止めるまでの秒数が、そのまま起動時間になります。
Fly.ioの計算の単位は、すぐ止めて立ち上げられます。公式はFly Machinesは素早く立ち上がる仮想機械であり、1秒に満たない速さで起動と停止ができると述べています。
止められると起動時間がどれだけ減るのか。実際に流して数えました。
30日ぶん・要求 27,000件(日中に寄せてある)
要求が途切れてから何秒で止めるかを変えて、起動していた時間を見る
止めるまで 起動していた時間 常時起動との比 立ち上げに当たった件数
0秒 0.0時間 0.0% 27,000件
5秒 35.6時間 4.9% 24,254件
30秒 166.9時間 23.2% 14,548件
300秒 389.0時間 54.0% 190件
3600秒 419.2時間 58.2% 30件
300秒で止めれば、起動時間は常時の54.0%です。立ち上げに当たるのは190件だけになります。
3600秒まで延ばしても58.2%です。4.2ポイントしか変わりません。日中はどのみち動き続けるからです。
30秒で止める設定なら23.2%まで下がりますが、立ち上げに当たるのは14,548件です。全体の半分を超えます。
立ち上げが1秒に満たないなら、この14,548件はほとんど気にならない待ちになります。速いことが、短い設定を選べる理由になっています。
3つの計測はいずれも手元で書いた模型で、実際のFly.ioを使ったものではありません。利用者の位置は7つの集まりに偏らせて置いたもので、実在の分布ではありません。距離も平面上の直線で計算しており、実際の経路はこれより長くなります。距離1.0を片道70msとする換算も置いた値です。要求の時刻も日中に寄せた形で作っています。ここで見せているのは、拠点を増やす効果は集まりを覆った時点で止まるという点と、書き込みを受ける場所が1つなら拠点の数では変わらないという点の2つです。
Fly Machines are fast-launching VMs; they can be started and stopped at subsecond speeds.原文Fly.io ドキュメント「Fly Machines」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る