Upgrade to Pro — share decks privately, control downloads, hide ads and more …

“ユーザーファースト”の功罪 〜分析と実験によるアーキテクチャ設計〜 #bpstudy

Akira Suenami
November 29, 2019

“ユーザーファースト”の功罪 〜分析と実験によるアーキテクチャ設計〜 #bpstudy

BPStudy#147 で発表したものです。

Akira Suenami

November 29, 2019
Tweet

More Decks by Akira Suenami

Other Decks in Technology

Transcript

  1. 自己紹介 • 末並 晃 @a_suenami • 生息している界隈: DDDとか、TDDとか、RDBとか • お仕事で使ってる技術スタック:

    Rails, React, 最近 Java とかも 少々 • 好きな RDBMS: PostgreSQL • 好きな制約: チェック制約 • 好きな焼肉の部位: ハラミ • 好きな(ry
  2. SoRとSoE • SoR: System of Record ◦ その名の通り、「記録」のためのシステム。 ◦ 入力の事前チェックの堅牢性、データ整合性の担保などが求

    められる。 • SoE: System of Engagement ◦ 利用者との関係を構築するためのシステム。 ◦ 今どきの言葉を使うとよい UX を提供するためのシステム、と 言い換えてもよい。
  3. SoRとSoEの対比 SoR SoE 基本的な設計観点 データ整合性 柔軟性、性能 データストア トランザクショナルな DB 多くの場合、RDB

    スケーラビリティがある高速なデータ ストア ドキュメント指向DB、KVS、全文検索 インデックスなど リリースサイクル SoEと比べると相対的に長い(諸説あ るかも) 高速なリリースサイクルが求められる 品質評価 トラディショナルなソフトウェアテスティ ング手法を適用しやすい トラディショナルな手法に加え、ユー ザーテスト、ユーザーインタビュー、 A/Bテストなど カナリアリリースも実トラフィックを利 用したテストと捉えることができる データ整合性 トランザクション整合性が必須 結果整合性でよい要件も多い 要するに? 堅牢なMutation 柔軟なQuery 設計を駆動する(しやすい)もの ドメインモデル、概念データモデル UI(ビジュアルデザイン、ユーザインタ ラクション)、キャッシュ
  4. 事例: 2-sided platform • モール型 E-Commerce サービスを考える • アプリケーション利用者 ◦

    予約者ユーザ ◦ 店舗ユーザ モール型 EC プラットフォーム 購入者 店舗
  5. 複数のアクターの要求がDBに直撃する 購入者 出荷担当者 いつ届くの? キャンセルしたい 商品を間違ったので 変更したい 出荷しないと! 在庫が残り少ないので仕 入れ指示をしたい

    キャンセルされたので出 荷を止めます 共通DBにある語彙はは購入者と出荷担当者で同一のように思 われるが、多くの場合、次第に乖離し始める。 共通DB ふ、ふええ…
  6. 中央に事業者向けのモデルがあると考える 購買者向け システム 購入者 店舗 店舗向け システム 事業者の モデル •

    DB を直接共有しないため、利用者アクターのユースケースに依 存しない不変条件を維持することができる。 • システム全体が、事業者、購買者、店舗をそれぞれの要求元とす るサブシステムに分割された。
  7. What the system “is” / What the system “does” •

    What the system is ◦ User thinking ◦ Classes & Objects ◦ Domain Experts & Architects ◦ Database schema ◦ Long-term stable structure • What the system does ◦ User doing ◦ Roles, Identifiers, Activation records ◦ End Users & User Experience people ◦ Interface design ◦ Ever-changing functionally
  8. 共通性と可変性の例 共通性 可変性 型 総称型(ジェネリクス) クラス、オブジェクト 型パラメータ Trait 外部キー制約 参照整合性

    存在(挿入)の順序 実際の存在タイミング 開発フロー Git チケットやそのステータス ブランチモデル(git-flow, github-flow) ワークフロー設定 請求管理 / 収支管理 複式簿記 請求ルール(締日、支払いサイト etc) 割引ルール、その他業務ルール 記事掲載管理 記事フォーマット 公開/非公開基準 執筆時のライフサイクル レビューフロー 飲食店予約管理システム 予約確定条件 座席確定タイミング 決済手段
  9. まとめ • アプリケーションの要求元を事業者と利用者に分け、そのそれぞ れについてモデルを構築し、実装を考えると、それは一般に SoR / SoE の特性と呼ばれているものと一致する。 • SoR

    / SoE という分類は Lean Architecture における What the system is / What the system does との対応やマルチパラダイ ムデザインにおける共通性 / 可変性とも高い関連性がある。 • SoE / What the system does / 可変性 はユーザーに対する価値 の源泉であるが、それを支える SoR / What the system is / 共通 性 の分析も重要である。