はじめに
いつも勉強になる 川島さんの著作(ブログ・スライド)の書評というか、何を読んだかメモ。
読む順番は順不同&気分次第です。
Scrapbox URL
アーキテクチャ設計における垂直思考と水平思考
アーキテクチャ設計における垂直思考と水平思考 - kawasima
表題の考察については以下の書籍で色々と考えました。
結論としては、かなり違う切り口でしたが、なるほど という感じです。
自分としては、ロジカル(垂直)とラテラル(水平)についての区別なく「Why」「What」「How」くらいのザックリでした。
あわせて読みたい
www.slideshare.net
ソフトウェア設計練習帳
新人研修のシステム開発シナリオの素案にもなるかも
未読管理
未読(もしくは読んだことにする範囲)の捉え方で管理方法は変わる
予約
マイクロサービスで、取り消し(ロールバック)を実現しようとした場合の話だと理解しました。
境界を越えた整合性については、同期的であれ非同期的であれ、DBで実現できていたトランザクションに相当する機能を自分たちで実装しないといけないから、大変だという認識。
Akkaとか使えば良い感じになるのかな?(わかんないけど)
ページネーション
オフセットベース
* 「最後のページへ」のようなページネーションは避けた方が良い。
理由:大きな結果セットに対して大きなオフセットの指定になるから。
SQLで降順に並べて順番に取得するってことは そういうことになるってことかな?
んーでも、それだと昇順でも結果セットの規模は同じか…
分かった気になったけど、多分 分かっていないということが分かった。
カーソルベース
* 日付は一意にならないのでカーソルとしては使ってはいけない
「ID生成大全」にもありますが、厳密なソート順を求めると性能面でボトルネックが出来うるという事だけは押さえておいた方が良いような気もします。
- 無限スクロールとも相性が良い
- 特定のページへのダイレクトリンクはできない
諸々 雰囲気では分かったけど、多分 ちゃんと分かっていない…
あわせて読みたい
Snowflake形式のIDを採用した場合の苦労ポイント - yoskhdia’s diary
アンケート
ERDの練習教材に使えそう
ログイン
世のログイン機能はメールアドレスや電話番号が本人のものであるという確証がとれていることを前提としていることが多いんだなーということを学べた。
検索条件保存
保存形式は、、、僕だったら「QueryStringのまま」か「JSON」かなぁ。
検索条件による分析とか必要な場合は「検索条件パラメータごとにカラムを作る」を選択しがちだけど、そういった2次利用は それ専用として別途準備した方が良いと思っているので。
検索条件の再利用だけであれば、「QueryStringのまま」で、検索APIの仕様変更時の追随など 条件変更耐性的なところ鑑みた中間を狙ったら「JSON」かなー。
お気に入り
お気に入り情報は「お気に入りに入れたときの情報」を保持する、というのは納得。
つまりは伝票と同じ。
某会計クラウドサービスで請求先名を変えたら 過去の請求書も書き換わったというのは あってはならないのとニュアンスは同じ*1。
UIに関する記載(Ajax通信でAPI呼ぶだけ)というのも納得。
*1:今は解消されているかもしれないけど