モノリシックRailsアプリケーションをモジュラモノリスへ移行しているnoteの事例

私たちのサービス(note)のバックエンドは、Model 数が 800 以上と比較的大規模なモノリシックRailsアプリケーションで構成されています。
また関わるエンジニアの人数も40名程度のため、開発効率の低下、バグの増加といった課題が顕在化してきました。

このような課題に対しマイクロサービスアーキテクチャを検討しましたが、アーキテクチャ検討の前にまずはドメイン分割を進める必要があると考えました。
そこで Packwerk という Shopify が開発した gem を導入することにしました。

Packwerk は、モジュラーモノリス化を支援してくれる gem です。
設定したディレクトリをモジュールとみなし、モジュール間の依存関係を静的解析で検出してくれます。
モジュール化は基本的にはファイル移動だけなので、ドメイン分割を段階的に進めることができ、やり直しも容易にできます。

これらの特徴は、「機能開発と並行して進めたい」「試行錯誤しながら段階的に進めたい」という私たちの要望を満たしてくれるものでした。

今回の発表では、Packwerk の基本機能や導入方法のご紹介、実際に導入して見え始めた効果や、今後の課題などをお話しできればと思っています。

アバター画像:Hiroya Shimamoto
Hiroya Shimamoto

note 株式会社サーバーサイドエンジニア。 決済周りをメインでやりながら、モノリシックRailsアプリの分割にも取り組んでいます。