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 時代の安くて ...
Search
dublook
May 10, 2019
Programming
1.9k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
MangaTechエンジニアの日曜アプリ開発の勧め - AWS Amplify 時代の安くて 強いDB設計
S3をデータベースとして使うメリット
・需要予測がいらない!
・料金が安い。めっちゃ安い
・大抵DBが一番高い
・大きなデータも小さなデータも入れられる
・同時大量書き込みでも速い
dublook
May 10, 2019
More Decks by dublook
See All by dublook
好きなマンガ読める率100%にするために、AWS AmplifyでVueアプリをデプロイしてみた
dublook
0
160
Other Decks in Programming
See All in Programming
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.5k
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
220
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
290
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.1k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
600
AIで効率化できた業務・日常
ochtum
0
150
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
0
140
Webフレームワークの ベンチマークについて
yusukebe
0
180
Performance Engineering for Everyone
elenatanasoiu
0
230
Oxcを導入して開発体験が向上した話
yug1224
4
340
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
240
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
410
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Why Our Code Smells
bkeepers
PRO
340
58k
A Soul's Torment
seathinner
6
3k
How to build a perfect <img>
jonoalderson
1
5.7k
My Coaching Mixtape
mlcsv
0
150
A Modern Web Designer's Workflow
chriscoyier
698
190k
GraphQLとの向き合い方2022年版
quramy
50
15k
Designing for Timeless Needs
cassininazir
1
260
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
170
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
170
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
The Art of Programming - Codeland 2020
erikaheidi
57
14k
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で日曜エンジニアリング!