Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
パブリッククラウドもSaaSもいいとこどり!実際に使ってみた全貌と 推しポイントを紹介します!
Search
Kazuki Miura
PRO
July 09, 2024
Technology
1
250
パブリッククラウドもSaaSもいいとこどり!実際に使ってみた全貌と 推しポイントを紹介します!
https://classmethod.connpass.com/event/322687/
#cm_odyssey
Kazuki Miura
PRO
July 09, 2024
Tweet
Share
More Decks by Kazuki Miura
See All by Kazuki Miura
APIからデータベースまで、全てサーバレスで作ってみよう!
miu_crescent
PRO
0
0
「フィニッシャーズ・スマイル」の開発と当日運用のお話
miu_crescent
PRO
1
52
AWS Systems Manager Incident Manager 使い所を考えてみた
miu_crescent
PRO
0
9
「入門 OpenTelemetry」 入門
miu_crescent
PRO
1
66
AZ 名とAZ ID の違いを 何度でも言うよ
miu_crescent
PRO
1
220
AWS Step Functions で マネコンとCDKの二刀流!
miu_crescent
PRO
1
56
AWS MediaServices の概要と活用事例
miu_crescent
PRO
2
100
ワイキキサークルホテルとその過ごし方
miu_crescent
PRO
1
280
私のawsの学び方、社外へ飛び出そう
miu_crescent
PRO
1
140
Other Decks in Technology
See All in Technology
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.2k
自作JSエンジンに推しプロポーザルを実装したい!
sajikix
1
170
企業の生成AIガバナンスにおけるエージェントとセキュリティ
lycorptech_jp
PRO
2
160
Automating Web Accessibility Testing with AI Agents
maminami373
0
1.3k
研究開発と製品開発、両利きのロボティクス
youtalk
1
520
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
21
11k
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
3
3.2k
データアナリストからアナリティクスエンジニアになった話
hiyokko_data
2
450
Obsidian応用活用術
onikun94
2
490
「何となくテストする」を卒業するためにプロダクトが動く仕組みを理解しよう
kawabeaver
0
410
EncryptedSharedPreferences が deprecated になっちゃった!どうしよう! / Oh no! EncryptedSharedPreferences has been deprecated! What should I do?
yanzm
0
290
未経験者・初心者に贈る!40分でわかるAndroidアプリ開発の今と大事なポイント
operando
5
520
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
51
5.6k
Scaling GitHub
holman
463
140k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Automating Front-end Workflow
addyosmani
1370
200k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.5k
Documentation Writing (for coders)
carmenintech
74
5k
A better future with KSS
kneath
239
17k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
Being A Developer After 40
akosma
90
590k
Transcript
2024/7/9 北海道テレビ放送 三浦一樹 パブリッククラウドもSaaSもいいとこどり! 実際に使ってみた全貌と 推しポイントを紹介します!
本日の Classmethod Odyssey ONLINE
本日の Classmethod Odyssey ONLINE
Xへの投稿の際は、 ハッシュタグ #cm_odyssey でお願いいたします。 お願い 質問は zoom の 「Q&A」に!
北海道テレビ放送(株) (自称)総合職エンジニア 開発チーム キャプテン AWS Step Functions サウナ 秋田→東京→札幌 JAWS-UG
札幌 Media-JAWS 会社 ロール 好きな AWSサービス 趣味 出身地 コミュニティ AWS Community Hero 三浦一樹
今日のお話 細かい実装のお話はしません。 アーキテクチャメインで以下の視点で なんで採用したのか 開発時はどうだったのか 運用時はどうったのか 1番の推しポイント
今日お話するサービス
今日お話するサービス エンジニア5名 2019年開発スタート ↓ (Biz)DevOps チーム
ここに至る経緯は
大前提 事業部在籍の総合職の人でエンジニアしてる ビジネスオーナーは隣の部署 Linux / ネットワーク わからん トラブったとき、対応できる気がしない 自分たちでやらないことを増やす 儲かるのが存在意義
売上を増やして、経費を下げる
None
VPC LESS VPC LESS VPC LESS OS LESS OS
LESS OS LESS
VPC LESS VPC LESS VPC LESS OS LESS OS
LESS OS LESS LAMBDA LESS LAMBDA LESS LAMBDA LESS
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
ちょっと休憩
Xへの投稿の際は、 ハッシュタグ #cm_odyssey でお願いいたします。 お願い 質問は zoom の 「Q&A」に!
AWS Lambda
なんで採用したのか ロジックが動く最小要素 開発時はどうだったのか 分割しすぎると遅くなる 運用時はどうだったのか ランタイム!バージョンアップ!つらい! そして、どんどん増えていく Lambda Lambda以前だとエンジニアになれてない
AWS Step Functions
Step Functions なんで採用したのか workflow Studio 最高 開発時はどうだったのか workflow Studio 最高
運用時はどうだったのか SDKが早くて最高 実行単位でログが見えるコンソール最高 自動化が不安なときは人間系で実行したりも めざせ めざせ めざせ LAMBDA LESS LAMBDA LESS LAMBDA LESS
Step Functions 確認画面 購入完了 決済処理 5s 一番複雑な? ステートマシン
Step Functions 確認画面 購入完了 決済処理 5s 一番複雑な? ステートマシン
Step Functions 在庫確保できた 決済成功
Step Functions 在庫確保できた 決済失敗 決済成功 失敗 SNS 人が対応 SNS コンソールから
Step Functions 再起 失敗 Sagaパターンにおける 補償トランザクションの考え方 DynamoDBの 条件付き書き込みは SDKだけでは実装できない ので、Lambdaで
Step Functions DynamoDBのインポートとかにも使ったり
Step Functions DynamoDBのインポートとかにも使ったり
None
なんで採用したのか コミュニティで知った 開発時はどうだったのか ドキュメント最高。 サポート最高 運用時はどうだったのか 3Dセキュアの対応を頑張ってます (2025年3月末を目処に義務化)
None
なんで採用したのか どうでしょう新作対応 開発時はどうだったのか コンソールぽちぽち 運用時はどうだったのか サポートが最高(めちゃくちゃ丁寧) セキュリティ設定が簡単ぽちぽち
None
None
なんで採用したのか 待望のサーバレスキャッシュ 開発時はどうだったのか 単独実装は簡単 スパイク対応は要調整 運用時はどうだったのか サポートが最高(めちゃくちゃ丁寧) CloudWatchにメトリクス送れる(プラン次第)
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
None
None
なんで採用したのか JavaScript だけで書けるCMSが欲しかった 開発時はどうだったのか 作るのは簡単。簡単なグラフとかもすぐ出る 運用時はどうだったのか データの2重管理ちょっと大変 CI/CDが大変で組めてない 得意な部分もあるけど、不得意な部分も…
None
None
なんで採用したのか BigQuery しか勝たん Google Analytics は結局使う(AuthIDも連携) 開発時はどうだったのか AWSのデータを連携するのはちょっと大変 運用時はどうだったのか 可視化は
Looker Studio だと力不足に... Lookerは高いので、QuickSight で一旦
困ってるもの
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 データベースなんとかしたい
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 データコピーして 対応してる リアルタイムつらい
次に勉強したいのは
なんで採用したいのか 今のDynamoDB の connection がひどいの でリアーキは確定 分析したいのでHTAPとか欲しい スパイクに強そう 勉強したいこと 今のシステムにSQL出てこないけど、
、 GraphQL との相性は?
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
しっかり利益出てます
None
みんな仲良し!
積極的に試してみよう 選択肢は多い方がいい awsでは大変なことも他では簡単なこともある 1つひとつの実装はそんなに辛くない APIだとおもえば全部一緒 管理するアカウントは増えちゃうけど... マケプレから買えるものも多い Developers IO にもブログ多数
でも、キャッチアップ大変
いつもお世話になってます
None
None
コミュニティで 会いましょう コミュニティで 会いましょう
None