3. 自己紹介 – Tommy Ludwig
Tommy Ludwig (@TommyLudwig)
トラベルサービス開発・運用部
Booking Platformチーム
仕事
Walt Disney Parks & Resorts
・ 予約システムの開発
Rakuten (現在)
・ 楽天トラベルの予約システムの開発
Open source
• Spring Boot
• Spring Session
撮影者:藤井 貴浩 (Spring One 2015)
• Zipkin
4. Past Slides
• Spring REST Docsを利用して鮮度の高いDocumentを運用しよう
• Cloud Native:PaaS編 / Spring Cloud at Netflix
• Spring CloudとZipkinを利用した分散トレーシング
• JSUG SpringOne Platform 2016 報告会 - New in Spring Data
• SpringOnePlatform 2016報告会 Case study
55. Why Spring RESTDocs for us now
テスト
成功
Create document
start
end
false
true
・Documentの正確性が保証されることが大切だった
(テストコードからDocumentを作る・テストが通らないとDocumentは生成されない)
・継続的な更新が仕組みとして提供される
・Documentをアプリに内包出来るので、各環境にデプロ
イされているアプリのDocumentが提供される
・Documentを作成するのに、テストコード側の修正し
かいらない
・エンジニアはテストコードかける
(テストコードを書く感覚で、APIを使うのに必要なサンプルケースはまず間違いなく揃うとかも)
・Hypermediaに対応してる
56. How we use Spring RESTDocs
• 利用促進/簡単に使ってもらえるためにabstruct class
を提供(jarで + SpringInitializr経由で配布(後述))
• DefaultでアプリにDocumentがincludeされるように
する
• EndPointを統一
• Method名でsnippetが作られるように
• alwaysDo入れておいて、コード書く側は何も考えず(い
や、考えるんですが)テスト書いたらsnippetsが出来る
ような状態
57. How we use Spring RESTDocs
@Before
public void setUp() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
.apply(documentationConfiguration(this.restDocumentation))
.alwaysDo(document("{method-name}/{step}/")).build();}
http://docs.spring.io/spring-restdocs/docs/current/reference/html5/
58. How we use Spring RESTDocs
this.mockMvc.perform(delete("/entry?parameter=hoge"))
.andExpect(status().isOK());
http://docs.spring.io/spring-restdocs/docs/current/reference/html5/
→ Snippetsが作成される
77. Spring Session
• Spring Boot 1.4からAuto-configがある
– See Spring Boot documentation
– 例えば
• Spring SessionとHazelcastをクラスパスに入れて
• spring.session.store-type=hazelcast
• Spring Bootでない場合は
– @EnableHazelcastHttpSession