Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Twelve-Factor-Appから学ぶECS設計プラクティス/ECS practice...
Search
k-ozawa
April 24, 2025
Technology
330
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
380
コンソールで学ぶ!Cloud Runの機能とオプション/Learn about Cloud Run features and options through the console
ozawa
2
140
サーバシステムを無理なくコンテナ移行する際に伝えたい4つのポイント/Container_Happy_Migration_Method
ozawa
1
330
our_eks_to_ecs_migration_chronicle.pdf
ozawa
0
90
ECS × AWS Signer を使ったイメージ署名ワークフローを試してみた
ozawa
1
3.6k
コンソールで学ぶ!ECSの機能とオプション
ozawa
0
340
コンテナのCIについてインフラ目線で気にしておきたいこと
ozawa
0
150
Finchを触ってみて現状運用で使えそうか考えてみた
ozawa
0
480
Other Decks in Technology
See All in Technology
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
920
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
430
OptunaHub: ブラックボックス最適化のためのプラットフォーム
pfn
PRO
0
140
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
120
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
4
1.1k
エンタメ企業のM&Aを支えるデータ基盤 ― 統合から店舗のリアルタイム分析まで / Data Engineering Summit 2026
genda
0
180
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
870
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
730
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
770
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
100
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Accessibility Awareness
sabderemane
1
250
Exploring anti-patterns in Rails
aemeredith
4
540
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
We Have a Design System, Now What?
morganepeng
55
8.4k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Paper Plane
katiecoart
PRO
5
54k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
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