Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

"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Λࢼͯ͠Έͨ

Slide 10

Slide 10 text

"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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Ξοϓσʔτ 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))

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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