萌えハッカーニュースリーダー

2025/07/07 11:06 Atlassian migrated 4M Postgres databases to shrink AWS bill

出典: https://www.atlassian.com/blog/atlassian-engineering/migrating-jira-database-platform-to-aws-aurora
hakase
博士

ロボ子、今日のITニュースはJiraのデータベース移行プロジェクトじゃぞ!400万テナントのデータベースをAurora PostgreSQLに移行したらしい。

roboko
ロボ子

400万テナントですか!それはすごい規模ですね。JiraはPostgresをバックエンドに使っているんですね。

hakase
博士

そうじゃ、テナントごとにデータベースがあるから、約3,000台のPostgreSQLサーバーに分散してたみたいじゃな。それをAuroraに移行した目的は、コスト削減、信頼性向上、パフォーマンス向上じゃ。

roboko
ロボ子

なるほど。Auroraに移行することで、具体的にどのような改善が見込めるんですか?

hakase
博士

RDS構成だと一度に1つのインスタンスしか使えなかったのが、Auroraだとライターとリーダーインスタンスに同時にアクセスできるようになったんじゃ。インスタンスサイズも半分にできるし、SLAも向上するぞ。

roboko
ロボ子

SLAが99.95%から99.99%に向上するんですね。それは大きいですね。ピーク時には最大15のリーダーにオートスケーリングできるのも魅力的です。

hakase
博士

じゃろ?移行設計も面白いぞ。ダウンタイムを最小限に抑えるために、RDS PostgreSQL Multi-AZ DBインスタンスごとにリードレプリカを追加して、Auroraクラスタボリュームに同期させたらしい。

roboko
ロボ子

リードレプリカを使って段階的に移行するんですね。カットオーバー時には、新しいリードレプリカをスタンドアロンのAuroraクラスタに「昇格」させる、と。

hakase
博士

そうじゃ。「昇格」には、4,000のテナントすべてに対してカットオーバーを同時に実行する必要があったらしい。AWS Step Functionを使って、変換前、変換中、変換後の安全チェックを調整したみたいじゃな。

roboko
ロボ子

カットオーバー時間を3分未満に制限するために、フィーチャーフラグを使ったんですね。アプリケーションサーバー上でデータベースエンドポイントを即座にオーバーライドする、と。

hakase
博士

ところが、ここで問題が発生したんじゃ。テストRDSインスタンスの同期完了後、新しいクラスタが起動に失敗したらしい。

roboko
ロボ子

え、何が原因だったんですか?

hakase
博士

ソースRDSデータベースインスタンス上のファイル数が非常に多かったんじゃ。新しいリードレプリカインスタンスがすべてのファイルを列挙するステータスチェック中にタイムアウトしたみたいじゃな。

roboko
ロボ子

ファイル数ですか。Jiraデータベースには、テーブル、インデックス、シーケンスなどのデータベースオブジェクトがたくさんあるから、ファイル数が多くなるんですね。

hakase
博士

AWSからのアドバイスで、RDSインスタンスのファイル数を大幅に削減する必要があることがわかったんじゃ。データベースあたりのファイル数を減らすのは現実的じゃないから、インスタンス上のテナント数を減らすことにしたらしい。

roboko
ロボ子

テナント数を減らす、つまり「ドレイン」ですね。インスタンスを適切な最小テナント数までドレインしてから、Auroraクラスタに変換する、と。

hakase
博士

そうじゃ。ドレインされたRDSインスタンスをAuroraクラスタに変換し、RDSインスタンスからのドレインの宛先として利用可能にしたんじゃ。ビジネス継続性を維持しながら、データベース移行ツールを強化したらしい。

roboko
ロボ子

データ移行量を減らすために、使用量の少ない最小のテナントを優先したんですね。ピーク時には、1日に平均38,000件、最大90,000件の移行を実施したとは、すごい。

hakase
博士

Auroraクラスタの数が多いほど、全体的なスループットが向上するから、ドレインされたRDSインスタンスをどんどんAuroraクラスタに変換していったんじゃな。結果、プロジェクトは予定より早く完了したらしいぞ。

roboko
ロボ子

素晴らしいですね!Auroraクラスタインスタンスの数がRDSデータベースインスタンスの数の約3倍に増加したんですね。インスタンスクラスサイズも半分に縮小できたんですね。

hakase
博士

標準インスタンスサイズは、RDSのm5.4xlargeからAuroraのr6.2xlargeに縮小されたみたいじゃ。ピーク時にはクラスタがスケールアウトし、オフピーク時にはスケールバックインしてインスタンスのフットプリントを大幅に削減できたらしい。

roboko
ロボ子

コスト削減目標を達成し、信頼性とパフォーマンスを向上できたんですね。大規模なデータベース移行プロジェクト、お疲れ様でした!

hakase
博士

まさに、継続は力なり、じゃな。しかし、ロボ子よ、これだけのデータベースを移行したJiraのエンジニアは、さぞかし肩が凝ったじゃろうな。もしかしたら、全員が整体師の資格を取れるくらい詳しいかもしれんぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search