これまで培われたあすけんの複雑なシステムをリアーキテクチャするという課題に、組織内での専門的な知見が十分に存在しない中、我々が策定した戦略について説明します。リアーキテクチャする上の制約、設計思想にDDDを選択した理由、体制構築、中長期のマイルストーンなど。
askenリアーキテクチャを行う背景とDDD導入戦略2023.9.14 村上 英誉 @株式会社asken
View Slide
社外秘© asken.inc自己紹介経歴2005 - SIerでキャリアスタート2013 - 某ISPでアジャイル、DDDと出会って感銘を受ける2023 - askenジョイン最近のお仕事・プロダクト型組織への変換・DDDでのリアーキテクチャ、チームの立ち上げその中でたくさんの失敗学習をしてきました村上 英誉(ヒデタカ)株式会社 asken 副部長/EMフルリモート@宮城県仙台市在住
社外秘© asken.inc今日の概要- なぜリアーキテクチャをやるのかといった背景- リアーキテクチャの進め方について紹介- 涙なしでは語れない過去の学習話も
社外秘© asken.inc背景
社外秘© asken.incあすけんの今
社外秘© asken.incもっと多くの人を健康に
社外秘© asken.incサービスを届ける上で問題が・・・我々の期待する3〜6倍の期間がかかってしまっている
社外秘© asken.inc色々な問題はあるがシステムに関連する問題も大きい
社外秘© asken.incやること
社外秘© asken.incシステムの問題と原因影響箇所の特定に時間がかかる- サービス仕様からシステムの修正箇所を推測するのが難しい<原因>①サービスの構造とシステムの構造が不一致②サービス仕様がまとまっていない
社外秘© asken.inc現行システムの問題①P:サービスの構造とシステムの構造が不一致サービスの構造 システムの構造ABCAとC-1B-1 B-2C-2変換サービス、システム、変換ルールと3つ理解する必要がある
社外秘© asken.incDDDで解決するT:サービスの構造とシステムの構造を一致させる = DDDサービスの構造 システムの構造ABC業務が分かればシステムもわかるABC🟰
社外秘© asken.incリアーキテクチャを行うDBサブシステムA(コアドメイン)サブシステムBモバイルアプリiOS/AndroidサブシステムCサブシステム・・バックエンドシステムが対象
社外秘© asken.incリアーキテクチャを行う色々変えます○ 設計思想にDDDを採用○ 言語・フレームワーク変更○ アーキテクチャ変更○ CI/CDの仕組み変更○ サーバ構成も変更○ などなど
社外秘© asken.inc言語・フレームワーク変更DDDを実践するにあたり技術スタックを見直しPHP/CakePHP → Kotlin/Spring Boot※詳細は弊社テックブログをご覧くださいhttps://tech.asken.inc/entry/2023/08/10/170000
社外秘© asken.inc現行システムの問題②P:サービス仕様がまとまっていないサービスの構造ABCサービスの仕様・ドキュメントがあったりなかった・機能毎に記載内容に一貫性がない
社外秘© asken.incRDRA/ICONIXで解決T:ドメインモデルと繋げやすいRDRA/ICONIXで仕様を整理サービスの構造ABCサービスの仕様情報モデルバリエーションUC記述BUCSUCドメインモデル
社外秘© asken.inc進め方
社外秘© asken.incいいシステムにしたいでもできるだけ早く終わらせたい
社外秘© asken.inc戦略ドメインに集中ドメイン分析/実装/検証により多くの時間を使う → プロセスなどやり方を決めるところを効率よくやりたい早めに検証リリース後に致命的な後戻りを発生させない →本格的な開発の前に業務分析、モデリングの妥当性を確認するシンプル化サービス仕様をシンプルにして作るものを減らす →サービス仕様を再整理 or 実はもう使われてない機能などは削除段階的リリースフィードバックを早く受けられる、成果を早く享受できる →全部できてからリリースするのではなく、少しずつリリースしていく
社外秘© asken.inc戦略1.ドメインに集中達成したいことドメインの分析/設計/実装/検証に多くの時間を使いたい → プロセスなどやり方を決めるところを効率よくやりたいやること知見のあるメンバーをアサインし既存メンバーと共に実践する- 組織としてゼロから知見を蓄えるところをショートカットする- ハマりどころを事前に回避できる
社外秘© asken.inc戦略1.ドメインに集中問題 知見のあるメンバーが社内にいなかった・・・対策社外からでもアサインする- 採用:EM1名、エンジニア1名採用、継続して採用中- 業務委託:株式会社ミライトデザイン- DDDの実践経験あり- コンサルだけではなく開発チームに入って協業できる
社外秘© asken.inc戦略2.早めに検証かつての失敗談1ユースケースリリース後、2ユースケース目の開発中に致命的なモデルの間違いが発覚、作り直しが必要になった4ヶ月分の開発がやり直しに!!!!
社外秘© asken.inc戦略2.早めに検証達成したいことリリース後に致命的な後戻りを発生させない →本格的な開発の前に業務分析、モデリングの妥当性を確認するやること本格的に作り始める前に、PoCを3回作る- コアドメインの概要をモデリング、Domain、Applicationレイヤーの実装をして、妥当性を確認する- 結果としてaskenメンバーがプロセスを習得できる、開発ツールの検証にもつながる
社外秘© asken.inc戦略3.シンプル化ドメインエキスパートと会話せず、仕様書から現行の仕様をトレースし既存の仕様を踏襲することにした。一番複雑で後々まで開発の重荷になった機能が、実は不要だったことが発覚。苦労して負債を作り込んでしまった!!!!
社外秘© asken.inc戦略3.シンプル化達成したいことサービス仕様をシンプルにして作るものを減らす →サービス仕様を再整理 or 実はもう使われてない機能などは削除やること定期的にドメインエキスパートと対話する機会を設ける- サービス仕様の整理も一緒にやれると理想- 成果物レビュー会を設け、ユースケース、ユースケース記述、ドメインモデルなどレビューをする
社外秘© asken.inc戦略4.段階的リリース達成したいことフィードバックを早く受けられる、成果を早く享受できる →全部できてからリリースするのではなく、少しずつリリースしていくやること優先順位を決めて少しずつリリースしていく- サブシステムは一つずつ選択- 今回はDBはお預け- サブシステム内も1機能ずつ
社外秘© asken.inc一度にやらずに順番に対応DBサブシステムA(コアドメイン)サブシステムBサブドメインモバイルアプリiOS/AndroidサブシステムCサブドメインサブシステム・・まずはここからDBは後回しコアドメインが終わってから
社外秘© asken.inc一度にやらずに順番に対応②①③④⑤⑥
社外秘© asken.incマイルストン技術選定 事前準備/検証 計画 本開発本開発に向けて以下を実施中- 優先順位などの移行戦略- 体制強化- 育成方法の確立 ここがすごい大事- ドメインに集中:DDDのやり方を確立 - 早めに検証:コアドメインのモデルの分析/検証これから・人数を増やしながら実践・既存システムとの連携・既存メンバーの育成(暖簾分け)イマココドメインに集中 早めに検証 シンプル化 段階的リリース
社外秘© asken.incまとめ
社外秘© asken.inc戦略ドメインに集中ドメイン分析/実装/検証により多くの時間を使う → プロセスなどのやり方は早めに固めてしまう早めに検証リリース後に致命的な後戻りを発生させない →本格的な開発の前に業務分析、モデリングの妥当性を確認するシンプル化サービス仕様をシンプルにして作るものを減らす →サービス仕様を再整理 or 実はもう使われてない機能などは削除段階的リリースフィードバックを早く受けられる、成果を早く享受できる →全部できてからリリースするのではなく、少しずつリリースしていく
社外秘© asken.inc何をするか本格的な開発を始める前の準備が大事- ドメインに集中するためプロセスは一旦早めに固めてしまう- 経験者はどうにかしてアサインする- ドメインの分析/設計/実装をして検証フィードバックを得る- サービスをシンプルにするためドメインエキスパートと対話- 早く得るため段階的にリリース
社外秘© asken.incいいシステムを作るかつできるだけ早く終わらせる
社外秘© asken.incお知らせaskenは一緒働く仲間を募集しています一緒に多くの人を健康にするサービスを作りましょう!!
社外秘© asken.incご清聴ありがとうございました