Slide 1

Slide 1 text

2024/7/9 北海道テレビ放送 三浦一樹 パブリッククラウドもSaaSもいいとこどり! 実際に使ってみた全貌と 推しポイントを紹介します!

Slide 2

Slide 2 text

本日の Classmethod Odyssey ONLINE

Slide 3

Slide 3 text

本日の Classmethod Odyssey ONLINE

Slide 4

Slide 4 text

Xへの投稿の際は、 ハッシュタグ #cm_odyssey でお願いいたします。 お願い 質問は zoom の 「Q&A」に!

Slide 5

Slide 5 text

北海道テレビ放送(株) (自称)総合職エンジニア 開発チーム キャプテン AWS Step Functions サウナ 秋田→東京→札幌 JAWS-UG 札幌 Media-JAWS 会社 ロール 好きな AWSサービス 趣味 出身地 コミュニティ AWS Community Hero 三浦一樹

Slide 6

Slide 6 text

今日のお話 細かい実装のお話はしません。 アーキテクチャメインで以下の視点で なんで採用したのか 開発時はどうだったのか 運用時はどうったのか 1番の推しポイント

Slide 7

Slide 7 text

今日お話するサービス

Slide 8

Slide 8 text

今日お話するサービス エンジニア5名 2019年開発スタート ↓ (Biz)DevOps チーム

Slide 9

Slide 9 text

ここに至る経緯は

Slide 10

Slide 10 text

大前提 事業部在籍の総合職の人でエンジニアしてる ビジネスオーナーは隣の部署 Linux / ネットワーク わからん トラブったとき、対応できる気がしない 自分たちでやらないことを増やす 儲かるのが存在意義 売上を増やして、経費を下げる

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

VPC LESS VPC LESS VPC LESS OS   LESS OS   LESS OS   LESS

Slide 13

Slide 13 text

VPC LESS VPC LESS VPC LESS OS   LESS OS   LESS OS   LESS LAMBDA LESS LAMBDA LESS LAMBDA LESS

Slide 14

Slide 14 text

Streams Lambda GA4 API Gateway QuickSight Dataflow アーキテクチャ全体像 AWS Cloud Amplify Hosting Google Cloud BigQuery GCS Looker Stuido R2 CDN S3 CloudFront Amplify Backend AppSync DynamoDB Lambda Step Functions MedieConvert S3 Data Transfer Cloud Functions Spanner Momento Cache S3 EC2

Slide 15

Slide 15 text

ちょっと休憩

Slide 16

Slide 16 text

Xへの投稿の際は、 ハッシュタグ #cm_odyssey でお願いいたします。 お願い 質問は zoom の 「Q&A」に!

Slide 17

Slide 17 text

AWS Lambda

Slide 18

Slide 18 text

なんで採用したのか ロジックが動く最小要素 開発時はどうだったのか 分割しすぎると遅くなる 運用時はどうだったのか ランタイム!バージョンアップ!つらい! そして、どんどん増えていく Lambda Lambda以前だとエンジニアになれてない

Slide 19

Slide 19 text

AWS Step Functions

Slide 20

Slide 20 text

Step Functions なんで採用したのか workflow Studio 最高 開発時はどうだったのか workflow Studio 最高 運用時はどうだったのか SDKが早くて最高 実行単位でログが見えるコンソール最高 自動化が不安なときは人間系で実行したりも めざせ めざせ めざせ LAMBDA LESS LAMBDA LESS LAMBDA LESS

Slide 21

Slide 21 text

Step Functions 確認画面 購入完了 決済処理 5s 一番複雑な? ステートマシン

Slide 22

Slide 22 text

Step Functions 確認画面 購入完了 決済処理 5s 一番複雑な? ステートマシン

Slide 23

Slide 23 text

Step Functions 在庫確保できた 決済成功

Slide 24

Slide 24 text

Step Functions 在庫確保できた 決済失敗 決済成功 失敗 SNS 人が対応 SNS コンソールから Step Functions 再起 失敗 Sagaパターンにおける 補償トランザクションの考え方 DynamoDBの 条件付き書き込みは SDKだけでは実装できない ので、Lambdaで

Slide 25

Slide 25 text

Step Functions DynamoDBのインポートとかにも使ったり

Slide 26

Slide 26 text

Step Functions DynamoDBのインポートとかにも使ったり

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

なんで採用したのか コミュニティで知った 開発時はどうだったのか ドキュメント最高。 サポート最高 運用時はどうだったのか 3Dセキュアの対応を頑張ってます (2025年3月末を目処に義務化)

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

なんで採用したのか どうでしょう新作対応 開発時はどうだったのか コンソールぽちぽち 運用時はどうだったのか サポートが最高(めちゃくちゃ丁寧) セキュリティ設定が簡単ぽちぽち

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

なんで採用したのか 待望のサーバレスキャッシュ 開発時はどうだったのか 単独実装は簡単 スパイク対応は要調整 運用時はどうだったのか サポートが最高(めちゃくちゃ丁寧) CloudWatchにメトリクス送れる(プラン次第)

Slide 34

Slide 34 text

AWS Cloud AWS Amplify AWS AppSync AWS Lambda AWS AppSync AWS AppSync Merged API Source API Source API Query Momento Cache Amazon DynamoDB Get/Set

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

なんで採用したのか JavaScript だけで書けるCMSが欲しかった 開発時はどうだったのか 作るのは簡単。簡単なグラフとかもすぐ出る 運用時はどうだったのか データの2重管理ちょっと大変 CI/CDが大変で組めてない 得意な部分もあるけど、不得意な部分も…

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

なんで採用したのか BigQuery しか勝たん Google Analytics は結局使う(AuthIDも連携) 開発時はどうだったのか AWSのデータを連携するのはちょっと大変 運用時はどうだったのか 可視化は Looker Studio だと力不足に... Lookerは高いので、QuickSight で一旦

Slide 41

Slide 41 text

困ってるもの

Slide 42

Slide 42 text

EpisodeGroup 1対多 1対多 AppSync ユーザ系のデータ (ログイン時) DynamoDB Program Connection ConnectionEpisode Episode 1対多 1対1 1対1 初期ロード時に 全てのデータを Recoil に格納 DynamoDB User amplify-cli の @connectionで、 どんどん増やしちゃった 番組系のデータ Amplify Gen1 Transformer ver 1 データベースなんとかしたい

Slide 43

Slide 43 text

EpisodeGroup 1対多 1対多 AppSync ユーザ系のデータ (ログイン時) DynamoDB Program Connection ConnectionEpisode Episode 1対多 1対1 1対1 初期ロード時に 全てのデータを Recoil に格納 DynamoDB User amplify-cli の @connectionで、 どんどん増やしちゃった 番組系のデータ Amplify Gen1 Transformer ver 1 データベースなんとかしたい 分析環境 マーケ環境 BigQuery S3 QuickSight データコピーして 対応してる リアルタイムつらい

Slide 44

Slide 44 text

次に勉強したいのは

Slide 45

Slide 45 text

なんで採用したいのか 今のDynamoDB の connection がひどいの でリアーキは確定 分析したいのでHTAPとか欲しい スパイクに強そう 勉強したいこと 今のシステムにSQL出てこないけど、 、 GraphQL との相性は?

Slide 46

Slide 46 text

Streams Lambda GA4 API Gateway QuickSight Dataflow アーキテクチャ全体像 AWS Cloud Amplify Hosting Google Cloud BigQuery GCS Looker Stuido R2 CDN S3 CloudFront Amplify Backend AppSync DynamoDB Lambda Step Functions MedieConvert S3 Data Transfer Cloud Functions Spanner Momento Cache S3 EC2

Slide 47

Slide 47 text

しっかり利益出てます

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

みんな仲良し!

Slide 50

Slide 50 text

積極的に試してみよう 選択肢は多い方がいい awsでは大変なことも他では簡単なこともある 1つひとつの実装はそんなに辛くない APIだとおもえば全部一緒 管理するアカウントは増えちゃうけど... マケプレから買えるものも多い Developers IO にもブログ多数

Slide 51

Slide 51 text

でも、キャッチアップ大変

Slide 52

Slide 52 text

いつもお世話になってます

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

コミュニティで 会いましょう コミュニティで 会いましょう

Slide 56

Slide 56 text

No content