すべてが gem になる - サービス密結合からの段階的脱却 accepted

Abstract

本セッションでは,サービスの発展・変遷とともに生じ・避けえない「サービス同士の密結合」の話をします.1つのコードベース上に絡み合い境界が曖昧になった2つのアプリケーションを,如何に2つのコードベースに,明確に分離された状態に持っていくか,現実の Ruby on Rails アプリケーションの事例をもとに紹介します.

話すこと

既存のサービスとデータ・モデルの一部を共有する新たなサービスを作るとなったとき,あなたならどうしますか?一番簡単な手段としては,同一のコードベース上に新たなサービスも構築するというものが挙げられます.最速で開発を進め最速でユーザに届けるために,もっとも現実的で確実な手法です.

一方で,その両サービスが成長したとき,そのコードベースの共有がさまざまな問題を生むことになります.たとえば片方のサービスで問題が起きたとき,もう片方のサービスはどうなるでしょうか.影響範囲や原因の切り分けも複雑になります.

最近,まさにそのようにして1つの Ruby on Rails のアプリケーション上に構築された2サービスについて,アプリケーションの分割に取り組みました,新たに Ruby on Rails アプリケーションを1つ作り,新機能は新しいアプリケーションに実装するようにしました.しかし,データ・モデルは元のアプリケーションが保持しているので,できることには限りがあります.データベースを共有したとしても,モデルが共有できてないと読み書きも困難です.

本セッションでは,このような問題に対処し,現実的に・開発速度を落とさずサービスの分割を成し遂げるための手法について提案します.
具体的には,「元のアプリケーションの一部を rubygem として切り出す」という手法です.しかし,普通に別リポジトリの共有ライブラリとすると,どうしても開発が複雑になってしまいます.それを避けるためにどのようなアプローチで移行を進めたかについて話したいと思います.

Video
Slides
Session Information
Confirmed confirmed
Starts On 9/8/18, 11:10 AM
Room Multi-Purpose Room 1
Session Duration Regular Session (60min)
Spoken Language Japanese
Interpretation Unavailable
Slide Language Japanese