Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コールドスタンバイ構成でCDは可能か
Search
平目
December 26, 2025
Technology
0
67
コールドスタンバイ構成でCDは可能か
2025年12月26日に行われた、
AWS10分LT会 vol.8(
https://aws-likers.connpass.com/event/376870/
)に
登壇した時の資料になります。
平目
December 26, 2025
Tweet
Share
More Decks by 平目
See All by 平目
私の後悔をAWS DMSで解決した話
hiramax
4
270
AmazonComprehendを用いて想いの伝わる文章を
hiramax
1
190
僕らの人生と学ぶ、Observabilityの重要性
hiramax
0
330
Other Decks in Technology
See All in Technology
AgentCore BrowserとClaude Codeスキルを活用した 『初手AI』を実現する業務自動化AIエージェント基盤
ruzia
7
1.3k
意外と知らない状態遷移テストの世界
nihonbuson
PRO
1
230
Bedrock AgentCore Memoryの新機能 (Episode) を試してみた / try Bedrock AgentCore Memory Episodic functionarity
hoshi7_n
2
1.8k
NIKKEI Tech Talk #41: セキュア・バイ・デザインからクラウド管理を考える
sekido
PRO
0
200
Amazon Bedrock Knowledge Bases × メタデータ活用で実現する検証可能な RAG 設計
tomoaki25
6
2.3k
Entity Framework Core におけるIN句クエリ最適化について
htkym
0
120
AlmaLinux + KVM + Cockpit で始めるお手軽仮想化基盤 ~ 開発環境などでの利用を想定して ~
koedoyoshida
0
150
Amazon Quick Suite で始める手軽な AI エージェント
shimy
1
1.7k
松尾研LLM講座2025 応用編Day3「軽量化」 講義資料
aratako
3
2.5k
AI との良い付き合い方を僕らは誰も知らない
asei
0
240
事業の財務責任に向き合うリクルートデータプラットフォームのFinOps
recruitengineers
PRO
2
190
_第4回__AIxIoTビジネス共創ラボ紹介資料_20251203.pdf
iotcomjpadmin
0
130
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
21
Optimizing for Happiness
mojombo
379
70k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Mind Mapping
helmedeiros
PRO
0
38
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
RailsConf 2023
tenderlove
30
1.3k
The Limits of Empathy - UXLibs8
cassininazir
1
190
Ethics towards AI in product and experience design
skipperchong
1
140
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
69
HDC tutorial
michielstock
0
260
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
今日はChristmasの翌日
今日はChristmasの翌日 A->B->C->D->E…
今日はChristmasの翌日 A->B->C->D->E… AWS CodeDeploy
今日はChristmasの翌日 AWS CodePipeline C P
今日はChristmasの翌日 CI/CDの話をするのに最適な日!
CI/CDの話をするのに最適な日! 今日はChristmasの翌日
コールドスタンバイ構成 でCDは可能か オッスオッス AWS10分LT会 Vol.8 の3番目の枠、 はぁじまぁるよー!! on AWS 10分LT会
Vol.8 2025/12/26(金) 19:30 ~ 22:30 ハッシュタグ : #AWS10分LT会
8 自己紹介 平目という名前で活動しております。 本日はよろしくお願いします。 自己紹介 HN:平目@インフラエンジニア 所属:地方の零細一般企業 ロール:クラウドエンジニアリングマネージャ この辺りのどこかに います!!
直近では AWS10分LT会 Vol.6 で登壇させて いただきました。
9 自己紹介 本日は実況等で利用される枠を使って発表しますので、 私の発言などは大体このコメント欄に記載してあります~。 自己紹介 HN:平目@インフラエンジニア 所属:地方の零細一般企業 ロール:クラウドエンジニアリングマネージャ この辺りのどこかに います!!
直近では AWS10分LT会 Vol.6 で登壇させて いただきました。
コールドスタンバイ構成 を何故やってるのか 本編 本編入ってくよ~ デッデッデデデデ ! (カーン)デデデデ ! イクゾー !
11 現在取っている構成はこのような構成で、 片方のサーバを停止して、コールドスタンバイ構成を取っています。 コールド スタンバイ構成 冗長構成は 復旧時間によって 決めるべき ホット ウォーム
コールド
12 これらのEC2に対してEIPの付け替えにて、入れ替えを行う形で コールドスタンバイ構成を作っています。 コールド スタンバイ構成 冗長構成は 復旧時間によって 決めるべき ホット ウォーム
コールド
13 ただ実際運用してみて、結構めんどくせーなと思うのが正直なところです。 AWS的に言えばWell-Architectedでもありません。 コールド スタンバイ構成 冗長構成は 復旧時間によって 決めるべき ホット ウォーム
コールド
14 コールドスタンバイ構成を取っているネガティブな主な理由は、予算ですね。 最大の理由は予算 懐事情は どうしようもない 仕方ないね
15 従量課金制といえど、EC2などのサーバを運用するのもタダでは無いので、 サーバスペックと予算を勘案する必要があります。 最大の理由は予算 良く考えよう お金は大事なのだ
16 それなら単体構成にしといて、 障害時にはサービス停めてAMIから起動で良くね?って話にはなるのですが、 単体構成で 良くね?
17 もう一つは、自社でのスキル的な要因があります。 自社ではAWSを利用出来る開発人材が非常に少ないです。 もう一つは人員
18 現状私が倒れたり、居なくなった時に、 「自動作成されている最新の設定済AMIからサーバ起動してくれ」 が実施不可能と思われます。 もう一つは人員 勉強しようぜ お願いだよ!! 何でもしますから! Golden AMI
元の環境 Amazon EC2
19 代替策として「停止しているEC2を起動してEIP付け替えてくれ」に この指示内容を置き換えているという訳です。複雑な操作はありません。 もう一つは人員 勉強しようぜ お願いだよ!! 何でもしますから!
20 現在その辺りは人員育成していて、過渡期だったりするので、 こんな構成は一時的かもね、とは思っていたりします。 もう一つは人員 勉強しようぜ お願いだよ!! 何でもしますから!
21 とはいえ、コールドスタンバイ構成にして良かったこともあります。 良かったことも あるんだよ
22 これはAWS10分LT会 Vol.6の資料ですが、 結構建て直しが困難になっているサーバがあったりします。 良かったことも あるんだよ その時のヤツ
23 別の方が立てた単体サーバもAWS環境内にあったりしますが、 未知の単体サーバ、基本的に止められないのでアップデートが困難です。 良かったことも あるんだよ Amazon EC2 あれやこれや やられたサーバは 更新不可能だ。
ドキュメントも 無ければもう無理よ 怖くて更新出来ない…
24 良かったことも あるんだよ これらを踏まえて、 サーバは愛情を掛けて作った「一点物」にすべきではありません。 というのは以前にも話したりしています。 サーバ EC2インスタンス…私たち「ズッ友」だよ…!!! 悪夢の再来
25 以前そんな記事をQiitaに書いた気もしますね。 良かったことも あるんだよ Amazon EC2 この辺りの内容が 経緯だったりして 書いた気がするなあ 怖くて更新出来ない…
https://qiita.com/hiramax/items/213bd5883 7b39411fc06
26 しかしながら、少なくとも2台構成に出来る状態であれば、 停止機を更新(サーバ入替)し、EIP付け替えで処理が出来るという事です。 良かったことも あるんだよ サーバの更新 出来るんですか! やったー!
27 多少面倒ではありますが、低リスクでサーバが更新出来るというだけで、 大きな価値はあるのかなと思います。コストは単体構成と同等ですし。 良かったことも あるんだよ サーバの更新 出来るんですか! やったー!
28 ついでにDR時のトレーニングを日常的に行えるのが 個人的に良いポイントの一つではあります。 良かったことも あるんだよ 日常的に行う アップデート処理が そのままDR対応の トレーニングになる
コールドスタンバイ構成 でのCD構成 ようやく本筋 経緯の話を経て、ようやくCDの話に入って行きます。 相手は4ぬ
30 CodeDeployでの更新はインプレース更新で行います。 今回の構成ではBlue-Greenデプロイが困難な為です。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS
CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
31 手法としては一般的と思われるCDの手順と同等で、 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS CodeDeploy
AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
32 開発者がCodeCommitリポジトリに対してGit Pushを発行。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS
CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
33 CodeCommitはDefalut EventBusに対してEventを発行します。 これは内部処理ですね。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit
AWS CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
34 EventBridgeで発生したEventを検知して、 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS CodeDeploy
AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
35 EventBridgeで発生したEventを検知して、 CodePipelineを実行します。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS
CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
36 CodePipelineは(必要なら)CodeBuildを経て、 CodeDeployを実行します。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS
CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
37 CodeDeployはターゲットグループとして各環境のEC2に対して インプレースデプロイを行う訳ですが、 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS
CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
38 コールドスタンバイ構成だとこれが上手く行きません。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS CodeDeploy
AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
39 仕組みを知っていると明解なのですが、 EC2でのCodeDeployの前提としてCodeDeploy Agentのインストールがあります。 CodeDeployが 上手く行かない! https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/instances-ec2-create.html
40 実態としてはデータをCodeDeployがEC2に送り付けている訳ではなく、 EC2が指示をCodeDeploy-Agent経由で取りに行っているからです。 CodeDeployが 上手く行かない! Amazon S3 Amazon EC2 AWS
CodeDeploy 一方的に何かを 送り付けられる 訳ではない
41 EC2が起動していなかったら、 当然この操作は行われないということですよね。 CodeDeployが 上手く行かない! Amazon S3 Amazon EC2 AWS
CodeDeploy なんでこんな 画像があるんだろう いらすとや怖い
42 今回の構成だとどちらかのサーバがダウンしている状態なので、 CodeDeployが 上手く行かない! 環境A 環境B AWS CodeCommit AWS CodeDeploy
AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
43 両方のサーバをターゲットグループとしたCodeDeployを実行すると、 片方のサーバのCodeDeploy Agentが処理しないので、失敗します。 CodeDeployが 上手く行かない! 環境A 環境B AWS CodeCommit
AWS CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
44 ただこれでCodeDeployを実行しないのは勿体ないので、 タグ戦略でターゲットグループを設定することで 稼働中サーバだけを特定して更新する方法に変更しました。 CodeDeployが 上手く行かない! 環境A 環境B AWS CodeCommit
AWS CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
45 でも、このままだと環境の入れ替え、できないですよね… CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS CodeDeploy
AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
46 なので、別口でのコード更新方法も検討する必要があります。 今回は「EC2のOS側での起動」をトリガーにしました。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS
CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
まず、停止機にだけコードが配布されていない状態でスタートします。 環境A 環境B CodeDeployでの 起動時更新 本構成での処理手順 ・サーバ起動 ・Eventの発行 ・Eventの検知 ・CodePipelineの実行
・CodeDeployの実行
48 本環境機は起動すると、必ずCustom Event Busに対して サーバが起動したことを知らせるEventを発行するようにしました。 Custom Event Bus 環境A 環境B
本構成での処理手順 ・サーバ起動 ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行 CodeDeployでの 起動時更新
49 OneShotでSystemdに登録しておき、特定のPutEventsを行うShellを実行します。 CodeDeploy-Agentの起動タイミングに近くないと失敗リスクがある為です。 Custom Event Bus 環境A 環境B 本構成での処理手順 ・サーバ起動
・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行 CodeDeployでの 起動時更新
50 ここから先は通常の配布と同じ流れです。 Custom Event Busのイベントを検知し、コードを配布します。 AWS CodeDeploy AWS CodePipeline Amazon
EventBridge Custom Event Bus 環境A 環境B 本構成での処理手順 ・サーバ起動 ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行 CodeDeployでの 起動時更新
51 ちょっと変則的な構成ではありますが、単体構成での運用に限界を感じた場合、 こんな構成もアリかなと思います。 オワオワリ ご清聴、どうもありがとうございました。 「biim枠」 使ってみたが 後からPDF化した 時に見易いので おススメかも
しれないです。 ただ作るのは ちょっと面倒