49. サービスの分割と Spring (Spring Boot) の導入 (2015/05 ~)
- サービスを分割することで、個々に集中が出来る
- Spring Boot を導入することで以下が実現できると考えた
- 高い開発効率
- シンプルなインフラ・ミドルウェア構成
- 高度な周辺エコシステムの恩恵
開発者が本質的な開発作業に集中でき、結果としてサービスの価値をより高めることが
できるという判断で導入
サービスの分割と Spring の導入
49
50. 高い開発効率
- Spring Boot による Java-based Configuration で XML 地獄からの脱却
- Spring MVC で RESTFul API endpoint を手軽に作成可能
- SpringFox/Swagger による API 仕様の周知、可視化
サービスの分割と Spring の導入
50
51. シンプルなインフラ・ミドルウェア構成
- executable fat jar によるサービス起動
- war とは異なり、別途サーブレットコンテナを用意する必要が無い
- リバースプロキシと Java プロセスのみのシンプルな構成が実現可能
- コンテナ化とも相性が良い
サービスの分割と Spring の導入
51
52. 高度な周辺エコシステム
- Spring Cloud Config
- Spring Cloud Consul
- Reactor (Spring 5)
サービスの分割と Spring の導入
ref: SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝
http://www.slideshare.net/smartnews/springone-platform-2016-a-lite-rx-api-for-t
he-jvm-smartnews-inc
52
55. - サービスの分割と Spring の導入
- サービス間の連携
- バッチ処理
- 監視
- デプロイ / プロビジョニング
ニュース配信基盤における Spring の活用
55
56. サービス間の連携
- オンラインのサービスは Spring MVC による RESTful API を利用して通信
- バックエンドのサービスは基本的に Kinesis を介して連携するが、管理用に Web
API が存在
- spring-boot-starter-web を依存に追加することで Annotation ベースで簡単に
API を追加可能
56