CloudBees傘下となった Launchable は、スタートアップとして5年間、高速な開発サイクルを優先し、モノリシックなアーキテクチャで成長してきました。しかし、機械学習部分が他のコンポーネントと密結合していたせいで、Javaセキュリティ脆弱性への対応や最新機能の取り込みに必要なライブラリのアップデートが極めて困難になってしまいました。 特に、JavaEEからJakarta EEへのパッケージ変更に伴う広範囲なコード修正、SparkとScalaのバージョン制約によるJavaバージョンアップの遅延、そしてEMR環境特有の依存関係が、開発速度の大きな足かせとなっていました。
このセッションでは、そのようなモノリスの現実としっかり向き合い、インターネットフェイシングなサービスと、計算資源を多用する機械学習の推論プロセスを無停止で完全に分離した道のりをお話しします。 この分離によって、外部に公開されたサービスはSparkやEMRの依存性から解放され、より迅速なライブラリのアップデートが可能に。 さらに、推論プロセスの独立により、リソース配分も最適化でき、将来的にPythonなど他の言語での実装にも道が拓けました。
なぜここまでライブラリ更新が大変だったのか、その技術的な背景から、直面した具体的な課題、そしてそれらを乗り越えるためにどのようなアーキテクチャを選び、どのようなステップで移行したのか、得られた教訓までをガッツリ解説します。この話は、特にこれからマイクロサービス化やシステムの分割を考えている、成長期のスタートアップエンジニアにとって、きっと役立つヒントがたくさん見つかるはずです。