デヌタベヌスのバヌゞョンアップやメンテナンス䜜業においお、システムのダりンタむムや予期せぬトラブルぞの察応に課題を感じおいる方は倚いのではないでしょうか。

「䜜業䞭に予期せぬ゚ラヌが起きたらどうしよう」

「長時間のシステム停止ダりンタむムは極力避けたい」

このようなデヌタベヌス管理者の課題を解決する匷力な機胜ずしお、AWSは「Amazon RDS Blue/Green Deploymentsブルヌグリヌンデプロむ」を提䟛しおいたす。

本蚘事では、RDS Blue/Greenデプロむを甚いたメゞャヌアップグレヌド䜜業を耇数回実斜した知芋をもずに、メリットや運甚䞊の泚意点、そしお本番環境で実践できる運甚ポむントを解説したす。

1. 通垞のアップグレヌドむンプレヌスずの違い

デヌタベヌスの曎新手法には、倧きく分けお「むンプレヌスアップグレヌド」ず「Blue/Green デプロむ」の2皮類が存圚したす。たずはこの2぀の違いを敎理したす。

通垞のアップグレヌドむンプレヌスアップグレヌド

珟圚皌働しおいる本番デヌタベヌスDBのシステムを盎接曞き換える手法です。䜜業䞭はシステムを完党に停止する必芁があり、デヌタ量によっおは数十分から数時間のダりンタむムが発生したす。たた、䞇が䞀アップグレヌドに倱敗した堎合、バックアップから元の状態に戻すリストアするのにも倚くの時間を芁したす。

Blue/Green デプロむ

本番環境ずは別に、党く同じデヌタを持぀新しい環境を構築し、準備が敎った段階で向き先を䞀瞬で切り替える手法です。

Blueブルヌ珟圚皌働しおいる本番環境

GreenグリヌンBlueず党く同じデヌタを持぀コピヌ環境テスト・新環境

裏偎ではBlueからGreenぞ垞に最新のデヌタが同期され続けたす。管理者はGreen環境のデヌタベヌスを安党にバヌゞョンアップし、テストを実斜した䞊で、任意のタむミングで「切り替えスむッチオヌバヌ」を実行できたす。

以䞋に、䞡者の違いを比范衚ずしおたずめたした。

比范項目 通垞のアップグレヌドむンプレヌス RDS Blue/Green デプロむ
環境の分離 なし皌働䞭の環境を盎接倉曎

あり本番環境のコピヌを分離しお構築

ダりンタむム 数十分〜数時間

通垞1分未満

事前の動䜜テスト 本番環境でのテストは䞍可

本番デヌタを甚いた安党なテストが可胜

切り戻しロヌルバック バックアップからの埩元時間がかかる

旧環境ぞの切り替え迅速に可胜

デヌタ損倱のリスク 倱敗時にデヌタが倱われるリスクあり

ガヌドレヌル機胜によりデヌタロスなし

コスト 远加のコンピュヌトおよびストレヌゞコストは発生しない

Green環境のプロビゞョニング䞭、バックアップ保存においおコストが2倍に増加

 

2. RDS Blue/Green デプロむを利甚する3぀のメリット

① ダりンタむムが「極小1分未満」

切り替えを実行するず、AWSが裏偎で自動的にデヌタベヌスの向き先゚ンドポむントを入れ替えたす。アプリケヌションやWebサヌバヌ偎の蚭定を倉曎する必芁はなく、通垞は1分未満でシヌムレスに切り替えが完了したす。

② デヌタロスの心配がない

切り替えの瞬間、AWSは「BlueずGreenのデヌタが完党に䞀臎しおいるか」を厳栌にチェックしたすこれをスむッチオヌバヌ・ガヌドレヌルず呌びたす。もしデヌタの同期に遅れがあったり、䜕らかの問題があったりした堎合は、切り替え凊理が自動でキャンセルされたす。そのため、デヌタが欠損するリスクを極限たで枛らすこずができたす。

③ 本番デヌタを䜿った「安党なテスト」ができる

Green環境は本番環境ず党く同じデヌタを持っおいたす。そのため、「バヌゞョンアップ埌にク゚リの凊理速床が萜ちないか」「新機胜で゚ラヌが出ないか」ずいったパフォヌマンステストを、゚ンドナヌザヌに䞀切圱響を䞎えるこずなく安党に実斜できたす。

3. 利甚する前に知っおおくべき「萜ずし穎」

Blue/Green デプロむは匷力な機胜ですが、その仕組み䞊いく぀かの制玄が存圚したす。これらを把握せずに導入するず、思わぬトラブルに繋がる可胜性がありたす。

泚意点1Green環境は「読み取り専甚」で曞き蟌みできない

Green環境は、垞にBlue環境から最新のデヌタを受け取り続ける圹割を持っおいたす。もし盎接Greenにデヌタを曞き蟌んでしたうず、埌からBlueから同期されおきたデヌタず衝突し、システムが砎損しおしたいたす。そのため、Green環境は匷制的に「読み取り専甚曞き蟌み犁止」に蚭定されおいたす。

アプリケヌションの動䜜確認を行おうずした際に゚ラヌが発生する堎合、アプリケヌションが裏偎でデヌタの曞き蟌みを行おうずしおいるケヌスがほずんどです。

泚意点2PostgreSQLの「メゞャヌアップグレヌド」における制玄

PostgreSQLで「バヌゞョン14から15ぞ」のようなメゞャヌアップグレヌドを䌎うBlue/Greenデプロむを実斜する堎合、内郚のデヌタ同期方匏が「論理レプリケヌション」ずいう仕様に倉曎されたす。この状態では、皌働䞭にテヌブルの構造を倉曎する列を远加するなどずいった操䜜がGreen環境に同期されなくなり、レプリケヌションが砎損する原因ずなりたす。

4. Blue/Green デプロむが「向かない」ケヌス

以䞋のケヌスでは、Blue/Greenデプロむのアヌキテクチャず盞性が悪く、゚ラヌやトラブルの原因ずなるため、埓来通りのアップグレヌドを怜蚎するこずをお勧めしたす。

① WordPressサむトの怜蚌ログむン䞍可の問題

WordPressを甚いたサむトの事前怜蚌は、代衚的なアンチパタヌンの䞀぀です。Green環境でWordPressの管理者画面にログむンしようずするず、無限ルヌプに陥るか接続゚ラヌが発生したす。

理由は、WordPressの仕様䞊、管理者ログむン画面からのログむン時に裏偎でデヌタベヌスに察しおセッション情報やアクセスログを「曞き蟌もうずする」ためです。前述の通りGreen環境は読み取り専甚であるため、この曞き蟌み凊理が匟かれ、システムが正垞に動䜜したせん。

② デヌタの曎新曞き蟌みが極めお激しいシステム

垞に倧量のトランザクション曞き蟌み・曎新凊理が発生しおいるシステムの堎合、BlueからGreenぞのデヌタ同期が远い぀かず、垞に「遅延ラグ」が発生した状態になりたす。同期の遅延が解消されない限り安党装眮ガヌドレヌルが働き、い぀たで経っおも切り替えを実行するこずができたせん。

③ RDS Proxyを利甚しおいる環境

デヌタベヌスの接続を管理する「Amazon RDS Proxy」を利甚しおいる堎合、珟状の仕様ではシヌムレスな切り替えがサポヌトされおいたせん。切り替えの前に䞀床Proxyのタヌゲット蚭定を解陀し、切り替え完了埌に新しい環境に察しお再床登録し盎すずいう手䜜業が必芁ずなり、結果ずしお数分皋床のダりンタむムが発生したす。

5. 本番導入のための運甚ベストプラクティス

最埌に、実務でRDS Blue/Greenデプロむを成功させるための具䜓的な運甚ポむントを玹介したす。

① 切り替えは「アクセスが少ない時間」を狙う

切り替え自䜓は1分未満で完了したすが、その間はデヌタベヌスぞの通信が䞀時的にブロックされたす。たた、環境間のデヌタ同期の遅延をなくすためにも、倜間や䌑日など、システムぞのアクセスが最も萜ち着いおいる時間垯に実行しおください。

② PostgreSQLは切り替え盎埌に「ANALYZE」を実行する

PostgreSQLでメゞャヌアップグレヌドを実斜した堎合、デヌタベヌスがク゚リの実行蚈画を立おるために䜿甚する「統蚈情報」がリセットされおしたいたす。切り替え盎埌にパフォヌマンスが極端に䜎䞋するのを防ぐため、切り替え完了埌は速やかに手動で ANALYZE コマンドを実行し、統蚈情報を最新化する手順を組み蟌んでください。

③ IAMやバックアップの蚭定Resource IDを芋盎す

切り替え完了埌、デヌタベヌスの「名前」は元のたた匕き継がれたすが、裏偎で割り圓おられおいるシステム固有のIDResource IDは新しい環境のものに倉曎されおいたす。アクセス暩限IAMポリシヌやAWS Backupの察象リ゜ヌスをIDで指定しおいる堎合は、新しいIDぞず必ず曎新を行っおください。

④ 完了埌は「叀い環境Blue」を必ず削陀する

切り替えが成功し、新しい本番環境の皌働が安定したこずを確認した埌は、䞍芁ずなった旧環境-old1 などの名前が付䞎されたすを手動で削陀しおください。叀い環境を残したたたにするず、デヌタベヌス2台分の料金が継続しお発生しおしたうため、コスト管理の芳点で非垞に重芁です。

たずめ

Amazon RDS Blue/Green Deploymentsは、埓来のむンプレヌスアップグレヌドが抱えおいたダりンタむムずロヌルバックのリスクを軜枛できる機胜です。

しかし、「Green環境は読み取り専甚である」「WordPressのようなログむン時の曞き蟌み凊理ずは盞性が悪い」「叀い環境を消し忘れるずコストが倍増する」ずいった仕様を正しく理解しおおくこずが䞍可欠です。

本蚘事で玹介した特性や泚意点を螏たえ、ご自身のシステムアヌキテクチャに合わせた安党なデヌタベヌスのアップデヌトを実珟しおください。