Slide 1

Slide 1 text

session2 JAWS-UG ASA | 2020.10.27 動画配信 お買い物 サーバレス

Slide 2

Slide 2 text

⾃⼰紹介 三浦一樹

Slide 3

Slide 3 text

動画配信 お買い物 サーバレス こんな感じのシステム作りました

Slide 4

Slide 4 text

アーキテクチャ サーバレス

Slide 5

Slide 5 text

こんなイベント がありまして

Slide 6

Slide 6 text

もともとは全国行脚

Slide 7

Slide 7 text

今年も そのはずでした

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

決まったのは8月頭 ※グッズは発注済み

Slide 11

Slide 11 text

本番は10月頭

Slide 12

Slide 12 text

2ヶ月しかない

Slide 13

Slide 13 text

山奥からの 無料動画配信 グッズ販売 当日内容は不明

Slide 14

Slide 14 text

動画配信部分

Slide 15

Slide 15 text

動画配信 動画配信部分

Slide 16

Slide 16 text

動画配信 今までは LiveShellシリーズ OBS

Slide 17

Slide 17 text

動画配信 今までは LiveShellシリーズ OBS 操作画面が CEREVOサーバ windows...

Slide 18

Slide 18 text

動画配信 安定性がほしい! 当日は何もしたくない!!

Slide 19

Slide 19 text

黄色い箱、買っちゃいました

Slide 20

Slide 20 text

動画配信 aws から買えるハードウェア $995

Slide 21

Slide 21 text

動画配信 アカウント紐付け 刺すだけでinputとして認識 マネージドコンソールから 死活監視ができる

Slide 22

Slide 22 text

SINGLE_PIPELINE しか設定できないのでMediaLive が2つ必要です 動画配信

Slide 23

Slide 23 text

お買い物

Slide 24

Slide 24 text

お買い物 めっちゃ便利 BuyButton ならコピペするだけ

Slide 25

Slide 25 text

お買い物 完成したも同然だわ

Slide 26

Slide 26 text

お買い物 9月頭

Slide 27

Slide 27 text

お買い物 タイムセール するから 9月頭

Slide 28

Slide 28 text

お買い物 時間限定商品 がある 9月頭

Slide 29

Slide 29 text

聞いてねぇぇえ お買い物

Slide 30

Slide 30 text

お買い物 リロードしたら 動画止まっちゃうし スパイクアクセス怖いし

Slide 31

Slide 31 text

お買い物

Slide 32

Slide 32 text

お買い物

Slide 33

Slide 33 text

お買い物 subscription 使えばリアルタイム更新 出来るって聞いたぞ AppSync

Slide 34

Slide 34 text

お買い物

Slide 35

Slide 35 text

お買い物 timeSaleFlg 0 or 1

Slide 36

Slide 36 text

お買い物 ・query ・mutation ・subscription

Slide 37

Slide 37 text

query お買い物 { id : 'aircaravan' } type Query { singlePost(id: ID!): Post } { "data": { "singlePost": { "id": "aircaravan", "timeSaleFlg": 1 } } } { "id": "aircaravan", "timeSaleFlg": 1 } AppSync Amplify DynamoDB

Slide 38

Slide 38 text

mutation お買い物 {   timeSaleFlg: 1 } type Mutation { putPost(id: ID, timeSaleFlg: Int!): Post } { id: "aircaravan", timeSaleFlg: event.arguments.timeSaleFlg } Item: { id: "aircaravan", timeSaleFlg: event.arguments.timeSaleFlg } { "data": { "singlePost": { "id": "aircaravan", "timeSaleFlg": 1 } } } なんも返してない console AppSync Lambda DynamoDB query用にDynamoDBに保存

Slide 39

Slide 39 text

subscriptin お買い物 console AppSync Amplify {   timeSaleFlg: 1 } type Subscription { onPutPost: Post @aws_subscribe(mutations: ["putPost"]) } { "data": { "onPutPost": { "id": "aircaravan", "timeSaleFlg": 1 } } } WebSocket type Mutation { putPost(id: ID, timeSaleFlg: Int!): Post }

Slide 40

Slide 40 text

AppSync AppSync お買い物 {   timeSaleFlg: 0 } {   timeSaleFlg: 1 } shopify GraphQL 非表示 商品入れ替え 表示 イベント会場でインカム聞きながら コンソールで直操作

Slide 41

Slide 41 text

AppSync AppSync Amplify お買い物 {   timeSaleFlg: 0 } {   timeSaleFlg: 1 } shopify GraphQL イベント会場でインカム聞きながら コンソールで直操作 非表示 表示

Slide 42

Slide 42 text

お買い物 リロードなし イベント進行に合わせた リアルタイム更新ができた!! AppSync で $4くらい

Slide 43

Slide 43 text

他のはまたの機会に VPCの内側 わからない

Slide 44

Slide 44 text

ツッコミなどは twitter で! @miu_crescent 動画配信 お買い物 サーバレス