サービスの分割と Spring (Spring Boot) の導入 (2015/05 ~)
- サービスを分割することで、個々に集中が出来る
- Spring Boot を導入することで以下が実現できると考えた
- 高い開発効率
- シンプルなインフラ・ミドルウェア構成
- 高度な周辺エコシステムの恩恵
開発者が本質的な開発作業に集中でき、結果としてサービスの価値をより高めることが
できるという判断で導入
サービスの分割と Spring の導入
49
Slide 50
Slide 50 text
高い開発効率
- Spring Boot による Java-based Configuration で XML 地獄からの脱却
- Spring MVC で RESTFul API endpoint を手軽に作成可能
- SpringFox/Swagger による API 仕様の周知、可視化
サービスの分割と Spring の導入
50
Slide 51
Slide 51 text
シンプルなインフラ・ミドルウェア構成
- executable fat jar によるサービス起動
- war とは異なり、別途サーブレットコンテナを用意する必要が無い
- リバースプロキシと Java プロセスのみのシンプルな構成が実現可能
- コンテナ化とも相性が良い
サービスの分割と Spring の導入
51
Slide 52
Slide 52 text
高度な周辺エコシステム
- 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
Slide 53
Slide 53 text
サービスの分割と Spring の導入
Frontend
Indexer
Analyzer
Search
Crawler
53
Slide 54
Slide 54 text
サービスの分割と Spring の導入
Analyzer
Crawler
Search
Frontend
Indexer
Importer
54
Slide 55
Slide 55 text
- サービスの分割と Spring の導入
- サービス間の連携
- バッチ処理
- 監視
- デプロイ / プロビジョニング
ニュース配信基盤における Spring の活用
55
Slide 56
Slide 56 text
サービス間の連携
- オンラインのサービスは Spring MVC による RESTful API を利用して通信
- バックエンドのサービスは基本的に Kinesis を介して連携するが、管理用に Web
API が存在
- spring-boot-starter-web を依存に追加することで Annotation ベースで簡単に
API を追加可能
56