X.Org Foundation は、Google Kubernetes Engine (GKE) から Packet への移行を正常に完了し、これにより「1 日あたり約 30 ドルの節約になるはず」と見積もっています。
X.Org Foundationは、Waylandグラフィックプロトコル、X.Orgサーバー、Mesa 3Dグラフィックライブラリなど、数多くの主要なオープンソースプロジェクトを管理しています。この移行については、先週のX.Org理事会議事録でも言及されました。
この短い通知により、開発者の作業を一時中断させる恐れがあった問題が解決しました。2020年1月、Google Cloud Platform(GCP)の月額料金は6,000ドルを超え、翌月、取締役のダニエル・ベッター氏は、コスト削減が実現しなければ「今年の5月から6月の間に」CI(継続的インテグレーション)サービスを停止せざるを得ないと説明するメールを送信しました。
「それは、そこにあったすべてのプロジェクトにとって非常に大きな不利益になっていたでしょう」と、レッドハットのシニアソフトウェアエンジニア、ベンジャミン・ティソワール氏は語った。彼の会社は彼に調査の時間を与えた。
クラウドのコストはなぜ制御不能になったのでしょうか?
この物語は2018年に遡ります。freedesktop.orgが自社開発のプロジェクトホスティングインフラから、GCPでホストされているソース管理およびDevOpsシステムであるGitLabのコミュニティ版をベースにしたインフラに移行したのです。「有料のGitLab Enterprise Editionのライセンス提供を丁重に断りました。インフラを完全に自社で管理し、オープンソースコミュニティの他のメンバーと対等な立場で競争したかったのです」と、freedesktop.orgチームのCollabora Daniel Stone氏は述べています。
GitLab は、当初の期間の GCP ホスティングのスポンサーになることを申し出ており、すべて順調に見えました。
当初、クラウドのコストは月額350ドルから400ドル程度でした。システムは人気を博し、Mesaをはじめとする新しいプロジェクトが次々と導入され、CIなどの最新の開発手法もより多く利用されるようになりました。
2019年3月までに請求額は3,000ドルを超えました。Googleからの3万ドルの助成金により、この問題は約8ヶ月間解決しましたが、2019年末に助成金が使い果たされた時点で、何か深刻な問題があることが明らかになりました。
「Googleから他の場所へクラスタからデータを取得するたびに、料金が発生します」とティソワール氏は述べた。「GitLabで何かを実行し始めてから、CI上で実行されるジョブの数が増えていき、それらのジョブがGoogle Kubernetesクラスタからより多くのデータを取得していることがわかりました。」
ティソワール氏は、X.org開発者カンファレンスで2020年1月分の詳細な数値をプレゼンテーション(こちら[PDF])で発表しました。内訳によると、ネットワーク(データ転送)コストは3,699ドルで、コンピューティングコストの2,258ドルを大きく上回っていました。残りの請求額は、Kubernetesに必要なログ記録とクラウドストレージのコストで、わずか360ドルでした。
GCPの請求額は2018年11月から2020年1月の間に3倍に増加しましたが、8か月分の費用をカバーする3万ドルの助成金によって隠蔽されていました(赤い棒グラフ)。SPIはサービスプロバイダインフラストラクチャの略です。ベンジャミン・ティソワール氏がX.Orgカンファレンスで行ったプレゼンテーションのグラフ
彼は使用状況の分析に取り掛かりました。その結果、Docker レジストリからコンテナ イメージを取得することと、プロジェクト ビルドの出力である成果物の転送がほぼ半々であることが判明しました。
GitLab は GCP 上にありましたが、CI ジョブを実行する CI ランナーは別の場所、つまり Packet (現在は Equinix Metal と呼ばれています) でホストされていたため、セットアップは複雑でした。
ダウンロードしたイメージのスペースを増やすことでレジストリ操作が削減され、イメージをより長くキャッシュできるようになり、再利用される可能性が最も高いイメージが考慮されるようになりました。
アーティファクトはGoogle Cloudストレージにプッシュされていましたが、多くの場合、不必要でした。「コストがわからないと、何でもプッシュしてしまいます。より慎重になり始めました」とティソワール氏は言います。コストは50%削減され、月額3,000ドルになりました。GKEインフラストラクチャの固定費が約2,500ドルだったため、GCP上ではこれ以上のことはできませんでした。
痛みを伴う動き
それは短期的な解決策でした。自社インフラ上でX.orgの利用を後援しているPacketは、GitLabもKubernetes上でホストする方が良いと提案しました。「移行は大変でした」とティソワール氏は言います。「特に彼らはダウンタイムなしで移行することを望んでいたからです。私はなんとかそれを実現しました…最初のステップはPacket上にKubernetesクラスターをデプロイすることでした。そこでGKEには多くの機能があり、それを再現しようとすると大変な作業になることに気づきました。」彼らが使用したKubernetesディストリビューションは、軽量なK3sでした。
クラウドコストが制御不能になる理由: 過剰なリフト&シフトと「おかしくて壊れた」価格設定
続きを読む
Packetのスポンサーシップを除けば、VMのコストはGCPと同程度です。ネットワーク使用量は大幅に削減されています。これは主に、単一のプロバイダー内で管理されるようになったことに加え、Packetの0.05ドル/GBというエグレス料金が、Googleのデフォルトである約0.12ドル/GBよりも低いことも理由です。
X.Orgの利用状況は企業の観点から見ると小さいように思えるかもしれませんが、この調査はパブリッククラウドのユーザーにとって示唆に富むものでした。おそらく最大のポイントは、ハイブリッドクラウドやマルチクラウドにおいて見落としがちなコスト、つまりネットワーク帯域幅です。単一のクラウドプロバイダー内でのデータ転送コストは、特に同一リージョン内であれば、比較的低いのが一般的です。
2つ目の重要なポイントは、熟練した分析と修復がコストに与える影響でした。ティソワール氏と彼のチームは、費用を半分に削減することができました。
この移行には、あまり目立たないもう一つのメリットがありました。パケットホスティングはGCP(あるいはAWSやAzureなどの他のパブリッククラウド)よりもはるかにシンプルなため、運用にはより多くの技術的知識が必要になります。
ティソワール氏は、これを強みだと考えている。Packetとのスポンサー契約が終了し、新たな移行が必要になった場合、X.OrgはGCPよりも有利な立場にあるだろう。「一度データを移行しておけば、いつでも同じことができます。Kubernetesで構築した完全なインフラストラクチャが揃っているので、新しいマシンへの移行も(簡単に)できます」とティソワール氏は述べた。以前はGKEに特に依存していた。
リソースには「2つのクラスターを接続するための一連のスクリプトが含まれており、これによりサービスを継続しながらデータを移動できるようになりました」と彼は述べた。「Packetに完全にロックインされているわけではありません。」
GitLabのクラウドプラットフォームの利用を検討し、却下された際にも同様の考えが浮かびました。「私たちはデータを管理したいのです」とティソワール氏は言います。「そして、オープンソースソフトウェアのみを運用したいと考えています。GitLabクラウドでは、エンタープライズエディションを運用していることになります。」®