「M1 Macきたことだし、Graviton2のLambdaを試してみた」 2022.01.14 JAWS-UG千葉支部オンライン#14 & JAWS-UG 初心者支部#42 新年LTスペシャル会 でのLT発表資料です。
..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠ΈͨBXT KBXTVH "846TFS(SPVQT BXTDPNNVOJUZ KBXTVHDIJCB KBXTVH@CHOS2022.01.14JAWS-UG千葉⽀部オンライン#14新年LTスペシャル (初⼼者⽀部コラボ)和⽥健⼀郎@Keni_W
View Slide
ࠓ͢͜ͱKBXTVHDIJCB KBXTVH@CHOS• ⾃⼰紹介• きっかけ• AWS AWS Lambdaとは• 検証してみた• アップデート• まとめ..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
⾃⼰紹介⽒名:和⽥ 健⼀郎所属:アイレット株式会社 エンジニアJAWS-UG 千葉 運営メンバーSORACOM UG 東京 運営メンバーTwitter: @Keni_W Facebook : kenichiro.wada.3好きなAWSサービス : AWS Lambda2021 APN AWS Top Engineers2020年共著でサーバーレスの本書きました
͖͔͚ͬKBXTVHDIJCB KBXTVH@CHOS..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ• この話の元ネタは、AWS LambdaとServerless Advent Calendar 2021の23⽇⽬の記事です。• https://zenn.dev/keni_w/articles/bb74b3efbf4b7d• 今回も趣味駆動開発の⼀環です。
͖͔͚ͬKBXTVHDIJCB KBXTVH@CHOS..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨきっかけは以下の通り• データを収集しようと思った• CSVからParquet形式に変更した⽅が良さげ• 仕事で使ってるPCがApple M1に• Lambda、Graviton2対応してるな• よし、x86_64と⽐較してみよう
"84-BNCEBͱKBXTVHDIJCB KBXTVH@CHOS..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ• AWS Lambdaは現状、FaaS(Function as a Service)の代表格とも⾔える AWSのコンピューティングサービスです。• マネージメントコンソールやAPIを利⽤して、コードのアップロードするだけで、実⾏することができます。• つまり、開発者はサーバーの構築、管理は⼀切不要で、コードの実装のみに集中することができます。• また、リクエストに応じて、⾃動的にスケーリングを⾏ってくれます。• リクエスト毎の課⾦となるため、関数が実⾏されない時には、⼀切料⾦が発⽣しません。そのため、AmazonEC2を利⽤した場合に⽐べて⼤幅に料⾦が下がるケースもあります。(基礎から学ぶサーバーレス開発 SECTION-004より)
"84-BNCEBͱKBXTVHDIJCB KBXTVH@CHOS..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨサーバーのことを考えずにコードを実⾏する
"84-BNCEBͱKBXTVHDIJCB KBXTVH@CHOSGraviton2とは• re:invent2019で発表されたArmが開発したNeoverse N1コアをベースに開発したプロセッサ• 対M5インスタンス対⽐で、整数演算で約44%、浮動⼩数点演算では約24%向上している..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ
"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Λࢼͯ͠Έͨ
"84-BNCEBͱKBXTVHDIJCB KBXTVH@CHOS料⾦※東京リージョンの価格です..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨメモリー(MB) x86料⾦(1ms USD) Arm料⾦(1ms USD)128 0.0000000021 0.0000000017512 0.0000000083 0.00000000671,024 0.0000000167 0.00000001335,120 0.0000000833 0.000000066710,240 0.0000001667 0.0000001333
ݕূͯ͠ΈͨKBXTVHDIJCB KBXTVH@CHOS..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ検証としては以下実施• とあるオープンデータとそのデータの中⾝を無理やり巨⼤化させたファイルの2つで検証• S3にファイルをアップロードして、S3トリガーでLambda起動• Lambda内で、Parquetに変換して、S3に保存• コールドスタートを除き、全5回処理を実施
ݕূͯ͠ΈͨKBXTVHDIJCB KBXTVH@CHOS..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ• Parquet変換で使うPyArrowは、Intel Mac、Apple M1 Mac上でそれぞれビルドしたものをLambda Layerとしてデプロイして利⽤
ݕূͯ͠ΈͨKBXTVHDIJCB KBXTVH@CHOS..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨオリジナルデータ(4.6M)を処理(Lambdaの設定 : メモリー256M タイムアウト60秒)
ݕূͯ͠ΈͨKBXTVHDIJCB KBXTVH@CHOS..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨデータを増やしたもの(102M)を処理(Lambdaの設定 : メモリー1024M タイムアウト300秒)
Ξοϓσʔτ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 - startprint('変換 処理時間:' + str(time_diff * 1000))
ΞοϓσʔτKBXTVHDIJCB KBXTVH@CHOS..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨオリジナルデータ(4.6M)を処理(Lambdaの設定 : メモリー256M タイムアウト60秒)• 変換処理• 全体
ΞοϓσʔτKBXTVHDIJCB KBXTVH@CHOS..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨデータを増やしたもの(102M)を処理(Lambdaの設定 : メモリー1024M タイムアウト300秒)• 変換処理• 全体
·ͱΊKBXTVHDIJCB KBXTVH@CHOS..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨ• 概ねArm64の⽅が⾼速らしい。• 料⾦も安くなるので、使えるなら使っていきたいところ• とはいえ、アーキテクチャが違うので、その辺りで、不具合等が出る可能性があるので、注意は必要• 古いランタイムは要バージョンアップ• さらに⾼速なGraviton3もいずれか?
·ͱΊKBXTVHDIJCB KBXTVH@CHOS..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨこの追加検証の内容、記事にする予定でしたが、x86_64のLambdaが頑張っちゃってくれたので、x86_64のLambdaで起動したコンテナのスペックで処理速度変わるのか、ちょっと追加で検証してから記事にします
ऴΘΓKBXTVHDIJCB KBXTVH@CHOS..BD͖ͨ͜ͱͩ͠ɺ(SBWJUPOͷ-BNCEBΛࢼͯ͠Έͨご静聴ありがとうございました