天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

DDDで開発したサービスを5年間運用した結果に参加してきた

metaps.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

DDD(Domain Driven Development)について、実際に運用した経験をもとに、そもそもDDDとは?から始まり、導入の経緯、設計の手触り感やメリット/デメリットについて、エンジニア同士での対談形式でお話していきます。

会の様子

DDDを適用したPJの概要

最初にDDDを適用したPJのコンテキスト共有がありました。

契約した企業に所属する従業員が、自らの勤怠で得た給与を上限としたお金を給料日前に受け取ることができるプロダクトの開発で利用したそうで、2018年〜5年間稼働しているということです。
ユーザーも10万程度おり、トラフィックも分間で数十リクエストが求められるようなシステムになっているということでした。

DDDを採用した理由

2011年当時に豆蔵さんがEvansを招いたイベントでShigetaさん*1がDDDと出逢っていたこともあり、実践ドメイン駆動設計を読みながら導入することを考えだしたそうです。

また、プロジェクトの状況として、

  • 技術選定などを一人でやることになった
  • 初期実装から一人であったり
  • 特定顧客向けの機能追加が多かった

という特徴があったのも、これまで実践してこなかったDDDを実践する後押しになったということでした。

実際に導入してみてどうだったか?

共通理解を作るために、アクティビティ図やクラス図などを書いたという話がありました。(その分システムを説明するドキュメントはそこまで充実させなかった)

また、アーキテクチャとしてはオニオンアーキテクチャを採用したという話もありました。

DDDを導入したお陰で、

  • 仕様変更がスムーズにできた
  • イレギュラー運用の影響範囲を限定できた(コアドメインを上手に適用できた)
  • ビジネスサイドのメンバーと用語を統一することができた

のは大きなメリットだと感じていたそうです。

会全体を通した感想

採用したアーキテクチャの説明などはあったものの、そこまでDDDに関する話は少なかった印象がありました。

初めての実践にもかかわらず実装にかかった工数を減らすことができたりと定量的/定性的な観点両面で一定の成果を出せていたのはすごいなあと思いました。

*1:プロジェクトの推進者