Spring Day 2016に参加してきた

JJUG(日本Javaユーザグループ)のイベントは何度か参加したことがあったが、今回初めてJSUG(日本Springユーザ会)のイベントに参加した。
以下、自分用のメモとして参加したセッションの感想をまとめる。

Spring Framework 5.0 (ROOM1-2)

speakerdeck.com

来年3月にリリース予定のSpring Framework 5.0のお話。
今日の主なテーマは下記の4つ。
・パフォーマンス改善
・JDK9とJigsaw
・HTTP/2とServlet 4.0
・リアクティブアーキテクチャ

その中で一番時間を割いて説明していたのはリアクティブについて。
リアクティブとかノンブロッキングとかの話についていけてないので、このあたりを勉強しないといけない。

災害対策(DR)対応の超ミッション・クリティカル Cloud Foundry は Azure !! (ROOM1-3)

docs.com

Azureは全世界に30のリージョンがあるから、超ミッション・クリティカルなシステムでも運用できますよというお話。
30のリージョンというのはアマゾン ウェブ サービスとGoogle Cloud Platformを合わせた数よりも多いとか。
AWSはいま14リージョン、Google Cloud Platformはいま6リージョン?自分の調べたソースが正しいのか分からないが、確かに合わせた数よりも多い。
日本だけでも東日本と西日本の2箇所があるので、災害対策はバッチリでしょということ。

事例紹介としてFordPass ( https://www.fordpass.com/ ) が紹介されていた。
FordPass、いいな。
駐車場をアプリから予約出来たり、車生活での不安を解消するサービスになると思う。

モノリシックなシステムからマイクロサービスベースのシステムに移行することを薦めていた。
システム開発は建築からいろいろとノウハウを吸収したが、建築は30年の耐用年数で考えて設計するのにシステムはそれよりはるかに短い期間で作り直すのだから、そもそもの思想が違うのだからシステム構築に合った考え方を導入しましょう。その解がマイクロサービスだし、基盤としてCloud Foundry + Azureの組み合わせが良いよという話。

Spring Security で作る Web API アクセス制御の最適解 (ROOM3-5)

www.slideshare.net

個人的にも最近「Web APIのアクセス制御って何が正解なんだろ?」と思うところがあった矢先のこのセッションだった。
「最適解」というタイトルだが結論は「case by case」とのこと。

プライベートネットワーク内であればSSLいらない、外とつながるならSSL必須。
SSL使うならBasic認証もありだけど、SSLも万全ではないしリクエスト毎に静的・無期限のクレデンシャル(ユーザーの認証に用いられる情報)を流すのには抵抗がある。

リクエスト毎に異なるクレデンシャルを流す方法としてHMACを用いたAPIキー署名がある。

OAuth 2.0が例に挙がったが、そもそもOAuthは認証の仕組みでも認可の仕組みでもない。
Aが持っている認可をBに部分委譲するための仕組みがOAuth。
この委譲の仕組みを使ってアクセス制御をする。
詳しくはスライドの神様を参照。

Web APIの認証とは関係ないが登壇者的に面白いと思う技術がOpenID Connect。
詳細はスライドの38枚目を参照。
(OpenID Connectがしてくれること)

Spring5に備えるリアクティブプログラミング入門 (ROOM3-6)

www.slideshare.net

Spring Framework 5.0のお話のときも思ったが、まだまだこのあたりの話についていけてないので勉強しないといけない。

Microservices Architectureを超大規模プロジェクトでやってみた。 (ROOM2-7)

speakerdeck.com

実践的なお話を聞いた。
ビルド時間14時間、.warを動かすのに32Gbyteのメモリが必要なほどの巨大なモノリシックシステムを数年かけて今もマイクロサービス化しているという話。
聞くも涙、語るも涙。

どの単位で切り出すかを手探りでやって、まずは「業務機能での何となくの塊」に分けてマイクロサービス化する。
巨大なシステムだからコストかかる → コストを下げるためにスリム化する → 32Gbyteメモリが1-4Gbyteまでスリム化。

Grailsドメイン駆動設計を実践する時の勘所 (ROOM2-8)

www.slideshare.net

ドメイン駆動設計に惹かれて参加。

GrailsフルスタックWebアプリケーションフレームワークで、「動くものがすぐに作れる」「記述が簡潔」「GORMが強力」「プラグイン機構」という特徴を持っている。
ドメイン駆動設計は「ドメインそのものとドメインのロジックに焦点を置いてシステム設計をする」手法。
自分もエリックさんの本を持っているが、難解で重くて読むのつらい。登壇者は「500ページを超える鈍器」と表現。確かに。

GrailsとDDDの相性は非常に良いらしい。

が、Grailsの知識はなく、DDDの知識も中途半端なので、両方を勉強しなおしてからスライドを再度見させていただこうと思う。

Data Microservices with Spring Cloud Stream, Task, and Data Flow (ROOM2-9)

www.slideshare.net

マイクロサービスをLinux/UNIXのパイプのようにつないで一連の処理を実現しようという話。
パイプ好きにはたまらない仕組み。

Spring Cloud Streamが長命のタスク向き、Spring Cloud Taskが短命のタスク向き。
クラウド上で動くので、スケールアップ・スケールアウトは容易だし、データのルーティングも出来るので細かな制御が可能。

Spring Cloud StreamとSpring Cloud Taskのデモをやってくれた。
PCF Devで試してみよう。

再来週は

次はJJUG CCC 2016 Fallに参加予定。
JJUG CCC 2016 Fall