JJUG CCC 2017 Springに行ってきた
今更ながら参加してきたので当日のメモなどを 本当に適当なメモ書きレベルなので後で編集したい・・
レガシーアプリケーションの巻き取りとモジュール分割
ブランチ運用
テスト(CI/CD) 単体 → junit(validation etc) 画面単体 結合
@Runwith(Enclosed.class) → レビューアに優しいテストコード
selenide → 自動テストに利用
SpotBugs
tool
- Check style
- PMD → Check styleに近い。コピペ検出機能がある
- FindBugs → バイトコード解析
- Checker framework → Java8のJSR308(Annotation on Java types)を利用
- Google error-prone → コンパイル時に解析。クラスもソースも見ているためソースコードの自動修正機能がある。eclipse非対応。
コーディング規約ならCheckStyle 問題検出は、PMD、SpotBugs、CheckerFw、 error-proneから選ぶ感じ
findbugs
onlyAnalizeで対象クラスを絞る visitorsで利用detectorをけずる(何を優先してチェックするのか) → これは使いやすいと思うとのこと
Spring cloud stream
Batchをスケールアウトしたことで、ポーリングによるRDBへの負荷が高まった → spring cloud streamを使った仕組みにつくりかえ => イベントドリブンに作り変え
SCS(spring cloud stream)
- メッセージドリブンなマイクロサービスが実装しやすい(pub-subモデル)
- spring bootアプリケーション
- consumer groups → レポート作成のスケールアウトが容易になった => これによりノードごとに別IDの処理が行えるようになった(Batchをスケールアウトしたことで、ポーリングによるRDBへの負荷が高まった)
- binder application → アプリ-ミドルウェア間が疎結合になるらしい(共通のdestination設定でOK)
spring batch job管理テーブルに大量INSERTでエラー(Sink側のSpring Batchが大量に起動した時に、Job管理テーブルに大量のinsertが流れてエラーに… )
- maxAttemptの調整 → これだけだと不十分
- DeadLetterQueue → エラーリカバリ用のMQを用意 => SCSのautoBindDlqをtrueに する
→ただ根本対応にはなっていないのでJobRepository側の対応方法を調査中。。
ポーリング型からイベントドリブンに変えたことでスループットが向上
CloudFoundryへ移行してスケールアウトが容易にできるようにする → cflogin, cfpush? => この辺も含めて謎なので調べてみる
c.f) 第2世代への作り変えについて https://www.slideshare.net/techblogyahoo/jjugccc-cccf1-phpjava
c.f) pulsar https://www.infoq.com/jp/news/2016/10/pulsar
Jigsaw
・module-info.java - dependency disclosure scope → JAR内のこのファイルにモジュールの依存を記述する(module-info.javaでjarのメタ情報(依存性と公開範囲)を管理してModule化)
java –list-modules、現状73個のモジュールがリストされる