Slide 1

Slide 1 text

サーバレスだから出来た! サーバレスだから出来た! 2つのサービスの 2つのサービスの フルスクラッチリニューアルの全貌 フルスクラッチリニューアルの全貌 JAWSDAYS 2022 三浦一樹

Slide 2

Slide 2 text

自己紹介 #Sauna #Sapporo #HTB #Amplify #StepFunctions #Serverless #AWSSamurai2019 #Marvel #Hinatazaka46 #radio 三浦一樹(36)

Slide 3

Slide 3 text

JAWS DAYS で人生変わった人です

Slide 4

Slide 4 text

#JAWSDAYS #JAWSDAYS2022 #JAWSDAYS2022_C

Slide 5

Slide 5 text

札幌会場の様子

Slide 6

Slide 6 text

前夜祭もやったよ

Slide 7

Slide 7 text

サービスリニューアルに関して どんな感じで進めたのかストーリー ◯話す事 サービスリニューアルのあれこれ 今後の展望 大好きなAWS サービスの機能 この機能があったから、めっちゃ助かった! 採用した理由とか サービス紹介しながら、諦めた系の話 を差し込んでいきます Linux ? SQL? Network? コンテナ? チョットナニイッテルカワカラナイ ✖︎ 話さない事 VPC の内側の話 言えない話 AWS サービス自体の説明 ドキュメント読んでね♪ 比較的な話は触れますが 詳しくは「すすきの」で

Slide 8

Slide 8 text

裏番組は こんな感じ

Slide 9

Slide 9 text

VOD EC 3 ヶ月くらいで フルスクラッチ 3 ヶ月くらいで フルスクラッチ

Slide 10

Slide 10 text

開発体制について エンジニア 6 人くらいで作ってます 興味がある人が ゼロから勉強することを始めました + 週1 内製開発支援

Slide 11

Slide 11 text

ゼロから始める内製開発

Slide 12

Slide 12 text

出来ないことは出来ない リリースされなければ無価値 制約と誓約

Slide 13

Slide 13 text

制約と誓約(例) 制約 幻影旅団以外には使わない 誓約 幻影旅団以外に使った場合は命を絶つ

Slide 14

Slide 14 text

制約と誓約 制約 VPC の内側に手を出さない アプリケーションに近いところから考える 誓約 事業に貢献する。 (利益を最大化する)

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

VPC LESS VPC LESS VPC LESS

Slide 17

Slide 17 text

Amplify AppSync Step Functions

Slide 18

Slide 18 text

2020.10〜 有料ライブ配信 ライブコマース ライブコマース イベント 2019.10〜 2020.05〜 2020.07〜 2020.10〜 有料ライブ配信 Lift & Shift VODオフロード React Nuxt.js JavaScript Lambda この3年で作ったサービス

Slide 19

Slide 19 text

2020.10〜 有料ライブ配信 ライブコマース ライブコマース イベント 2019.10〜 2020.05〜 2020.07〜 2020.10〜 有料ライブ配信 Lift & Shift VODオフロード 完全リニューアル 2021.04〜 2021.08 〜 2021.10〜 リニューアル ちょっとだけ サーバーレス化 2022.04 〜 2022.03〜 React GraphQL TypeScript Nuxt.js JavaScript 開発 完全リニューアル 完全リニューアル この3年で作ったサービス 2022.09 〜 固定化 Lambda

Slide 20

Slide 20 text

今日メインで触れるのは この2つのサービス 2022.04.28 〜 2022.03.01 〜 内製開発

Slide 21

Slide 21 text

サービスリニューアル のあれこれ

Slide 22

Slide 22 text

VOD EC オンプレで外部に まるっと発注してた CMS 触るだけ運用

Slide 23

Slide 23 text

VOD EC 3 ヶ月くらいで フルスクラッチ

Slide 24

Slide 24 text

VOD EC 3 ヶ月くらいで フルスクラッチ

Slide 25

Slide 25 text

DynamoDB DynamoDB DynamoDB AppSync Amplify Amplify BFF ざっくりアーキテクチャ Frontend Backend

Slide 26

Slide 26 text

S3 S3 DynamoDB DynamoDB DynamoDB AppSync Amplify Amplify BFF ざっくりアーキテクチャ Frontend Backend MediaConvert

Slide 27

Slide 27 text

S3 S3 DynamoDB DynamoDB DynamoDB AppSync Amplify Amplify BFF ざっくりアーキテクチャ Frontend Backend MediaConvert

Slide 28

Slide 28 text

S3 S3 DynamoDB DynamoDB DynamoDB AppSync Lambda API-GW Amplify Amplify BFF ざっくりアーキテクチャ Frontend Backend MediaConvert

Slide 29

Slide 29 text

S3 S3 DynamoDB DynamoDB DynamoDB AppSync Lambda API-GW Step Functions API-GW Amplify Amplify BFF ざっくりアーキテクチャ Frontend Backend MediaConvert

Slide 30

Slide 30 text

S3 S3 DynamoDB DynamoDB DynamoDB AppSync Lambda API-GW Step Functions API-GW Amplify Amplify BFF ざっくりアーキテクチャ Frontend Backend OIDC OIDC OIDC MediaConvert

Slide 31

Slide 31 text

S3 MediaConvert S3 DynamoDB DynamoDB DynamoDB AppSync Lambda API-GW Step Functions API-GW Amplify Amplify 担当者向け CMS 倉庫 システム BFF ざっくりアーキテクチャ Frontend Backend OIDC OIDC OIDC

Slide 32

Slide 32 text

AWS Amplify AWS AppSync AWS Step Functions 大好きなAWS サービス の機能

Slide 33

Slide 33 text

Amplify AppSync Step Functions

Slide 34

Slide 34 text

Amplify AppSync Step Functions

Slide 35

Slide 35 text

Amplify frontend Amplify Console リポジトリを連携するだけで簡単にCI/CD 環境が手に入る Basic 認証やリダイレクト設定もコンソールから簡単 環境ごとの環境変数もコンソールから設定可能 開発環境の構築時間を最小化したい

Slide 36

Slide 36 text

Amplify frontend リポジトリ繋げて ブランチ選んで yaml をちょっと書いたら デプロイされる Route 53 のドメインをつけるのも コンソールからポチポチ

Slide 37

Slide 37 text

Amplify frontend S3 + CloudFront 構成だと Lambda@Edge してました ブランチ選んで、 値を入力するだけ

Slide 38

Slide 38 text

Amplify frontend ただし、増えてくると辛い、、、 (CLI だとブランチの上書きが動かないと思っている)

Slide 39

Slide 39 text

Amplify backend amplify-cli DynamoDB DynamoDB DynamoDB AppSync BFF Backend スキーマを書いて AppSync の裏にある DynamoDB と その connection を定義し てデプロイ

Slide 40

Slide 40 text

Amplify backend +

Slide 41

Slide 41 text

Amplify backend amplify-cli Dynamo のテーブル同士を connection する。 AppSync を経て 一発で欲しいデータにアク セスできるように構築 マイページに 表示したいデータ

Slide 42

Slide 42 text

Amplify backend GraphQL Transformer v1 のままです GraphQL Transformer v2 で新しくなったけど 一部機能が実現できなくな ったので、まだ更新できて ないです、、、

Slide 43

Slide 43 text

Amplify AppSync Step Functions

Slide 44

Slide 44 text

AppSync DynamoDB DynamoDB DynamoDB AppSync Lambda API-GW Step Functions API-GW BFF query mutation subscription GraphQL API Pub/Sub API

Slide 45

Slide 45 text

AppSync DynamoDB DynamoDB DynamoDB AppSync BFF query GraphQL API フロント側で好きなデータ を持ってこれる

Slide 46

Slide 46 text

AppSync DynamoDB DynamoDB DynamoDB AppSync Lambda BFF mutation mutation subscription Pub/Sub API

Slide 47

Slide 47 text

AppSync DynamoDB DynamoDB DynamoDB AppSync Lambda BFF mutation mutation subscription Pub/Sub API websocket リロード無しで 画面更新が可能

Slide 48

Slide 48 text

AppSync クォータ が ちょっと特殊 トークン消費量 に注意

Slide 49

Slide 49 text

Amplify AppSync Step Functions

Slide 50

Slide 50 text

Step Functions 100 + State machines DynamoDB DynamoDB DynamoDB AppSync Step Functions API-GW BFF

Slide 51

Slide 51 text

Step Functions DynamoDB DynamoDB DynamoDB AppSync Step Functions API-GW BFF Lambda API-GW API-GW + Lambda っていう構成がどんどん Step Functions に変化していった >

Slide 52

Slide 52 text

Step Functions Workflow Studio がすごい!!

Slide 53

Slide 53 text

Step Functions GUI で作れる ASL とかYAML はもう 触らない SDK が直接叩ける これが爆速で最高

Slide 54

Slide 54 text

Step Functions

Slide 55

Slide 55 text

Amplify AppSync Step Functions 再現性のある形で 事業に近い開発に時間を割くことが出来た コスト低め、運用負荷低め

Slide 56

Slide 56 text

リリースして 気がつくことたくさん! You Build, You Build, You Build, You Run it. You Run it. You Run it.

Slide 57

Slide 57 text

2022.04.28 〜 2022.03.01 〜 社内外の声から 大小合わせて 100 以上の 機能改善

Slide 58

Slide 58 text

まとめ

Slide 59

Slide 59 text

サーバーも ネットワークも知らなくても サービスは作れる!! 01 リリースしてから 気がつくことってたくさんある 02 Amplify いいぞ!!! AppSync いいぞ!!! Step Functions いいぞ!! 03

Slide 60

Slide 60 text

WE WERE HIRING

Slide 61

Slide 61 text

WE WERE HIRING

Slide 62

Slide 62 text

WE WERE HIRING

Slide 63

Slide 63 text

THANK YOU