5.3 ローリングアップデートとロールバックの実装 #
AWS Lambdaを用いたローリングアップデートとロールバックの概念は、アプリケーションのアップデート時に無停止で行う方法です。FlaskとZappaを用いてこれらのプロセスを実現する方法を見ていきましょう。
ローリングアップデート #
Zappaはバージョン管理機能を持っています。これにより、新しいバージョンのコードをデプロイし、古いバージョンのコードを段階的に置き換えることが可能です。これがローリングアップデートの概念です。
$ zappa update production
上記のコマンドは、プロダクション環境のコードを更新します。更新が完了すると、新しいバージョンのLambda関数が自動的に作成されます。また、古いバージョンのLambda関数は、新しいリクエストが新しいバージョンにルーティングされるまで引き続き利用可能です。
ロールバック #
Zappaによるロールバックは非常に簡単です。もし何か問題が発生した場合、以下のコマンドを実行することで、前のバージョンに簡単に戻すことが可能です。
$ zappa rollback production -n 1
このコマンドは、最後のデプロイをアンドゥ(元に戻す)します。"-n" オプションを使用すると、より前のバージョンに戻すことも可能です。たとえば、 zappa rollback production -n 2 は一つ前のバージョンではなく、二つ前のバージョンに戻します。
注意点 #
Zappaを用いてローリングアップデートとロールバックを行う際には、以下の点に注意してください。
- データベーススキーマの変更: 新しいコードバージョンがデータベーススキーマの変更を必要とする場合、ローリングアップデートやロールバックは難しくなります。これは、新旧のコードバージョンが同時に同じデータベースを使用することから生じる問題です。この問題を解決するためには、データベースマイグレーションが適切に行われる必要があります。
- AWS Lambdaの冷却期間: AWS Lambdaは新しいバージョンへの切り替えが即座には行われない場合があります。これはLambdaの"冷却期間"によるもので、新しいリクエストが新しいバージョンに自動的にルーティングされるまでには、数分かかることがあります。
これらの注意点を考慮に入れつつ、ローリングアップデートとロールバックを行うことで、アプリケーションのダウンタイムを最小限に抑え、ユーザーエクスペリエンスを向上させることが可能です。