毎日データベースを出荷する方法:turbopufferの制御プレーン設計
How to ship a database every day

turbopufferは、毎日数十件のデータベースアップグレードを100以上のクラスタに展開しています。BYOC(顧客のクラウドアカウント内で動作)を含むすべてのクラスタを、直接アクセスせずに運用するため、Kubernetes CRDとローカルエージェントによる状態機械を採用。各クラスタは制御プレーンから操作をポーリングし、ローカルのetcdに状態を保持することで、接続が切れても自律的に処理を完了できます。制御プレーンはAPIサーバーとMySQLで構成され、クラスタの状態を追跡。UIはキーボード操作に最適化され、複数クラスタへの一括アップグレードを可能にしています。
Terraformファイルは優れた宣言的マニフェストですが、ジョブキューとしては最悪です。
- dwedge
これは釣りに見えるかもしれませんが、決してそうではありません。私はデフォルトでPostgreSQLではなくMySQLを使います。しかし、なぜステートデータベースにMySQLを選んだのですか?HAと同期クラスタリングの点では良いソリューションですが、私の読み間違いでなければ、キーバリューストアとアペンドオンリーログにしか使っていないように見えます。どちらも「MySQL」を使うべき問題とは限りません。かなり流行りのスタック(Kubernetes、etcdを直接使用、クラウドファースト、IaC、カスタムデータベース技術)を考えると、そのような会社がMySQLに手を伸ばす理由に興味があります。MySQLクラスタは他の理由で既にデプロイされていたのですか?
- robszumski
私はこの運用方法(Kubernetes Operator)[1]/コントローラを提案したチームの一員でした。有能なチームが、ビジネスを本当にスケールさせる素晴らしいものを作り上げたのを見るのは非常にクールです。私は常に、データベースがOperatorにとって最もメリットがあるサイロだと思っていました。優れたPostgres Operatorはいくつかありますが、それ以外で実際にデイ2オペレーションを行うものは多くありません。[1]: https://operatorhub.io/what-is-an-operator
- hemc4
興味深い読み物でした。データプレーンを管理するよりシンプルな方法ですね。BYOCクラスタで何が起こっているかを理解するためにOTELレイヤーも使用しているかどうか知りたいです。