June 2020
Intermediate to advanced
516 pages
7h 4m
Japanese
執筆:Alec Warner、Štěpán Davidovič
協力:Alex Hidalgo、Betsy Beyer、Kyle Smith、Matt Duftler
リリースエンジニアリングは、リポジトリから取り出したコードが運用中のプロダクションシステムへ到達するまでに関連する、すべてのプロセスや成果物を表す言葉です。リリースを自動化することによって、繰り返される手作業のタスクというトイル、自動化されていないプロセスの非一貫性、ロールアウトの正確な状況把握ができないこと、ロールバックの難しさといった、リリースエンジニアリングに関わる落とし穴の多くを避けやすくなります。リリースエンジニアリングの自動化については、たとえば継続的インテグレーションや継続的デリバリ(CI/CD)に関する書籍†1など、他の書籍で十分に取り上げられてきました。
カナリアは、サービスの変更を部分的かつ時間的に制限をした上でデプロイメントし、その評価を行うことと定義されます。この評価は、ロールアウトを続行するかどうかを判断する上で役に立ちます。サービスの変更を受ける部分が「カナリア」であり、残りの部分が「コントロール」です。このアプローチの根拠となる論理は、通常カナリアデプロイメントはプロダクション中の非常に小さな部分について行われるか、あるいはコントロールの部分よりもはるかに小さなユーザーベースに対して影響することです。カナリアは、実質的にはA/Bテストのプロセスです。
ここではまずリリースエンジニアリングの基礎とリリースの自動化のメリットを取り上げ、共通の語彙を明確にします。
リリースエンジニアリングの基本原則は以下のとおりです。