Slide 1

Slide 1 text

Refactor Spacesハンズオン後半戦の 紹介+α KMiura(@k_miura_io)

Slide 2

Slide 2 text

自己紹介 • 三浦 耕生(こうき) • 名古屋のゲーム会社のサーバー エンジニア • 好きなAWSのサービス:Lambda, Dynamo DB, AWS IoT @k_miura_io koki.miura05

Slide 3

Slide 3 text

今日のハンズオンで作成するアプリ • 架空のECサイトに使われているEC2のバック エンドをLambdaに移植しようというハンズオン • カート機能(一覧参照、追加、削除)をLambda × Dynamo DBに • Refactor Spacesを使うことで簡単にAPIの接 続先を変更することができる

Slide 4

Slide 4 text

オリジナルのハンズオンは… • Lambdaのロードがクソ遅い(レスポンスに約15秒) • Lambdaでjarファイルを立ち上げようとすると読み込みで時間を取られる

Slide 5

Slide 5 text

jarなんとかしよう • 多分Javaで動かすからこれだけ時間がかかる • ビルドのいらないスクリプト言語に実装し直す • ローカルで動作してからデプロイしたい(無駄なお金は払わないw)

Slide 6

Slide 6 text

アプリケーションの実装を見てみる • レポジトリはハンズオン資料の中のCloud Formationで使ったテンプレートから特定 • Lambdaのコードもここに入っているっぽい https://github.com/aws-samples/unishop-monolith-to-microservices

Slide 7

Slide 7 text

それっぽい実装(カートの追加 を例に) • Dynamo DBからデータを取得して商品のUUIDを追 加して更新してるだけ • レスポンスのメッセージを頼りにすればなんとか実装 できそう • 以外とシンプルで良かったw

Slide 8

Slide 8 text

同じ実装をしてみた • ランタイムはPython3.9 • コードエディタにコピペするだけで楽 • 実装がシンプルになって読みやすい(個人差?)

Slide 9

Slide 9 text

ローカルでの動作確認 • LambdaはHTTPリクエストの形式で 入力をJsonで渡せば確認ができる (メソッドは何でも良さそう) • Dynamo DBに入っているかは Dynamo DB Adminというツールで 確認できる • LambdaとDynamo DBのDocker イメージを使って簡単に環境構築

Slide 10

Slide 10 text

結果どうなったか • カートの読み込みが2,3秒でおわった! • 普段遅いと言われるPythonはLambdaだと早くなるということが証明できた(はず)

Slide 11

Slide 11 text

まとめ • Lambdaを実装するならやはりスクリプト言語(負荷が大きい処理じゃなければ) • Refactor Spacesを使えばモノリシックなアプリとLambdaのハイブリット運用を したいときに便利 • 後半のハンズオンお楽しみに

Slide 12

Slide 12 text

後半のソースコード https://github.com/Miura55/MigrationHub-HandsOn-Extra

Slide 13

Slide 13 text

ここで思った これ他の機能もLambda に移植できるんじゃね?

Slide 14

Slide 14 text

試してみた • Javaはさっぱりなので、フロントエンドでリクエスト している箇所をひたすら洗い出す

Slide 15

Slide 15 text

カート以外の機能 • ユーザー認証周り • サインアップ(メールアドレスを送信するだけ) • ログイン(メールアドレスを送信するだけ) • 商品情報の一覧参照

Slide 16

Slide 16 text

カート以外の機能 • ユーザー認証周り→unishop_userテーブル(Hash:メールアドレス) • サインアップ(メールアドレスを送信するだけ) • ログイン(メールアドレスを送信するだけ) • 商品情報の一覧参照→unishop_unicornテーブル(Hash:uuid)

Slide 17

Slide 17 text

DEMO

Slide 18

Slide 18 text

完成! • 途中CORSの設定し直しや統合プロキシの再設定とか が必要だったけどなんとか実装できた • 昨日深夜テンションで作ったので詳細な手順が間に合 わなかった…(ごめんなさい)

Slide 19

Slide 19 text

Appendixに一式あります!

Slide 20

Slide 20 text

END