JJUGナイトセミナー(11/27)レポート その2
前回の続き
おっぴろげDevOps
どう作って、どう運用しているまでのJava EE導入事例。
RESTAPI経由でのジョブワーカーのアプリケーション。
使っている要素はJAX-RS、CDI、JPA。
Lombokを使っているので、コードの記述量はほんとうに少ない。
JPAはabstractのベースエンティティと実装クラスの組み合わせ。
JAX-RSの応答で使用するため、表示させたくない項目はJAXBの@XMLTransientを使用している。
入力項目はBeanValidationでチェック
Cliteriaを使ってクエリを作っているが、Java8のLambdaでかけるように書いてある。
将来的なLambda対応を今から考えておくのは重要。
テストでは、コンテナを使ったテストは重いため、できるだけユニットテストに寄せる。
JPAのユニットテストは、テスト用のpersistenceXMLを作るのではなく、Mapで必要な属性を上書きする方式。
運用は2つのインスタンスから構成されるクラスタ。
24365を実現している。
モジュールのアップデートは
- dasにアップデートモジュールをデプロイ
- リバースプロキシの振り分けを、片方のインスタンスだけに変更
- JMXから、インスタンス内のサービスが完了していることを確認
- インスタンスを停止して、新しいモジュールを関連付け
- インスタンスを起動して振り分け先を変更する
「DBのカラム変更を伴うアップデートは?」との質問に対しては「ダブルライトで対応している」とのことでした。