こんにちは。プロダクト開発部の荒川です。 早速ですが、弊社主催のカンファレンスであるSansan Builders BoxのWebサイトが公開されました。
Sansan Builders Boxは弊社に所属するクリエイター(プロダクトマネージャー、デザイナー、エンジニアなど)がSansanの現場の事例を紹介するカンファレンスです。私も去年は一聴講者として参加しました。ありがたくも今年はスピーカーに選ばれることができました。そこで今回は当日私が発表する『Sansanアーキテクチャ史』について、概要を紹介させていただきます。
セッション概要
Sansanは12年の歴史を持つWebアプリケーションです。そんなプロダクトの歴史が一つのリポジトリに詰まっています。 長い期間保守されてきたソフトウェアにはどんな特徴があるのか、急成長するプロダクトに適したプロジェクト構造とは何なのか、そんな疑問に対してアーキテクチャを題材に深堀りするセッションです。
今回紹介する法人向け名刺管理アプリケーションSansanではC#を用いた開発を行っていますが、特定の技術領域に限ったセッションではないので適宜フォローしながら説明いたします。
Sansanのアーキテクチャの変遷
Sansanでは大きく分けて、3つの世代のアーキテクチャが存在しています。現在は第3世代(v3)で、新規で開発されるコードはv3をベースに開発が進められています。 本エントリでは、当日話すことになる各世代のアーキテクチャを簡単にご紹介します。
v1
スピード感を重視し、Sansan創世記を支えたv1。シンプルな3層アーキテクチャであり、WebFormsを利用した画面駆動な設計。基本的に各コンポーネントが1対1で対応しているため、密結合な構成になっており、実装の共通化が困難。
v2
ネックだった画面駆動からの脱却を図るべくWebFormsからASP.NET MVCが導入されたv2。アーキテクチャや用語が流行だったDDDに近い形へと進化した。 ServiceやDomain Modelによってビジネスロジックが分割され、実装の共通化を図るような構成に。
v3
そして現在のSansanを支えるv3。業務のユースケースをApplication、ビジネスロジックをDomain、DBに限らずテクノロジ依存のモジュールをInfrastructureに切り出した設計。DDDの思想を強く受けながらも、ヘキサゴナルアーキテクチャなどのメリットも享受できるように。
おわりに
非常にざっくりと紹介しましたが、当日はコンポーネントの詳細、現場レベルで挙がった課題感、アーキテクチャの移り変わりの舞台裏をしっかりとご紹介する予定です。 セッションの後には懇親会もありますので、Sansanのアーキテクチャが気になる!という方は、ぜひSansan Builders Boxにお越しください!
Sansanのアーキテクチャをめぐる紆余曲折のストーリーをお楽しみに。