2011年にリリースした弊社フリューのアプリケーションは、利用者が年々増加し、1000万人を超えました。それに伴い、機能を追加、改修しているため肥大化したモノリシックアプリケーションとなりました。また開発チームも複数あり、それぞれが機能を開発し、毎日のようにデプロイ、リリースしています。
こうした現状から、ドメインごとにアプリケーションを分割したいという欲求が生まれ、マイクロサービスアーキテクチャに変えていくことにしました。もちろん今もサービスを運用、新機能開発していく中でゆるやかに実施していくため、完成したわけではありません。このセッションでは、現実に運用しているアプリケーションに対して、マイクロサービス構築に何を使い、どのように一歩踏み出し、その結果チームは何を実現し何を得られたか、ということを話します。
JJUG CCCでは弊社フリューのアーキテクチャの変遷について、2016 Spring、2016 Fallとセッションをしてきました。Springでは"Seasar2で作った俺たちのサービスの今"、Fallでは"10年運用している画像サービスでのJavaの活用と今後の展望"と、Seasar2からSpring Framework/MVCに移行した話をしました。今回は、このアプリケーションから特定の機能を取り出してマイクロサービスとしてSpring Boot、Spring Cloud Netflix(ribbon/Eureka/Hystrix)で構築し、既存の手動テストをパスさせるためSpring Cloud Contract Stub Runnerを活用した点を中心に話します。また、私以外Spring自体をほぼ知らないチームで、どのように習得を進めたかという点にも触れます。
すでにこれらの技術をご存知の方にはこのセッションは適切でない可能性があります。また、ベストプラクティスでも、Spring Cloudのすべてのプロダクトを使っているわけでもありません。それでも、1つの現場の事例としてみなさんのご参考になれば幸いです。