10 ポイント 投稿者 xguru 2024-12-18 | 13件のコメント | WhatsAppで共有
  • 開発およびテスト向けにデータベースを運用する際の、コストと複雑さの問題を解決するための裏技
  • VPS、クラウドVM、マネージドサービスなどでは継続的なコストとストレージ料金が発生する
    • 構成作業が複雑で、使っていないときでもリソース費用を支払うことになる
  • 代替案: GitHub ActionsとS3を活用したデータベース運用
    • 必要なときだけGitHub Actionsで一時的なデータベースを実行
    • AWS S3またはS3互換ストレージを使ってデータを永続的に保存
    • ワークフロー終了時にもデータは保持され、実行環境は削除されるため、コスト削減が可能
    • トンネリングにより、データベースをインターネット上で一時的に公開アクセス可能にできる
  • 利用時の注意点
    • この方式は短期的な統合テスト、一時的なデモ、簡単な開発作業にのみ適している
    • GitHub Actionsを長期サービス用プラットフォームとして濫用しないこと
    • 継続的かつ長期的なデータベースホスティングが必要なら、Self-Hosted Runnerまたは別個のデータベースサービスを設定するのが適切
    • GitHubの利用ポリシーを順守して運用する必要がある

中核となるアイデア

  • GitHub Actionsの一時的なコンピューティング環境を活用
    • CI/CDまたはテストワークフローの一部として、必要なときだけMySQL互換データベースを実行
  • S3互換ストレージによるデータの永続保管
    • AWS S3またはCloudflare R2のようなオブジェクトストレージにデータを保存
    • 一時環境が終了しても、データは安全にオブジェクトストレージへ保管される
  • 公開アクセスのためのトンネリング
    • テストやデモのために、データベースをインターネットへ一時的に公開
  • 短期利用に適している
    • データベースはワークフロー実行時間中のみ動作する
    • ワークフロー終了後は一時的なコンピューティングリソースが解放され、恒久的なホスティングソリューションではない
  • 完全無料で使うには
    • Cloudflare R2のような無料ティアを提供するS3互換サービスを検討

ユースケース

  • CI/CD統合テスト: MySQL互換環境を実際に動かしてテスト後に終了
  • 一時的なデモ: すばやく共有できるデータベースインスタンスを短期的に作成
  • 短期的な開発作業: 継続的な保守なしで実際のデータベース環境でテスト可能
  • 推奨されないユースケース:
    • 長期的なデータベースホスティング
    • 常時アクティブな公開データベースエンドポイントの維持
    • GitHub Actionsの利用ポリシーの回避
  • 重要: GitHub Actionsは継続的なサービスプラットフォームではなく、CI/CDのために設計されている。長期的なデータベースホスティングが必要なら、Self-Hosted Runnerの設定を検討すべき

13件のコメント

 
nodelay 2024-12-20

意図しない使い方に見えますね。技術的に可能だからといって、推奨されない方法を意図的に使うのは避けるべきだと思います。
「開発およびテストのためのデータベース運用時におけるコストや複雑性の問題を解決するための裏技」と書かれているので、常識があれば各自きちんと判断されるでしょう。

 
eajrezz 2024-12-19

ハイラムの法則(https://www.hyrumslaw.com/)を考えてみると、
いつか誰かが思いつくような方法だと思います。

ですが、ほかの皆さんがおっしゃるように、このような誤用はより大きな不便をもたらすんですよね。

 
iolothebard 2024-12-18

GitHubのフリーティアからGitHub Actionsがなくなってみて……ああ……これって良いものだったんだな……

 
freedomzero 2024-12-18

乱用だとは思いません。
DBを1つ立ち上げることがサーバーにどれほどの負荷をかけるというのでしょうか。しかも、記事によれば一時的に立ち上げるだけですから。

 
passerby 2024-12-19

CIの過程でテストDBを立ち上げるのでもなく、意図的にワークフローを遅延させてホスティングDBにするのは問題があるように見えますね。「しばらく」の定義も曖昧です。

 
freedomzero 2024-12-19

「CI/CDまたはテストワークフローの一部として必要なときだけ」ってことですよね?

 
eclipsense 2024-12-18

有料ユーザーなら問題ないのではないでしょうか?
どうせ与えられた利用量の範囲内で使うことになるでしょうし。
それ以上は課金になるでしょう。

 
savvykang 2024-12-18

https://docs.github.com/en/site-policy/…

どこまでが許容範囲なのかは分かりませんが、課金の有無が明示されていない状態では、ドキュメントにプログラムのテスト目的でのみ使用することを推奨すると明記されています。サービスを乱用した場合に、アカウント停止などの権限をGitHubが持っているのは当然です。

 
kandk 2024-12-18

笑っちゃいますね。これでどれくらい節約できるんだろう……

 
bitofsky 2024-12-18

これは悪用です。このような行為で消費されるリソースは、本来善良な個人やオープンソースのために使われるべきリソースを流用するものであり、GitHubの無料提供サービスの運用コストを押し上げ、最終的にはその負担が皆に転嫁されると思います。

 
bitofsky 2024-12-18

Actionsでコインマイニングをしていた頃と同じように、こうした行為が増えれば徐々にポリシーは厳しくなっていくでしょう。
トンネリングを防ぐにはアウトバウンドを制限する必要があるはずなので、一般ユーザーだけがますます不便になってしまいますね。

 
zuppiy 2024-12-18

同意します

 
xguru 2024-12-18

Hacker Newsのコメントを見ると、これ自体が悪用だという批判があります。
https://news.ycombinator.com/item?id=42397167
すでに公開されている記事ですし、「こういうこともできるんだな?」という程度のものとして見てもらえればと思い、一度投稿してみます。