Refactor Spacesハンズオン後半戦の紹介+α
by
KMiura
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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