各セッションの資料については良いまとめがありました。
JSUG Spring Day 2016資料まとめ
公式サイト上でも資料が公開されてきています。
http://springday2016.springframework.jp/session.html
以下は私が参加したセッションのメモと感想などを書き残しておこうかと。
Spring Framework 5.0
まずは基調講演としてステファン・ニコル氏からSpring5.0の方向性など。
新しい技術スタックの導入をしてパフォーマンスの改善がされたことと、ブロッキングコードを使わないリアクティブプログラミングのサポートが大きなトピック。
Spring 4.x
Support life until 2019
5.0のマイルストーン
- 5.0 M3 : Nov 2016
- 5.0 GA : March 2017
Performance improvement
- JDK9
- HTTP/2
- Reactive Programming
Application Re-Architecture Technology
Struts1.x系を使ったSSHなシステムからStrutsを外してSpring MVCに移行する際に起きてしまった問題などが生なましい感じで良かった。
特に業務系のシステムでは同じような話がとても多そうな気がした。
移行するのにまずは目的をはっきりさせて計画を作ることが大事ですねという話。
なぜ移行?
Struts1.x EOL
-> その後2014年に脆弱性発覚
使い続けると、
セキュリティ対応が困難
機会損失を生んでしまう
レガシー化、ガラパゴス化
-> そこで移行先はSpring?
Spring MVC, Spring Boot で70%ほどのシェアがありそう。デファクトと言えそう。
-> 決定
とはいえすぐに全て追従はできない。似てはいるけど違うもの。
初期に採用したフレームワークは長期間利用される傾向がある
Spring Security で作る Web API アクセス制御の最適解
HTTPSを使う(もう2016年っすよ)
APIの認証に何を使うべき? -> ケースバイケースw
認証の方法
- Inherence factor
- Passession factor
- Knowledge factor
Basic認証 over HTTPS
- 決定的な否定理由は見つからない。適切に運用すれば安全に影響は及ぼさない。
-> けれども、リスク要素
- リクエストごとに静的・無期限なクレデンシャルが流れる
- SSL/TSLも万能ではない
Digest認証
チャレンジ&レスポンスなのでリクエストが2往復する : ダメ
APIキー署名
AWSが採用。
V1-V4がある。V4を推奨。
オレオレで使用を作るのは脆弱性を出しやすいから既存のものを流用、または参考にするのが吉。
OpenID Connect
APIの認証には使わない(スコープ外)
OAuth2
オーバースペックの可能性
Spring5に備えるリアクティブプログラミング入門
http://www.slideshare.net/TakuyaIwatsuka/spring-5
Spring-web-reactive の話
Observer pattern でできる
Reactive Stream
ノンブロッキングなバックプレッシャーを備えた
非同期ストリーム処理の標準を提供するための提案
バックプレッシャー:受信側による送信制御を行う(Pull型)
基本Pullベース。Push型にも対応。
Servlet3.1 Non-blocking I/O
非同期処理サポート
ReadListener / WriteListener
Thyme leaf
Reactを意識した改善
Data driven mode : Publiserからデータが流れてくる
楽天トラベルとSpring(Spring Day 2016)
http://www.slideshare.net/rakutentech/springspring-day-2016
こちらも長くシステムを運用しているとアルアルな感じのお話。
APIのドキュメントをWikiに人力で更新し続けるのは厳しい。サンプルが少ない。
-> Spring REST Docs
アプリの冗長性とスケールアップのためにセッション管理にSpring Sessionを使った話
ログの追跡にSpring Cloud Sleuthが良さげだよ
プロパティファイルの管理にSpring Cloud Configを使ってみたよ
アメブロの大規模システム刷新とそれを支える Spring
2004年から12年ほど続いているサービスというだけあって、手を入れるのが困難になっていたのを改善した話。
これ、やりたくてもなかなかできないことだと思うのですがやり遂げたのがすごい!
2015年の状況
- 古いバージョン、複数のプロダクトに似たような処理
- フレームワークの混在
- 失われた思想
wikiへの手動ドキュメントから、Springfox + swagger
複雑なドキュメントはswagger専用のアノテーションが必要
ローカル開発環境がない状況だった
個人用の開発サーバにGit push -> Jenkins -> deploy
手元で確認したい
-> Spring Bootを利用することで念願のローカル環境を手に入れた
以上メモ書き。