Cells: スキーマ変更

独自のデータベースを所有する複数の Cell を導入すると、Postgres と Elasticsearch へのスキーマ変更プロセスが複雑になります。 今日でも、変更がゼロダウンタイムデプロイに準拠するよう注意する必要があります。 たとえば、カラムを削除する場合は 3 つの別々のデプロイメントにわたって変更を行う必要があります。 必要なマージリクエスト数を削減するためにこのような変更を支援する post_migrate などのツールがありますが、異なるバージョンで稼働する複数の Rails アプリケーションをデプロイする場合には複雑になります。 この問題は、すべての Cell 間で users 関連テーブルを共有する計画など、共有データベースで特に解決が難しくなります。

Cells の主要なメリットの一つは、異なる顧客を異なるバージョンの GitLab で実行できることかもしれません。 現在のカナリアアーキテクチャよりもさらに柔軟性を持たせるために、すべての顧客より前に自分たちの Cell を更新することを選択するかもしれません。 しかし、このことはスキーマ変更がさらに多くのバージョンの後方互換性サポートを必要とすることを意味し、スキーマ変更に追加のステップが必要になることで開発が遅くなる可能性があります。

1. 定義

2. データフロー

3. 提案

4. 評価

4.1. メリット

4.2. デメリット