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
SOCI Index Manifest v2が出たので調べてみた / Introduction...
Search
Tetsuya Kikuchi
August 15, 2025
Programming
1
300
SOCI Index Manifest v2が出たので調べてみた / Introduction to SOCI Index Manifest v2
2025-08-15 に社内勉強会で発表した資料になります。
Tetsuya Kikuchi
August 15, 2025
Tweet
Share
More Decks by Tetsuya Kikuchi
See All by Tetsuya Kikuchi
More Approvers for Greater OSS and Japan Community
tkikuc
1
120
Git Sync を超える!OSS で実現する CDK Pull 型デプロイ / Deploying CDK with PipeCD in Pull-style
tkikuc
5
690
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
21
4.7k
GitOps for Everything with Pluggable PipeCD
tkikuc
0
64
ecspresso, ecschedule, lambroll を PipeCDプラグインとして動かしてみた (プロトタイプ) / Running ecspresso, ecschedule, and lambroll as PipeCD Plugins (prototype)
tkikuc
2
5.9k
プルリクが全てじゃない!実は喜ばれるOSS貢献の方法8選
tkikuc
17
2.9k
ECS Service Connectのこれまでのアップデートと今後のRoadmapを見てみる
tkikuc
3
570
ECSのサービス間通信 4つの方法を比較する 〜Canary,Blue/Greenも添えて〜
tkikuc
15
4.1k
ECS向けのドリフト検知機構を実装してみた
tkikuc
0
660
Other Decks in Programming
See All in Programming
Vue 3.6 時代のリアクティビティ最前線 〜Vapor/alien-signals の実践とパフォーマンス最適化〜
hiranuma
2
430
オンデバイスAIとXcode
ryodeveloper
0
440
Flutterアプリ運用の現場で役立った監視Tips 5選
ostk0069
1
310
퇴근 후 1억이 거래되는 서비스 만들기 | 내가 AI를 사용하는 방법
maryang
2
540
Promise.tryで実現する新しいエラーハンドリング New error handling with Promise try
bicstone
2
120
CSC509 Lecture 13
javiergs
PRO
0
240
PHPライセンス変更の議論を通じて学ぶOSSライセンスの基礎
matsuo_atsushi
0
140
alien-signals と自作 OSS で実現する フレームワーク非依存な ロジック共通化の探求 / Exploring Framework-Agnostic Logic Sharing with alien-signals and Custom OSS
aoseyuu
3
5.9k
AI 時代だからこそ抑えたい「価値のある」PHP ユニットテストを書く技術 #phpconfuk / phpcon-fukuoka-2025
shogogg
1
400
Vueのバリデーション、結局どれを選べばいい? ― 自作バリデーションの限界と、脱却までの道のり ― / Which Vue Validation Library Should We Really Use? The Limits of Self-Made Validation and How I Finally Moved On
neginasu
3
1.8k
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
110
Amazon Bedrock Knowledge Bases Hands-on
konny0311
0
140
Featured
See All Featured
Music & Morning Musume
bryan
46
6.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Context Engineering - Making Every Token Count
addyosmani
9
370
GitHub's CSS Performance
jonrohan
1032
470k
RailsConf 2023
tenderlove
30
1.3k
Designing Experiences People Love
moore
142
24k
KATA
mclloyd
PRO
32
15k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
660
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
Building Adaptive Systems
keathley
44
2.8k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Transcript
SOCI Index Manifest v2 が出たので 調べてみた 2025-08-13 Tetsuya Kikuchi 社内LT
会 [ 公開用] 1/20
AWS Community Builder (Containers, 2025 年~) 好きなサービス: ECS 菊池 哲哉
(@t-kikuc) 2/20
SOCI とは何か入門( おさらい) SOCI Index Manifest v2 で何が変わったのか 今日話すこと 3/20
1. SOCI とは 4/20
https://www.usenix.org/conference/fast16/technical-sessions/presentation/harter コンテナ起動が高速化すると嬉しいことの例: スケールアウト高速化 → SLI やUX の改善 Job 系やビルドのトータル処理時間短縮 コスト削減(例:
Fargate ではイメージpull 開始時刻から課金される) 特にML モデル等の巨大イメージで起動待ちが顕著に改善 コンテナ起動において76 %の時間がイメージPull に費やされているが、 6.4% ほどのデータしか使われていない (2016 年の研究) 背景: コンテナの起動を速くしたい 5/20
イメージの軽量化 軽量なベースイメージの利用 レイヤー数を減らす マルチステージビルド等で不要なファイルを削除 キャッシュ ※ Fargate ではキャッシュが効かない イメージのLazy Loading
Pull を速くする手法の例 6/20
必要最小限のファイルだけ取得したらコンテナ起動 → 他のファイルは、アプリケーション実行中に必要になった際に取得 実現するツールの代表例 stargz-snapshotter (containerd のサブプロジェクト) SOCI Snapshotter イメージのLazy
Loading 7/20
https://github.com/awslabs/soci-snapshotter Lazy Loading の一実装 SOCI: Seekable OCI の略。 読みは "so-CHEE"
AWS がOSS として公開している Fargate で標準サポートされている。K8s やEKS でも利用は可能 containerd snapshotter のプラグイン SOCI snapshotter 8/20
「どうやって任意のファイルをpull してるのか?」 9/20
SOCI の仕組み(v1) 左半分は通常のコンテナイメージ SOCI Index Manifest: レイヤーごとのzTOC を束ねたもの + 元となるイメージの識別子
zTOC: 「レイヤーの各ファイルがTAR アーカ イブ内でどのチャンクにあるか」のテーブル ※ SOCI Index := SOCI Index Manifest + zTOC 10/20
https://aws.amazon.com/jp/blogs/news/under-the-hood-lazy-loading-container-images-with-seekable-oci-and-aws-fargate/ コンテナ起動前に、SOCI Index Manifest とzTOC をDL する 未DL のファイルにアクセスすると、SOCI Index
を元にDL が行われる 実行時の仕組み 11/20
https://awslabs.github.io/cfn-ecr-aws-soci-index-builder/ A. SOCI CLI をCI/CD 等に組み込む B. SOCI Index Builder
CloudFormation でデプロイできるソリューション Push 検知→ フィルター→Index 作成 SOCI の使い方 12/20
強み: 既存のイメージ自体を変更する必要がない stargz-snapshotter では専用の形式(stargz,eStargz) にイメージを変換しないといけない SOCI はイメージが250MB 以上の場合に効果的 イメージが小さい場合は、Lazy Loading
によるオーバーヘッドの方が大きくなる タスク内に複数のコンテナが存在する場合、特定のコンテナイメージのみを Lazy Loading 可能 全てのイメージにSOCI Index を作成する必要がない SOCI の特徴 13/20
2. SOCI Index Manifest v2 では何が変わったか? 14/20
https://aws.amazon.com/jp/about-aws/whats-new/2025/07/aws-fargate-soci-index-manifest-v2-deployment-consistency/ 2025 年6 月末にv0.10.0 として登場 7 月頭にECS on Fargate でサポートされた
v2 登場 15/20
デプロイの途中でSOCI Index を削除/ 変更すると、 「一部タスクはLazy Loading されるが、他のタスクは遅い」など、起動時間の予測しにくさがありえた タイムアウト値の設定などに影響 一因: SOCI
Index Manifest → イメージ の一方向参照だったから v1 の課題: 一貫性の欠如 16/20
https://aws.amazon.com/jp/blogs/news/improving-amazon-ecs-deployment-consistency-with-soci-index-manifest-v2/ v2 でどうなったか https://github.com/opencontainers/image-spec/blob/main/image-index.md Container Image Index を活用 複数のimage manifest
を束ねる これ自体はOCI 標準のもの イメージとSOCI Index を双方向に紐づける → Image Index を削除/ 更新しない限り、SOCI Index は変わらない 17/20
https://github.com/awslabs/soci-snapshotter/blob/main/docs/soci-index-manifest-v2.md ECS on Fargate で初めてSOCI を使うユーザは、今後はv2 のみ利用可能 v1 からv2 への移行は
soci convert で可能 v2 の詳細: 考慮事項 18/20
まとめ 19/20
SOCI はコンテナイメージの遅延読み込みを実現し、コンテナ起動を高速化する ための技術 SOCI の強みは、イメージ自体に変更が不要な点 Index Manifest v2 によってデプロイの一貫性が向上した まとめ
20/20