2016/05/21(土) 17:00〜17:50 JJUG CCC 2016 Spring GH-6
2011年にリリースした弊社のサービスは、Seasar2ファミリーで構築しました。利用者数は1000万人以上となり、今もサービスとして成長しています。2016/9/26にSeasar2がサポートを終了するというアナウンスを受け、私たちもアクションを起こしました。
サービスには絶え間なく機能改善、機能追加の要件があり、その対応をしながらSeasar2から移行するという前提条件を考慮すると、選択肢は限られます。Scalaなど言語自体を変えることはなく、Javaのままとしました。新規アプリケーションを作成すると監視対象とするアプリケーションの数が増え、様々なコストが増えると考えたため新規とはしませんでした。こういったさまざまな条件のもと、まずはSeasar2で動作している機能から、まずリスクが小さい機能を新フレームワークで置き換え(ユニットテストも書き換え受け入れテストもし直し)てリリースしました。そして機能追加と並行して置き換えを進めています。
技術的には、移行対象としてはSpringを選択しました。Seasar2にある機能がそのままある場合もあれば、コードを書いて対応したものもあります。他に、S2DaoでのRDBMSへのアクセスを含んだビジネスロジックも、移行コストを最低限にするために資産としてSpringのコードからも利用できるようにしました。ユニットテストについてもS2TestCase とdjUnitから、単純作業として書き換えやすかったjMockitに移行しました。
セッションでは、こういった判断に至った経緯やその実現手法、メンバーへレクチャーなど移行のスタートから現時点のリリースまでにあるさまざまなことを話します。すばらしい判断でもなければすごい技術力で解決したわけでもない、普通なプロジェクトの現場で実際にやったことならではのリアルさを感じていただけると思います。