Immutable
Infrastructure
1
今日はインフラ運用を
楽にする話について
2
サーバを運用し続けるのが、とにかく辛い
✘ 構成変更時にアプリが正常動作するかどうか分からない。
特にライブラリの依存性など。
✘ サーバが故障した時に、同じ構成を再現するのが高難度。
✘ 手作業は面倒だし、作業時間もかかる。
失敗のリスクもあり、品質を作りこむコスパが悪い。
Background
担当者の精神はすり減るし、
コスパも悪いし、いいことがあんまりない。
3
Before
一台のサーバに変更を加え続ける。
After
サーバをゼロから構築する。
デプロイ後はサーバの構成を変更しない。
発想を変える
4
Immutable とは
「不変な」という意味。
Immutable Infrastructure とは
デプロイ後にサーバの構成を変更しない開発、運用スタイルのこと。
クラウド、仮想化、自動化ツール群の普及、浸透に伴い、
現実的に実現出来るようになってきました。
Immutable Infrastructure とは?
5
Blue-Green Deployment
本番環境の構成変更はどうやるか?
Web
ロードバランサ
Web Web Web
新しくサーバを作り、
ロードバランサをこちらに向ける。
6
Immutable Infrastructure
実践のポイント
✘ 仮想化、マネージドサービスの恩恵を受けられるインフラ
✘ Infrastructure as a code の実践
✘ 疎結合でステートレスなインフラ設計
7
仮想化、マネージドサービスの
恩恵を受けられるインフラ
開発環境 本番環境
+
Immutable Infrastructure 実践の前提
✘ 仮想サーバ(コンテナ)の作成、廃棄が容易にできること。
✘ ロードバランサがフルマネージドで、設定変更が容易にできること。
8
Infrastructure as a code の実践
インフラをコードで定義し、構築を自動化。
変更は自動化ツールでのみ行う。
Dockerfile
9
疎結合でステートレスなインフラ設計
ロードバランサ
Web Web
DB
Web サーバ(コンテナ)には
情報は持たせない。
ログは fluentd などで転送する。
他のインフラコンポーネントへの情報
渡しはメッセージングキューを介し
て。 10
いきなり全てをやろうとすると頓挫する可能性大です。
できるところから、少しずつ改善していきましょう!
11

Immutable infrastructure