Published on

2021年11月後半の作業状況

Authors

11 月後半の状況

11 月後半は合唱コンクールで岡山に行ったり、その他歌の稽古、開発とは関係ないデザインのお仕事など、なかなか時間が取れない期間でした。

しかし、移動時間が多かったことから勉強が捗り、データベース構築の方針が明確になりました。今回はその覚書になります。

開発状況

データベース選定

AWS を使用していることから、RDSDynamoDBDocumentDBあたりが候補に上がってきます。このうち、DocumentDB については利用料金が高額であることから除外しました。また、MongoDBも最近 Serverless なアプリケーションが登場し、価格も 0.3 米ドル/100 万読み込み・日と安いことから候補に入れました(しかも現状の規模なら、無料枠で十分事足ります)。

今回想定しているデータはユーザ情報、コンテンツに関する情報などに限ります。また若いサービスであることから業務パターンが固まりきっておらず、今後破壊的な変更が発生する可能性もあります。その上で、各データベースの長短を以下にまとめます。

RDS

  • △: [柔軟性]RDBMS。とりあえず正規化してデータを配置すれば、クエリを使用してデータを柔軟に取り出せる。ただし、スキーマの変更に難あり
  • △: [拡張性]急なユーザ数の増加に対応するには、オートスケール設定などを気にする必要がある
  • ×: [コスト]無料枠あり。常駐のインスタンスであることから、使用されていない時間でも課金される

DynamoDB

  • ×: [柔軟性]KVS。非正規化スキーマであることから、1 つの変更に対して Scan 処理を行う可能性がある。また、業務パターンが定まりきっていない中でスキーマ設計することは危険
  • ◯: [拡張性]水平拡張性があり、急なユーザ数の増加にもすぐ対応できる
  • ◯: [コスト]無料枠あり。読み書き回数での課金のため、比較的安い

MongoDB

  • △: [柔軟性]ドキュメント指向 DB。RDB のような join 処理を行えるため、正規化を意識しながらデータ配置できる。また、スキーマの変更も容易。ただし、無料枠から Serverless 版に移行する際に現状ダウンタイムが発生?(要検証)
  • ◯: [拡張性]水平拡張性があり、急なユーザ数の増加にもすぐ対応できる
  • ◯: [コスト]無料枠あり。読み書き回数での課金のため、比較的安い

これらを総合し、今のところ MongoDB を採用する方向で考えています。もしログ等シンプルかつ大量データの I/O が必要な場合は、MongoDB を検討するかもしれません。他におすすめありましたらぜひコメントお願いします。

12 月前半の予定

年内には auditorium の続報をお届けできる予定ですが、12 月前半はその作業に追われる予定です。auditorium のリファクタリング、AWS 移行等は年末からの着手になりそうです。できれば年度内には片付けたいですが、どうなるでしょうか…。引き続き当ブログで発信してまいります。