$30 off During Our Annual Pro Sale. View Details »

asken リアーキテクチャを行う背景と DDD導入戦略

むらひげ
September 15, 2023

asken リアーキテクチャを行う背景と DDD導入戦略

これまで培われたあすけんの複雑なシステムをリアーキテクチャするという課題に、組織内での専門的な知見が十分に存在しない中、我々が策定した戦略について説明します。リアーキテクチャする上の制約、設計思想にDDDを選択した理由、体制構築、中長期のマイルストーンなど。

むらひげ

September 15, 2023
Tweet

Other Decks in Technology

Transcript

  1. asken
    リアーキテクチャを行う背景と
    DDD導入戦略
    2023.9.14 村上 英誉 @株式会社asken

    View Slide

  2. 社外秘
    © asken.inc
    自己紹介
    経歴
    2005 - SIerでキャリアスタート
    2013 - 某ISPでアジャイル、DDDと出会って感銘を受ける
    2023 - askenジョイン
    最近のお仕事
    ・プロダクト型組織への変換
    ・DDDでのリアーキテクチャ、チームの立ち上げ
    その中でたくさんの失敗学習をしてきました
    村上 英誉(ヒデタカ)
    株式会社 asken 副部長/EM
    フルリモート@宮城県仙台市在住

    View Slide

  3. 社外秘
    © asken.inc
    今日の概要
    - なぜリアーキテクチャをやるのかといった背景
    - リアーキテクチャの進め方について紹介
    - 涙なしでは語れない過去の学習話も

    View Slide

  4. 社外秘
    © asken.inc
    背景

    View Slide

  5. 社外秘
    © asken.inc
    あすけんの今

    View Slide

  6. 社外秘
    © asken.inc
    もっと多くの人を健康に

    View Slide

  7. 社外秘
    © asken.inc
    サービスを届ける上で問題が・・・
    我々の期待する3〜6倍の期間がかかってしまっている

    View Slide

  8. 社外秘
    © asken.inc
    色々な問題はあるが
    システムに関連する
    問題も大きい

    View Slide

  9. 社外秘
    © asken.inc
    やること

    View Slide

  10. 社外秘
    © asken.inc
    システムの問題と原因
    影響箇所の特定に時間がかかる
    - サービス仕様からシステムの修正箇所を推測するのが難しい
    <原因>
    ①サービスの構造とシステムの構造が不一致
    ②サービス仕様がまとまっていない

    View Slide

  11. 社外秘
    © asken.inc
    現行システムの問題①
    P:サービスの構造とシステムの構造が不一致
    サービスの構造 システムの構造
    A
    B
    C
    AとC-1
    B-1 B-2
    C-2
    変換
    サービス、システム、変換ルールと
    3つ理解する必要がある

    View Slide

  12. 社外秘
    © asken.inc
    DDDで解決する
    T:サービスの構造とシステムの構造を一致させる = DDD
    サービスの構造 システムの構造
    A
    B
    C
    業務が分かればシステムもわかる
    A
    B
    C
    🟰

    View Slide

  13. 社外秘
    © asken.inc
    リアーキテクチャを行う
    DB
    サブシステムA
    (コアドメイン)
    サブシステムB
    モバイルアプリ
    iOS/Android
    サブシステムC
    サブシステム・・
    バックエンドシステムが対象

    View Slide

  14. 社外秘
    © asken.inc
    リアーキテクチャを行う
    色々変えます
    ○ 設計思想にDDDを採用
    ○ 言語・フレームワーク変更
    ○ アーキテクチャ変更
    ○ CI/CDの仕組み変更
    ○ サーバ構成も変更
    ○ などなど

    View Slide

  15. 社外秘
    © asken.inc
    言語・フレームワーク変更
    DDDを実践するにあたり技術スタックを見直し
    PHP/CakePHP → Kotlin/Spring Boot
    ※詳細は弊社テックブログをご覧ください
    https://tech.asken.inc/entry/2023/08/10/170000

    View Slide

  16. 社外秘
    © asken.inc
    現行システムの問題②
    P:サービス仕様がまとまっていない
    サービスの構造
    A
    B
    C
    サービスの仕様
    ・ドキュメントがあったりなかった
    ・機能毎に記載内容に一貫性がない

    View Slide

  17. 社外秘
    © asken.inc
    RDRA/ICONIXで解決
    T:ドメインモデルと繋げやすいRDRA/ICONIXで仕様を整理
    サービスの構造
    A
    B
    C
    サービスの仕様
    情報
    モデル
    バリエー
    ション
    UC
    記述
    BUC
    SUC
    ドメイン
    モデル

    View Slide

  18. 社外秘
    © asken.inc
    進め方

    View Slide

  19. 社外秘
    © asken.inc
    いいシステムにしたい
    でも
    できるだけ早く終わらせたい

    View Slide

  20. 社外秘
    © asken.inc
    戦略
    ドメインに集中
    ドメイン分析/実装/検証により多くの時間を使う
     → プロセスなどやり方を決めるところを効率よくやりたい
    早めに検証
    リリース後に致命的な後戻りを発生させない
     →本格的な開発の前に業務分析、モデリングの妥当性を確認する
    シンプル化
    サービス仕様をシンプルにして作るものを減らす
     →サービス仕様を再整理 or 実はもう使われてない機能などは削除
    段階的リリース
    フィードバックを早く受けられる、成果を早く享受できる
     →全部できてからリリースするのではなく、少しずつリリースしていく

    View Slide

  21. 社外秘
    © asken.inc
    戦略1.ドメインに集中
    達成したいこと
    ドメインの分析/設計/実装/検証に多くの時間を使いたい
     → プロセスなどやり方を決めるところを効率よくやりたい
    やること
    知見のあるメンバーをアサインし既存メンバーと共に実践する
    - 組織としてゼロから知見を蓄えるところをショートカットする
    - ハマりどころを事前に回避できる

    View Slide

  22. 社外秘
    © asken.inc
    戦略1.ドメインに集中
    問題 知見のあるメンバーが社内にいなかった・・・
    対策
    社外からでもアサインする
    - 採用:EM1名、エンジニア1名採用、継続して採用中
    - 業務委託:株式会社ミライトデザイン
    - DDDの実践経験あり
    - コンサルだけではなく開発チームに入って協業できる

    View Slide

  23. 社外秘
    © asken.inc
    戦略2.早めに検証
    かつての失敗談
    1ユースケースリリース後、2ユースケース目の開発中に致命的
    なモデルの間違いが発覚、作り直しが必要になった
    4ヶ月分の開発がやり直しに!!!!

    View Slide

  24. 社外秘
    © asken.inc
    戦略2.早めに検証
    達成したいこと
    リリース後に致命的な後戻りを発生させない
     →本格的な開発の前に業務分析、モデリングの妥当性を確認する
    やること
    本格的に作り始める前に、PoCを3回作る
    - コアドメインの概要をモデリング、Domain、Applicationレイヤーの実
    装をして、妥当性を確認する
    - 結果としてaskenメンバーがプロセスを習得できる、開発ツールの検証
    にもつながる

    View Slide

  25. 社外秘
    © asken.inc
    戦略3.シンプル化
    ドメインエキスパートと会話せず、仕様書から現行の仕様を
    トレースし既存の仕様を踏襲することにした。一番複雑で
    後々まで開発の重荷になった機能が、実は不要だったことが
    発覚。
    苦労して負債を作り込んでしまった!!!!

    View Slide

  26. 社外秘
    © asken.inc
    戦略3.シンプル化
    達成したいこと
    サービス仕様をシンプルにして作るものを減らす
     →サービス仕様を再整理 or 実はもう使われてない機能などは削除
    やること
    定期的にドメインエキスパートと対話する機会を設ける
    - サービス仕様の整理も一緒にやれると理想
    - 成果物レビュー会を設け、ユースケース、ユースケース記述、ドメイ
    ンモデルなどレビューをする

    View Slide

  27. 社外秘
    © asken.inc
    戦略4.段階的リリース
    達成したいこと
    フィードバックを早く受けられる、成果を早く享受できる
     →全部できてからリリースするのではなく、少しずつリリースしていく
    やること
    優先順位を決めて少しずつリリースしていく
    - サブシステムは一つずつ選択
    - 今回はDBはお預け
    - サブシステム内も1機能ずつ

    View Slide

  28. 社外秘
    © asken.inc
    一度にやらずに順番に対応
    DB
    サブシステムA
    (コアドメイン)
    サブシステムB
    サブドメイン
    モバイルアプリ
    iOS/Android
    サブシステムC
    サブドメイン
    サブシステム・・
    まずはここから
    DBは後回し
    コアドメインが終わってから

    View Slide

  29. 社外秘
    © asken.inc
    一度にやらずに順番に対応






    View Slide

  30. 社外秘
    © asken.inc
    マイルストン
    技術選定 事前準備/検証 計画 本開発
    本開発に向けて以下を実施中
    - 優先順位などの移行戦略
    - 体制強化
    - 育成方法の確立
     
    ここがすごい大事
    - ドメインに集中:DDDのやり
    方を確立 
    - 早めに検証:コアドメインの
    モデルの分析/検証
    これから
    ・人数を増やしながら実践
    ・既存システムとの連携
    ・既存メンバーの育成(暖簾分け)
    イマココ
    ドメインに集中 早めに検証 シンプル化 段階的リリース

    View Slide

  31. 社外秘
    © asken.inc
    まとめ

    View Slide

  32. 社外秘
    © asken.inc
    DDDで解決する
    T:サービスの構造とシステムの構造を一致させる = DDD
    サービスの構造 システムの構造
    A
    B
    C
    業務が分かればシステムもわかる
    A
    B
    C
    🟰

    View Slide

  33. 社外秘
    © asken.inc
    戦略
    ドメインに集中
    ドメイン分析/実装/検証により多くの時間を使う
     → プロセスなどのやり方は早めに固めてしまう
    早めに検証
    リリース後に致命的な後戻りを発生させない
     →本格的な開発の前に業務分析、モデリングの妥当性を確認する
    シンプル化
    サービス仕様をシンプルにして作るものを減らす
     →サービス仕様を再整理 or 実はもう使われてない機能などは削除
    段階的リリース
    フィードバックを早く受けられる、成果を早く享受できる
     →全部できてからリリースするのではなく、少しずつリリースしていく

    View Slide

  34. 社外秘
    © asken.inc
    何をするか
    本格的な開発を始める前の準備が大事
    - ドメインに集中するためプロセスは一旦早めに固めてしまう
    - 経験者はどうにかしてアサインする
    - ドメインの分析/設計/実装をして検証
    フィードバックを得る
    - サービスをシンプルにするためドメインエキスパートと対話
    - 早く得るため段階的にリリース

    View Slide

  35. 社外秘
    © asken.inc
    いいシステムを作る
    かつ
    できるだけ早く終わらせる

    View Slide

  36. 社外秘
    © asken.inc
    お知らせ
    askenは一緒働く仲間を募集しています
    一緒に多くの人を健康にするサービスを作りましょう!!

    View Slide

  37. 社外秘
    © asken.inc
    ご清聴ありがとうございました

    View Slide