Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Twelve-Factor-Appから学ぶECS設計プラクティス/ECS practice...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
k-ozawa
April 24, 2025
Technology
310
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Twelve-Factor-Appから学ぶECS設計プラクティス/ECS practice for Twelve-Factor-App
k-ozawa
April 24, 2025
More Decks by k-ozawa
See All by k-ozawa
インフラ屋さんはAIコーディングエージェントとどう生きるか/How infrastructure engineers interact with Kiro
ozawa
2
350
コンソールで学ぶ!Cloud Runの機能とオプション/Learn about Cloud Run features and options through the console
ozawa
2
120
サーバシステムを無理なくコンテナ移行する際に伝えたい4つのポイント/Container_Happy_Migration_Method
ozawa
1
310
our_eks_to_ecs_migration_chronicle.pdf
ozawa
0
82
ECS × AWS Signer を使ったイメージ署名ワークフローを試してみた
ozawa
1
3.3k
コンソールで学ぶ!ECSの機能とオプション
ozawa
0
320
コンテナのCIについてインフラ目線で気にしておきたいこと
ozawa
0
140
Finchを触ってみて現状運用で使えそうか考えてみた
ozawa
0
470
Other Decks in Technology
See All in Technology
AI x 開発生産性を取り巻く予算戦略と投資対効果
i35_267
1
580
複数プロダクトで進めるAI機能実装 ── 実践から得たリアルな学びとロードマップ実現への挑戦 / AICon2026_yanari
rakus_dev
0
190
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
510
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
900
Kaggleで成長するために意識したこと
prgckwb
2
420
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
2
140
LLM/Agent評価:トップ営業の発言を「正解」にする 〜暗黙的正解による評価を営業資産に変える〜
takkuhiro
1
240
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
190
穢れた技術選定について
watany
18
5.7k
2年前に削除したPHPクラスが、 ある日突然決済をエラーにした
ykagano
1
540
データエンジニアリングとドメイン駆動設計
masuda220
PRO
6
950
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
430
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Paper Plane (Part 1)
katiecoart
PRO
1
9.7k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
New Earth Scene 8
popppiees
3
2.4k
Technical Leadership for Architectural Decision Making
baasie
3
440
YesSQL, Process and Tooling at Scale
rocio
174
15k
Skip the Path - Find Your Career Trail
mkilby
1
170
A Modern Web Designer's Workflow
chriscoyier
698
190k
Building Applications with DynamoDB
mza
96
7.1k
Raft: Consensus for Rubyists
vanstee
141
7.6k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Transcript
Twelve-Factor Appから学ぶ ECS設計プラクティス 2025年04月24日 NRIネットコム株式会社 NTシステム事業二部 尾澤 公亮 NRIネットコム TECH
AND DESIGN STUDY #63
1 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 2012年にHerokuの中の人によって提唱された、
モダンアプリケーションを作り上げるための方法論 Twelve-Factor App とは ref: https://12factor.net/ja/
2 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy インフラメンにも大事な
Twelve Factor-App ↓アプリの話だけどインフラも知っておいた方が良い理由↓ タスク定義や構成で「なぜこうなっているのか」の意図が汲み取れない • なぜ環境変数にこの値が入っているのか • なぜこのコンテナが必要なのか • なぜDockerfileでこんなコマンドを実行しているのか • なぜECSを使うのか、etc... Twelve-Factor App とは
3 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy ◼インフラエンジニア、クラウドアーキテクト
◼AWS、コンテナを中心とした、 Webシステム設計/開発/運用/保守 ◼ex.: ECS, EKS, Codeシリーズ 尾澤 公亮(KOSUKE OZAWA)
4 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 構成要素
コードベース 依存関係 設定 バックエンドサービス ビルド、リリース、実行 プロセス ポートバインディング 並行性 廃棄容易性 開発/本番一致 ログをイベントストリーム として扱う 管理タスクは一回限りの プロセス
5 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy コードベース
バージョン管理されている1つのコードベースと複数のデプロイ GitHub Actions GitHub Amazon ECS Amazon ECS 本番 開発
6 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 依存関係を明示的に宣言し分離する
→Gemfile.lock、package.json、etc... OSパッケージに依存しない →alpineイメージにcurl入ってない問題 依存関係
7 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 設定
設定を環境変数に格納する Parameter Store Amazon ECS Key参照で 直接読み込み
8 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy バックエンドサービス
バックエンドサービスをアタッチされたリソースとして扱う direnv、compose.yml等で ローカル用変数を定義
9 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy ビルド、リリース、実行
ビルド、リリース、実行の3つのステージを厳密に分離する デプロイ アーティファクト 作成 BGデプロイ で必要
10 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy プロセス
アプリケーションを1つもしくは複数の ステートレスなプロセスとして実行する 疎結合
11 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy ポートバインディング
ポートバインディングを通してサービスを公開する Fargateはデフォルトでアプリのデフォルトポートをバインドする
12 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 並行性
プロセスモデルによってスケールアウトする Amazon ECS Amazon EKS AWS Application Auto Scaling
13 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 廃棄容易性
高速な起動とグレースフルシャットダウンで堅牢性を最大化する コンテナイメージの軽量化 Seekable OCI PID 1問題
14 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy コンテナイメージの軽量化
マルチステージビルド ビルドに必要な実行ファイルのみを 稼働用イメージにCOPY →アプリ起動に不要なファイルを含めない
15 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy コンテナイメージの軽量化
キャッシュ戦略 特定ディレクトリをキャッシュ指定 →差分が発生するライブラリのみ取得 する →処理時間の短縮にも BuildKit環境の整備が必要 実行環境によって手順が異なる
16 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy Seekable
OCI ref: https://aws.amazon.com/jp/blogs/news/under-the-hood-lazy-loading-container-images-with-seekable-oci-and-aws-fargate/ 実行に必要な処理箇所を特定し、 イメージの完全インストール前に起動する (Lazy Loading) → 起動時間の高速化
17 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy Seekable
OCI 実行に必要な処理箇所を特定し、 イメージの完全インストール前に起動する (Lazy Loading) → 起動時間の高速化 ref: https://aws.amazon.com/jp/blogs/news/under-the-hood-lazy-loading-container-images-with-seekable-oci-and-aws-fargate/ 現状SOCI snapshotter環境構築コストがかかる イメージサイズ 250MB以上推奨
18 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy PID
1 問題 ENTRYPOINT [“nginx”, “-g”, “daemon off;”] → PID 1:nginx master ENTRYPOINT [“/bin/sh”, “-c”, “’nginx -g daemon off;’”] → PID 1:/bin/sh ref: https://note.shiftinc.jp/n/ndc63c45d9f97?gs=b214340a89d1 実行モジュール(Nginx)が /bin/sh のサブコマンドとして実行される 実行モジュールからのSIGTERMを /bin/sh が受け取れず、一定時間(10秒)後にSIGKILL →停止に時間がかかる、正常に終了しない
19 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 開発/本番一致
開発、ステージング、本番環境をできるだけ一致させた状態を保つ 時間のギャップ 人材のギャップ ツールのギャップ ※Twelve Factor Appの文言から抜粋
20 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 開発/本番一致
開発、ステージング、本番環境をできるだけ一致させた状態を保つ
21 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 開発/本番一致
開発、ステージング、本番環境をできるだけ一致させた状態を保つ 管理環境が多すぎると全部の冪等性を担 保するのって結構難しい →ドリフト検知はしておいても良いかも しれない
22 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy ログをイベントストリームとして扱う
サーバ側でバッファリングしない
23 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 管理タスクは1回限りのプロセス
DBマイグレーションはタスク化 踏み台、ECS Execの活用
24 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy •
Adam Wiggins「THE TWELVE-FACTOR APP」 • https://12factor.net/ja/ • Amazon Web Servicesブログ「詳解 : Seekable OCI を使用した AWS Fargate におけるコンテナイメージの遅延読み込み」 • https://aws.amazon.com/jp/blogs/news/under-the-hood-lazy-loading-container-images-with-seekable-oci-and-aws-fargate/ • SHIFT技術ブログ「Docker上のサーバーを強制終了ではなく正常に終了する PID1になるプロセスとは?を理解してみた」 • https://note.shiftinc.jp/n/ndc63c45d9f97?gs=b214340a89d1 参考文献
None