Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWSの次世代プロセッサ Graviton2(Arm64)をLambdaとFargateで使うために考えるべきこと

AWSの次世代プロセッサ Graviton2(Arm64)をLambdaとFargateで使うために考えるべきこと

みなさん、Graviton2使ってますか?

Graviton2は、AWSが独自開発したArmアーキテクチャのプロセッサ。以前からEC2のインスタンス タイプとしてGraviton2は提供されていましたが、2021年に、AWS LambdaやAWS Fargateでも利用可能になりました。AWSの説明では、価格対性能比がx86ベースのプロセッサより最大40%向上しているとのことです。

「こんなん、すぐ使わんと!」となりそうですが、プロセッサのアーキテクチャが違うため、従来動いてたアプリケーションがGraviton2でそのまま動くとは限りません。このセッションでは、Graviton2をLambdaとFargateで使うために、開発〜テスト〜デプロイの中で考慮すべき事項をお伝えします。

濱田孝治

June 30, 2023
Tweet

More Decks by 濱田孝治

Other Decks in Technology

Transcript

  1. 3 自己紹介 濱⽥孝治(ハマコー) • 2017年9⽉⼊社 • CX事業本部 Delivery部 VPoE •

    好きな⾔葉「わっしょい」「どすこい」 • @hamako9999 • 実家は住之江区。四つ橋線の北加賀屋駅 • 実家は「寿楽温泉」という名の銭湯
  2. 13 EC2で利⽤できるプロセッサ 年代 ロゴ プロセッサ名 インスタンスタイプ CPUアーキテクチ ャ 2006- Intel

    Xeon Scalable processors c6i.xlarge x86アーキテクチャ 2018- AMD EPYC processors c6a.xlarge x86アーキテクチャ 2018- AWS Graviton processors c7g.xlarge Armアーキテクチャ
  3. 19 x86とArmアーキテクチャの違い 完全に理解しようとすると、時間が無限に溶ける • プロセッサの進化の歴史 • 命令セットアーキテクチャの違い • ビット数の違い •

    FISCとRISCの違い • システムオンチップ(SoC)とか ハードに知⾒がある⼈じゃないと敷居が⾼い ので、AWS Gravitonが従来のチップと何が 違うのかを把握するのが現実的
  4. 22 AWS Gravitonを使うときの公式ドキュメント(1/2) AWS Graviton getting-started • GitHubにホストされている。おそらく これが最新の公式ドキュメント •

    プログラミング⾔語別考慮事項 • OSサポート情報 • 各種アプリケーションでの推奨バージョ ン • デバッグ・プロファイル https://github.com/aws/aws-graviton-getting-started/
  5. 23 AWS Gravitonを使うときの公式ドキュメント(2/2) AWS Graviton2 for independent Software Vendors •

    AWSのWhitePaperに存在 • Graviton2に依存しているが、そもそものア ーキテクチャから各レイヤーで何を考慮すべ きか、ユースケースの提⽰も含まれている • チュートリアル的な要素は無いが、全体的な アーキテクチャを俯瞰しながら理解するには こちらのほうがオススメ https://docs.aws.amazon.com/whitepapers/latest/aws-graviton2-for-isv/use-case-scenarios.html
  6. 26 EC2の場合 Considerations when transitioning workloads to AWS Graviton based

    Amazon EC2 instances 移⾏のステップが事細かに提⽰されていて、 具体的に⼿元のアプリケーションをどのよう に移⾏するか全てわかる情報 • 移⾏ステップ1. 依存関係の調査 • 移⾏ステップ2. 対応状況・バージョンの確認 • 移⾏ステップ3. テスト • 移⾏ステップ4. 本番環境への投⼊ https://github.com/aws/aws-graviton-getting-started/blob/main/transition-guide.md
  7. 36 Porting Advisor for Graviton Gravitonへの移⾏を助けるコマンドラインツール • 静的にソースコードを分析 • ⽋落ライブラリや古いライブラリ、変更が必要なコード

    構造を強調表⽰するレポートを作成 • オープンソース • 公式でDockerイメージも提供されているので、dockerが 動いている環境では即座にお試し可能
  8. 37 Porting Advisor for Graviton(実⾏サンプル) ./dist/porting-advisor-linux-x86_64 ./sample-projects/ | Elapsed Time:

    0:00:03 Porting Advisor for Graviton v1.0.0 Report date: 2023-01-06 23:48:20 13 files scanned. detected java code. we recommend using Corretto. see https://aws.amazon.com/corretto/ for more details ./sample-projects/java-samples/pom.xml: dependency library: leveldbjni-all is not supported on Graviton ./sample-projects/java-samples/pom.xml: using dependency library snappy-java version 1.1.3. upgrade to at least version 1.1.4 ./sample-projects/java-samples/pom.xml: using dependency library zstd-jni version 1.1.0. upgrade to at least version Use --output FILENAME.html to generate an HTML report.
  9. 45 コンテナイメージでCPUアーキテクチャごとにビルドが必要な理由 コンテナイメージには、CPUアーキテクチャの違いに依存するものが多く含まれて いるため • バイナリ • 特定CPUアーキテクチャ向けにコンパイルが必要 • 各種ライブラリ

    • イメージビルドするさいに取り込まれる共有ライブラリ • glibc、OpenSSL • システムコール • OSカーネルとのインターフェースのシステムコールもアーキ テクチャに依存
  10. 50 ⼿順①︓アプリケーションの状況確認 主な確認ポイント • Dockerfile • ベースイメージ︓マルチアーキテクチャで提供されている場合、対応不要 • ビルド時取得しているパッケージのArm対応確認 •

    パッケージ管理システムで取得しているライブラリのarm対応確認 • サイドカーコンテナ • エージェントコンテナ • (onEC2の場合)ホストコンテナのAMI
  11. 55 ⼿順②︓新アーキテクチャビルド⼿順の確⽴ https://github.com/docker/buildx#getting-started $ docker buildx build ¥ --push ¥

    --platform linux/arm/v7,linux/arm64/v8,linux/amd64 ¥ --tag your-username/multiarch-example:buildx-latest .
  12. 59 まとめ • GravitonをAWSで使うといろいろよござんすな点 は多い • Lambdaの場合 • 依存バイナリがなく、カスタムランタイムも利⽤してい なければ、Graviton2への移⾏はハードル低め

    • Fargateの場合 • コンテナイメージ⾃体に各種バイナリが含まれているの で専⽤ビルドが必須 • マルチアーキテクチャイメージの概念をしることで、今 までのオペレーションを⼤きく変えずに移⾏を検討する