$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MangaTechエンジニアの日曜アプリ開発の勧め - AWS Amplify 時代の安くて ...
Search
dublook
May 10, 2019
Programming
4
1.9k
MangaTechエンジニアの日曜アプリ開発の勧め - AWS Amplify 時代の安くて 強いDB設計
S3をデータベースとして使うメリット
・需要予測がいらない!
・料金が安い。めっちゃ安い
・大抵DBが一番高い
・大きなデータも小さなデータも入れられる
・同時大量書き込みでも速い
dublook
May 10, 2019
Tweet
Share
More Decks by dublook
See All by dublook
好きなマンガ読める率100%にするために、AWS AmplifyでVueアプリをデプロイしてみた
dublook
0
150
Other Decks in Programming
See All in Programming
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
120
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
130
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
110
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
120
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
180
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
190
Patterns of Patterns
denyspoltorak
0
250
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
2
530
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
160
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
510
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
140
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
170
Featured
See All Featured
Are puppies a ranking factor?
jonoalderson
0
2.4k
Facilitating Awesome Meetings
lara
57
6.7k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
79
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
How to make the Groovebox
asonas
2
1.8k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
130
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
48
35k
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Making Projects Easy
brettharned
120
6.5k
Statistics for Hackers
jakevdp
799
230k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Transcript
AWS Amplify 時代の安くて 強いDB設計 MangaTechエンジニアの日曜アプリ開発の勧め 2019-05-10 @TechDo
今日のゴール ◉ 好きなことについてなんかアプリ作ってみよ ◉ AWS Amplify使ってみよ ◉ サーバーレス, DBレスって楽チンだね ってなること!
2
今日やらないこと ◉ FirebaseとAmplifyどっちがいいの? ◦ Firebase使ったことない・・ ◦ 基本AWSに慣れているゆえ 3
好きなマンガ読める率100%へ! スキ100! 1 4
5 自己紹介
6 じゃなくて ねこ紹介!
◉ スキ100!プロジェクトの公式キャラクター ◉ 普段はワインバーを経営 (ソムリエ有資格猫) ◉ マンガ好きが高じて、たまにお客さんに すっとオススメしてくれる ◉ 生みの親はレポ漫画家の伊佐坂みつほ先生
ソムねこ 7 伊佐坂イエローで おなじみ!
8 つまり アプリ作りが盛り上がって キャラまで作っちゃった マンガ好きの悩みを見かねた ソムねこが来てくれた!
自己紹介 9 マンガテック エンジニア! ふーん
“ Amazonのレコメンドもいいけど、 とにかく好きなマンガだけ オススメしてくれよ!!! 10 スキ100!のWhy
こんな人を助けたい! 常に自分の知 らない、ステキ な新刊を見つけ たい! マンガを毎月か なりの数を買っ ている Kindleで マンガを読んで
いる 11
こんな感じ 12
こんな感じ 13
詳細はこちら 14 suki100.com
“ 機能要望、わがまま言ってすいません笑 でも愛用しているが故です! 15 苅田 明史 (マンガ新聞創業者)
新規アプリ?? まずはAWS Amplifyに頼れ! スキ100!アプリで使い方をつかめ 2 16
AWS Amplifyってなに? 17 https://aws-amplify.github.io/docs/
18 いっぱいあり過ぎて どれ使えばいいかわかんない
AWS Amplifyってざっくりいうと、 19 親切な「お節介」 • Amplifyがないとできないことはない • 「単純なアプリ作るなら、これ使いなよ」 • 「どうせこういう使い方するだろうから、ちょっと便
利にしといたよ」
20 Storageは S3かDynamo 認証は Cognito! ホスティングは S3->CloundFront
ナイスおせっかい! 21 • AWSのサービス名を意識しなくていい ◦ (あとから意識することもできる) • 「単純なアプリ作るなら、これ使いなよ」 • 「どうせこういう使い方するだろうから、ちょっと便
利にしといたよ」
認証の追加 22 https://aws-amplify.github.io/docs/js/authentication
データベース (Storage) の追加 23 https://aws-amplify.github.io/docs/js/storage
ウェブアプリのホスティングを追加 24 https://aws-amplify.github.io/docs/cli/hosting?sdk=js
25 このコマンドたちを 打ってできた構成
Amplify Console 26 One more thing... 開発環境 本番環境
バージョンの切り戻しもワンクリックで 27
ハマったポイント 28 ◉ Amplifyのプロジェクト内で一つのStackができる ◦ Serverless frameworkなどで共通のS3をいじった りできない ◦ 対策:
コンソール画面から手動で設定変更 ◦ (ほんとはymlでできると思うが手でやった方が早かった )
AmplifyでNOデータベース Amplify 時代の安くて強いDB設計 3 29
再掲: データベース (Storage) の追加 30 https://aws-amplify.github.io/docs/js/storage
この質問の意図は? 31 S3 or DynamoDB
32 S3って画像とか置くところ じゃないの??
事実: スキ100!はS3だけで作ってます 33 ランキングも ユーザーに合 わせた新刊通 知も ユーザーごと の表示設定も フィルター情報
も
ただの変態プレイじゃない: S3を使うメリット 34 ◉ .需要予測がいらない! ◉ 料金が安い。めっちゃ安い ◦ 大抵DBが一番高い ◉
大きなデータも小さなデータも入れられる ◉ 同時大量書き込みでも速い
AmplifyにおけるS3の権限テンプレ 35 public/ protected/ private/ 誰でもWRITE/READ可 ログインユーザーが自分のと ころだけWRITE/READ可 READは誰でも可能 WRITEはログインユーザーのみ
36 再掲: スキ100!の構成
◉ 整合性 ◦ 当然「結果整合性」 ◦ WRITEは非正規化して一回で済ませる ◦ DELETEは、論理削除データをINSERTする 37 S3でデータモデリングするコツ
◉ 検索性 ◦ インデックスは遅延して作成 ▪ S3 event -> SQS ->
Lambdaで実装 ◦ なるべくワンリクエストで済むデータを事前に作っとく 38 S3でデータモデリングするコツ
◉ パフォーマンス ◦ S3のクエリを理解する ▪ キーによる前方一致検索は可能 ▪ コンテンツの一括取得はできない ◦ 「キー」もデータである
39 S3でデータモデリングするコツ
キー設計 ◉ 「持ってる」ボタンが押された時 ◦ private/futami/onepiece1/20190510164001/have/INSERT.json ◉ 「元に戻す」ボタンが押された時 ◦ private/futami/onepiece1/20190510164003/have/DELETE.json 40
「元に戻す」のデータモデリング
読み込み時 ◉ Storage.vault.list({ prefix: “futami/” }) ◦ private/futami/onepiece1/20190510164001/have/INSERT.json ◦ private/futami/onepiece1/20190510164003/have/DELETE.json
◉ → ロジックでタイムスタンプを比較する ◦ この場合は、”「読まない」ではない” になる 41 「元に戻す」のデータモデリング
◉ データ量が冗長になるので、いつか削除する ◦ Compaction ◦ 日次バッチとかで ◦ それでも長く使うと、めっちゃデータが増えちゃう ▪ なんか対策考える
→ 多分大変 42 「元に戻す」のデータモデリング
43 データモデリングの話は Qiitaに書きたい
大きな視座: 「頼る」ことで歴史が進む 44 https://slideship.com/users/@marcy-terui/presentations/2017/11/5vUYExsSUrPbyjyjKA7J99/?p=6
45 好きなマンガ読める率 100%へ!
46 さあ、みんな Amplifyで日曜エンジニアリング!