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
MangaTechエンジニアの日曜アプリ開発の勧め - AWS Amplify 時代の安くて 強いDB設計
Search
dublook
May 10, 2019
Programming
4
1.5k
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
110
Other Decks in Programming
See All in Programming
自動テスト実行結果の目的を整理する / Organizing objectives of automated test results
twada
PRO
10
2.1k
Parallel Socket Communication in Swift
s_shimotori
0
200
両面どころかインフラもTSでできるよ ~ 全方位TypeScriptによるプロダクト開発 ~
myfinder
7
2.1k
LLMチャットボットのアプリケーション設計Tips
os1ma
4
650
Deep Dive 大規模システムアーキテクチャ/開発組織エンジニアリング / Deep Dive Large-Scale System Architecture, Development Organization Engineering
nrslib
15
2.9k
ONE WEDGE_Company_Information
1wedge
0
160
object-oriented-conference-2024
fuwasegu
6
1.4k
ISUCONってなんだか難しそう……!!でも、初めてのISUCONにPHPで挑戦してきました!
kotomin_m
1
300
GitHub Copilot Tips and Tricks
yuichielectric
26
7.4k
まっちすいっち戦争 / match vs switch
takuyakatsusa
2
660
PHP 8.3で追加されたjson_validate()を徹底的に深掘りしてみよう
mashirou1234
1
720
ファイル先頭の use の意味、説明できますか? 〜PHP の namespace と autoloading の関係を正しく理解しよう〜 / namespace and autoloading in php
okashoi
2
470
Featured
See All Featured
What the flash - Photography Introduction
edds
64
11k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
Building Better People: How to give real-time feedback that sticks.
wjessup
350
18k
Designing the Hi-DPI Web
ddemaree
275
33k
The Power of CSS Pseudo Elements
geoffreycrofte
58
4.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
5
1.4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
242
20k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.2k
Keith and Marios Guide to Fast Websites
keithpitt
407
22k
Designing on Purpose - Digital PM Summit 2013
jponch
109
6.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
10
4.5k
Build The Right Thing And Hit Your Dates
maggiecrowley
23
1.9k
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で日曜エンジニアリング!