デフォルトで環境名とCNAMEは同じになるが、それってどうなのかという話です。
僕がbabaa.com
というババアの情報サイトの運営主だったとして話を進めていきます。
環境名とCNAMEの命名の結論(読むのだるい人向け)
環境名には意味のない番号を振り、CNAMEは役割に応じた命名をする。
本番環境:
環境名: babaa-env01
CNAME: babaa-production-env
ステージング(テスト)環境:
環境名: babaa-env02
CNAME: babaa-staging-env
理由等はこの後から説明します〜
運用の前提
- 本番用のCNAMEとドメインが結びついている
- 環境は本番環境とステージング環境のみ
- 普段はステージング環境を終了しておく
- デプロイ時に
eb clone
でステージング環境を作成し、eb deploy
で更新しeb swap
で本番環境と入れ替える
Elastic Beanstalkで環境名とCNAMEを同じにしない理由
eb swap
ではCNAMEのみ入れ替えるのでeb swap
し続けた時にわけわからなくなるから
例えば、次のような環境があったとする
本番環境:
環境名: babaa-env01
CNAME: babaa-env01
ステージング環境:
環境名: babaa-env02
CNAME: babaa-env02
その状態でeb swap
すると
ステージング環境:
環境名: babaa-env01
CNAME: babaa-env02
本番環境:
環境名: babaa-env02
CNAME: babaa-env01
稼働中の本番環境のCNAMEはbabaa-env01だが、扱ってる本番環境の名前はbabaa-env02となる。
シチュエーションによってはさらに多くの環境を立てるので、運用が続きeb swap
し続けると以下の様なわけのわからない状態になる。
ステージング環境:
環境名: babaa-env02
CNAME: babaa-env04
本番環境:
環境名: babaa-env03
CNAME: babaa-env01
しかし、もしもCNAMEをちゃんと設定していれば次のような状態になる
ステージング環境:
環境名: babaa-env02
CNAME: babaa-staging-env
本番環境:
環境名: babaa-env03
CNAME: babaa-production-env
こうなってしまえば環境名に惑わされないのでハッピー!