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
Seekable OCI (SOCI) によるコンテナ起動の高速化
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
takahash
March 07, 2024
1.1k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Seekable OCI (SOCI) によるコンテナ起動の高速化
takahash
March 07, 2024
More Decks by takahash
See All by takahash
ECS Managed Instanceをキャッチアップしよう!
_takahash
2
710
MITRE ATT&CK入門~攻撃者はAWSの侵害をどう進めるのか~
_takahash
1
290
コンテナでLambdaをデプロイするときに知っておきたかったこと
_takahash
1
800
EKS Auto ModeではじめるEKS / lets-start-eks-auto-mode
_takahash
1
1k
AWS Copilotを CDKでカスタマイズする
_takahash
2
4.2k
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Technical Leadership for Architectural Decision Making
baasie
3
400
KATA
mclloyd
PRO
35
15k
Scaling GitHub
holman
464
140k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
Designing for Timeless Needs
cassininazir
1
250
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
The Limits of Empathy - UXLibs8
cassininazir
1
350
RailsConf 2023
tenderlove
30
1.5k
Transcript
Seekable OCI (SOCI)による コンテナ起動の高速化 JAWS-UG コンテナ支部 #26 新春大LT祭り @_takahash
自己紹介 • Hiroki Takahshi (@_takahash) • CoEのテックリード • 社内AWS基盤の運用 •
ガイドライン整備 • Like • AWS CDK, AWS CLI 2
Agenda • コンテナイメージのPull • Seekable OCIとは • Seekable OCIのはじめかた •
Seekable OCIの考慮事項 • まとめ
コンテナイメージのPull
コンテナイメージ コンテナイメージの構成 Manifest Layer 0 Layer 1 Layer N 主にManifestとLayerによって構成される
GET /v2/<repo>/manifests/<tag/digest> LookUp Tag -> Digest Get Object 200 +
Manifest GET /v2/<repo>/blobs/<digest> GetItem 307 + <S3 pre-signed URL> GET <S3 pre-signed URL> 200 + Layer Data Image Pull (from: Amazon ECR) Amazon S3 Amazon DynamoDB Amazon ECR AWS Fargate Layerの取得 Manifestの取得
Our analysis shows that pulling packages accounts for 76% of
container start time, but only 6.4% of that data is read. [Harter, et al., 2016] Pullは高コスト
Pullを短縮するには?
1. コンテナイメージのキャッシュ コンテナイメージをローカルにキャッシュする AWS Fargate キャッシュ レスのみ Amazon EC2 キャッシュ
OK
2. コンテナイメージの軽量化 軽量な ベースイメージ を使用する 不要なファイルや フレームワーク を除外する レイヤー数を 減らす
圧縮方式を 変更する Zstandard RUN apt update && ¥ apt install –y ¥ bzr ¥ cvs ¥ 様々なプラクティスが存在する distroless
3. Lazy Loading (Lazy Pulling) Pullが完了する前にコンテナを起動する技術 起動時に取得しなかったファイルは遅延読み込みする コンテナイメージ コンテナホスト Pull
最低限のファイル が揃ったら起動 代表的な技術:Stargz Snapshotter, Seekable OCI
Seekable OCIとは
Seekable OCIとは • 2022年にAWSがリリースしたlazy loadingの技術 • オープンソースとしてGitHubで公開されている • ECS/Fargateに対応 •
略称であるSOCIの読み方は“so-CHEE”
圧縮ファイルから任意のファイル をどのように取得しているのか
SOCI Index 既存のコンテナイメージに対するメタデータ 注: 全てのレイヤーに対してzTOCが 作成されるわけではない 出典:Under the hood: Lazy
Loading Container Images with Seekable OCI and AWS Fargate
zTOC File Offset Start Span End Span bin/bash 12345 0
0 bin/ls 23456 1 1 etc/user 34567 1 2 etc/group 45678 2 4 レイヤー内のファイルの一覧と位置情報を示すメタデータ layerN.tar.gz span 0 span 1 span N ・・・ span レイヤーのtar.gzの論理的な区画。 すべてのspanは同じサイズ。 レイヤー自体を変更するわけではない。
Lazy loading 引用:Under the hood: Lazy Loading Container Images with
Seekable OCI and AWS Fargate File Offset Start Span End Span bin/bash 12345 0 0 bin/ls 23456 1 1 etc/user 34567 1 2 etc/group 45678 2 4 zTOC
SOCIのよいところ • イメージ変換を伴う場合の考慮点 • 既存のCI/CDパイプラインをすべて変更して回らなければならない • イメージの署名プロセスも含む • レジストリに変換前のイメージと変換後のイメージが混在する コンテナイメージ自体に手を加えなくてよい
Seekable OCIのはじめかた
Seekable OCIのはじめかた • SOCI Index Builderの利用 • SOCI CLIの利用
SOCI Index Builder 引用: CFN AWS SOCI Index Builder on
AWS Partner Solution Deployment Guide CloudFormationでデプロイ可能なソリューション
SOCI CLI • awslabs/soci-snapshotterでCLIが公開されているのでダウンロードして 利用 • 作業を手動で行う場合やCI/CDパイプラインに処理として組み込む場合に 有効 • Finchには標準で入っている。設定ファイルを記述しておけばコンテナイ
メージのPush時にSOCI IndexもPushできる。 CLIによるSOCI Indexの作成 AWS_ACCOUNT_ID=111222333444 AWS_REGION=eu-west-1 finch push --snapshotter soci ¥ $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/myimage:latest
Seekable OCIの考慮事項
考慮事項 • Linux プラットフォームバージョン 1.4.0 で実行されるタスクのみ SOCI インデックスを使用できます。 Fargate で
Windows コンテナを実行するタスクはサポートされていません。 • X86_64 または ARM64 CPU アーキテクチャ上で実行されるタスクがサポートされています。ARM64 アーキテ クチャの Linux タスクでは、Fargate Spot キャパシティプロバイダーはサポートされません。 • タスク定義内のコンテナイメージには、イメージと同じコンテナレジストリに SOCI インデックスが必要です。 • タスク定義内のコンテナイメージは、互換性のあるイメージレジストリに保存する必要があります。以下に互 換性のあるレジストリを示します。 • Amazon ECR プライベートレジストリ • gzip 圧縮を使用する、または圧縮されていないコンテナイメージのみがサポートされます。zstd 圧縮を使用す るコンテナイメージはサポートされていません。 • 圧縮サイズが 250 MiB より大きいコンテナイメージを使用して遅延読み込みを試すことをお勧めします。小さ いイメージを読み込む時間が短くなる可能性は低くなります。 • 遅延読み込みによってタスクの開始にかかる時間が変わる可能性があるため、Elastic Load Balancing のヘル スチェック猶予期間など、さまざまなタイムアウトを変更する必要がある場合があります。 • コンテナイメージが遅延読み込みされないようにするには、コンテナレジストリーから SOCI インデックスを 削除します。タスク内のコンテナイメージが考慮事項のいずれかを満たさない場合、そのコンテナイメージは デフォルトの方法でダウンロードされます。 出典: Fargate 考慮事項
まとめ
まとめ • Seekable OCIはlazy loadingの技術です。 • 特にFargateユーザーはぜひ利用してみてください!