Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

ポイントサービス設計の異常な挑戦 または我々は如何にして心配するのを止めてドメイン駆動設計を愛...

ポイントサービス設計の異常な挑戦 または我々は如何にして心配するのを止めてドメイン駆動設計を愛するようになったか - NIFTY Tech Day 2023

ニフティ株式会社

November 27, 2023
Tweet

Video


Resources

NIFTY Tech Day 2023

https://techday.nifty.co.jp/2023/

More Decks by ニフティ株式会社

Other Decks in Programming

Transcript

  1. 自己紹介 • 名前 • 関 歩武 • 勤続年数 • 3年目

    • 所属 • 会員システムグループ 第二開発チーム • ドメイン駆動設計経験 • ほとんどなし
  2. ポイントサービスの歴史 1996年: iMiネット事業として事業を開始 2002年: ポイント事業開始 2005年: ニフティ株式会社子会社化 2011年: ライフメディアにブランドチェンジ 2018年:

    ニフティ子会社としてニフティネクサス株式会社に再編 2020年: ニフティ株式会社のポイントサービスとして再編 2021年: ニフティポイントクラブにブランドチェンジ 25年以上続く老舗サービス 様々なシステムの統合や開発を繰り返して、現在のポイントシステムとなった
  3. ポイントサービスの問題点 12 • ポイント交換バッチ • ポイント付与生成 バッチ • etc 分析用システム

    システム 運用者 合わせる 機能重複 システムの用途が 分かれていない From システム to 運用者
  4. ポイントサービスの問題点 13 テスト システムAの 成果取り込み バッチ システムAの ステータス 更新バッチ システムBの

    ポイント付与ファイル 作成バッチ システムCの ポイント付与バッチ 早朝 お昼 お昼明け 毎時
  5. ポイントサービスの問題点 25 テスト システムAの 成果取り込み バッチ システムAの ステータス 更新バッチ システムBの

    ポイント付与ファイル 作成バッチ システムCの ポイント付与バッチ 早朝 お昼 お昼明け 毎時
  6. アーキテクチャで何をするかを決めるために流れに沿ってそ れらをまとめた 49 集合 機能名(責務) プレゼンテーション 層 ユースケース層 ドメイン層 リポジトリ層

    DB・UMPS 処理 アカウント付け替え 準備(確認画面前) 前アカウント情報 の取得 呼び出し アカウント付け替え 準備 アカウント情報 - @nifty ID - 登録者ID other_system_use r 削除フラグfalse @nifty IDを取得し、 その情報を other_system_use rテーブルから selectする 前アカウント履歴 集約の取得 呼び出し アカウント付け替え 準備 アカウント履歴集 約 - @nifty ID - 登録者ID other_system_use r 上で取得した情報 でアカウント履歴集 約を作成する 後アカウント情報 の取得 呼び出し アカウント付け替え 準備 アカウント情報 - @nifty ID - 登録者ID other_system_use r @nifty IDを取得し、 その情報を other_system_use rテーブルから selectする 後アカウント履歴 集約の取得 呼び出し アカウント付け替え 準備 アカウント履歴集 約 - @nifty ID - 登録者ID other_system_use r 上で取得した情報 でアカウント履歴集 約を作成する
  7. 実際の流れ 1. Railsでどのようにドメイン駆動設計を取り入れるか?を考える 2. コアドメインの決定 3. どのコアドメインについて刷新に取り掛かっていくか 4. 会員管理の中のドメインを細分化する 5.

    ユースケースとデータモデリングの作成 6. データの種別を考える 7. オブジェクトの集約を考える 8. ドメインロジックを考える 9. 再度ユースケースとシステムフローを考える 10. どの機能を優先的に作るかを決める 11. 入会とログイン部分のドメイン設計などを行う 12. 優先的に作る機能の再検討 13. アカウント付け替えツールのドメイン設計などを行う 14. 処理の流れの作成 15. Railsに当てはめていく なぜか二度考える ユースケース ドメインを決めた後に ユースケースなどが出 てくる 優先的に開発する機能 の再検討 初っ端にRailsの話が 出てくる謎