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

M1 Macきたことだし、Graviton2のLambdaを試してみた /20220114-jawsugchiba-jawsug-bgnr-lt

M1 Macきたことだし、Graviton2のLambdaを試してみた /20220114-jawsugchiba-jawsug-bgnr-lt

「M1 Macきたことだし、Graviton2のLambdaを試してみた」
2022.01.14 JAWS-UG千葉支部オンライン#14 & JAWS-UG 初心者支部#42 新年LTスペシャル会 でのLT発表資料です。

Kenichiro Wada

January 14, 2022
Tweet

More Decks by Kenichiro Wada

Other Decks in Technology

Transcript

  1. ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPO
    ͷ-BNCEBΛࢼͯ͠Έͨ
    BXT KBXTVH "846TFS(SPVQT BXTDPNNVOJUZ KBXTVHDIJCB KBXTVH@CHOS
    2022.01.14
    JAWS-UG千葉⽀部オンライン#14
    新年LTスペシャル (初⼼者⽀部コラボ)
    和⽥健⼀郎@Keni_W

    View Slide

  2. ࠓ೔࿩͢͜ͱ
    KBXTVHDIJCB KBXTVH@CHOS
    • ⾃⼰紹介
    • きっかけ
    • AWS AWS Lambdaとは
    • 検証してみた
    • アップデート
    • まとめ
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ

    View Slide

  3. ⾃⼰紹介
    ⽒名:和⽥ 健⼀郎
    所属:アイレット株式会社 エンジニア
    JAWS-UG 千葉 運営メンバー
    SORACOM UG 東京 運営メンバー
    Twitter: @Keni_W Facebook : kenichiro.wada.3
    好きなAWSサービス : AWS Lambda
    2021 APN AWS Top Engineers
    2020年共著でサーバーレスの本書きました

    View Slide

  4. ͖͔͚ͬ
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    • この話の元ネタは、AWS Lambdaと
    Serverless Advent Calendar 2021の23⽇⽬の
    記事です。
    • https://zenn.dev/keni_w/articles/bb74b3efbf4b7d
    • 今回も趣味駆動開発の⼀環です。

    View Slide

  5. ͖͔͚ͬ
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    きっかけは以下の通り
    • データを収集しようと思った
    • CSVからParquet形式に変更した⽅が良さげ
    • 仕事で使ってるPCがApple M1に
    • Lambda、Graviton2対応してるな
    • よし、x86_64と⽐較してみよう

    View Slide

  6. "84-BNCEBͱ͸
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    • AWS Lambdaは現状、FaaS(Function as a Service)
    の代表格とも⾔える AWSのコンピューティングサービス
    です。
    • マネージメントコンソールやAPIを利⽤して、コードの
    アップロードするだけで、実⾏することができます。
    • つまり、開発者はサーバーの構築、管理は⼀切不要で、
    コードの実装のみに集中することができます。
    • また、リクエストに応じて、⾃動的にスケーリングを
    ⾏ってくれます。
    • リクエスト毎の課⾦となるため、関数が実⾏されない時
    には、⼀切料⾦が発⽣しません。そのため、Amazon
    EC2を利⽤した場合に⽐べて⼤幅に料⾦が下がるケース
    もあります。
    (基礎から学ぶサーバーレス開発 SECTION-004より)

    View Slide

  7. "84-BNCEBͱ͸
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    サーバーのことを考えずに
    コードを実⾏する

    View Slide

  8. "84-BNCEBͱ͸
    KBXTVHDIJCB KBXTVH@CHOS
    Graviton2とは
    • re:invent2019で発表されたArmが開発した
    Neoverse N1コアをベースに開発した
    プロセッサ
    • 対M5インスタンス対⽐で、整数演算で約44%、
    浮動⼩数点演算では
    約24%向上している
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ

    View Slide

  9. "84-BNCEBͱ͸
    KBXTVHDIJCB KBXTVH@CHOS
    対応ランタイムバージョン
    • Node.js : 14.x、12.x
    • Python : 3.9、3.8
    • Ruby : 2.7
    • Java : 11、8.a12
    • .NET Core : 3.1
    • Custom Runtime : provided.a12
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ

    View Slide

  10. "84-BNCEBͱ͸
    KBXTVHDIJCB KBXTVH@CHOS
    料⾦
    ※東京リージョンの価格です
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    メモリー(MB) x86料⾦(1ms USD) Arm料⾦(1ms USD)
    128 0.0000000021 0.0000000017
    512 0.0000000083 0.0000000067
    1,024 0.0000000167 0.0000000133
    5,120 0.0000000833 0.0000000667
    10,240 0.0000001667 0.0000001333

    View Slide

  11. ݕূͯ͠Έͨ
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    検証としては以下実施
    • とあるオープンデータとそのデータの中⾝を無
    理やり巨⼤化させたファイルの2つで検証
    • S3にファイルをアップロードして、S3トリガー
    でLambda起動
    • Lambda内で、Parquetに変換して、S3に保存
    • コールドスタートを除き、全5回処理を実施

    View Slide

  12. ݕূͯ͠Έͨ
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    • Parquet変換で使うPyArrowは、Intel Mac、
    Apple M1 Mac上でそれぞれビルドしたものを
    Lambda Layerとしてデプロイして利⽤

    View Slide

  13. ݕূͯ͠Έͨ
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    オリジナルデータ(4.6M)を処理
    (Lambdaの設定 : メモリー256M タイムアウト60秒)

    View Slide

  14. ݕূͯ͠Έͨ
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    データを増やしたもの(102M)を処理
    (Lambdaの設定 : メモリー1024M タイムアウト300秒)

    View Slide

  15. Ξοϓσʔτ
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    1⽇遅れでアドベントカレンダー投稿し(⼤汗)し、
    Facebookにも貼ったところ、こんなコメントを頂
    きましたので、再度検証してみました
    start = time.time()
    pq.write_table(
    arrow_table,
    output_file,
    compression='snappy’,
    flavor=['spark’],
    version='1.0',
    )
    end = time.time()
    time_diff = end - start
    print('変換 処理時間:' + str(time_diff * 1000))

    View Slide

  16. Ξοϓσʔτ
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    オリジナルデータ(4.6M)を処理
    (Lambdaの設定 : メモリー256M タイムアウト60秒)
    • 変換処理
    • 全体

    View Slide

  17. Ξοϓσʔτ
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    データを増やしたもの(102M)を処理
    (Lambdaの設定 : メモリー1024M タイムアウト300秒)
    • 変換処理
    • 全体

    View Slide

  18. ·ͱΊ
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    • 概ねArm64の⽅が⾼速らしい。
    • 料⾦も安くなるので、使えるなら使っていきた
    いところ
    • とはいえ、アーキテクチャが違うので、その辺
    りで、不具合等が出る可能性があるので、注意
    は必要
    • 古いランタイムは要バージョンアップ
    • さらに⾼速なGraviton3もいずれか?

    View Slide

  19. ·ͱΊ
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    この追加検証の内容、記事にする予定でしたが、
    x86_64のLambdaが頑張っちゃってくれたので、
    x86_64のLambdaで起動したコンテナのスペック
    で処理速度変わるのか、ちょっと追加で検証して
    から記事にします

    View Slide

  20. ऴΘΓ
    KBXTVHDIJCB KBXTVH@CHOS
    ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
    ご静聴
    ありがとう
    ございました

    View Slide