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
The Curse of the Amulet
leimatthew05
1
13k
Optimizing for Happiness
mojombo
378
71k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
sira's awesome portfolio website redesign presentation
elsirapls
0
280
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
Context Engineering - Making Every Token Count
addyosmani
9
960
Skip the Path - Find Your Career Trail
mkilby
1
150
Statistics for Hackers
jakevdp
799
230k
Making Projects Easy
brettharned
120
6.7k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
530
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
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ユーザーはぜひ利用してみてください!