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

Refactor Spacesハンズオン後半戦の紹介+α

4b2f3a64637b51e81813accbe8a98083?s=47 KMiura
March 08, 2022

Refactor Spacesハンズオン後半戦の紹介+α

2022/03/08 JAWS-UG千葉支部オンライン#15 re:Invent Tech Re:Cap & ハンズオン

4b2f3a64637b51e81813accbe8a98083?s=128

KMiura

March 08, 2022
Tweet

More Decks by KMiura

Other Decks in Technology

Transcript

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

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

    DB, AWS IoT @k_miura_io koki.miura05
  3. 今日のハンズオンで作成するアプリ • 架空のECサイトに使われているEC2のバック エンドをLambdaに移植しようというハンズオン • カート機能(一覧参照、追加、削除)をLambda × Dynamo DBに •

    Refactor Spacesを使うことで簡単にAPIの接 続先を変更することができる
  4. オリジナルのハンズオンは… • Lambdaのロードがクソ遅い(レスポンスに約15秒) • Lambdaでjarファイルを立ち上げようとすると読み込みで時間を取られる

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

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

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

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

  9. ローカルでの動作確認 • LambdaはHTTPリクエストの形式で 入力をJsonで渡せば確認ができる (メソッドは何でも良さそう) • Dynamo DBに入っているかは Dynamo DB

    Adminというツールで 確認できる • LambdaとDynamo DBのDocker イメージを使って簡単に環境構築
  10. 結果どうなったか • カートの読み込みが2,3秒でおわった! • 普段遅いと言われるPythonはLambdaだと早くなるということが証明できた(はず)

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

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

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

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

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

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

  17. DEMO

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

  19. Appendixに一式あります!

  20. END