JJUG CCC 2017 Fallに参加してきました
JJUG CCC 2017 Fallに参加してきました。
家族イベントがあったので、午後からの参加です。
1コマ目
安定のカサレアル多田さんのセッション。教えるプロということもあり
説明がわかりやすい!Springは使う一方で内部構造全く理解していなかったので
内部ソースを追うきっかけをいただいたセッションでした!
以下がセッション内メモ。
- SpringMVCはDispatchServletで全リクエストを受付、この中にコンテナを持っている
- ViewResolverインターフェースで、テンプレートエンジンの切り替えなどw実装できる。
- SpringMVCは拡張、差し替えしやすいように徹底的にインターフェース化されている。バリデータ、コンバータ、URLとコントーラメソッドの紐付け
- 過去はたくさんの@Beanで定義が必要であったが、@EnableMvcだけでよくなった。 中身は@Import
- @Controllerの中身は@Component.
- SpringBootは何を自動化するのか? コンテナはフレームワークを動かすBeanと、業務で使いたいBeanに別れる 業務側は、コントローラとビジネスロジックとリポジトリ、ぐらい。
- >SpringBootが行うことはフレームワークを動かすBeanを定義済み ⇨大量のJavaConfigの塊
- セットアップ最小限ですぐ開発できる。アプリを構成するBeanにはノータッチ
- application.propertiesで記述した設定はAutoConfigurationクラスに渡されて使われる
- spring.factoriesを読み込み、記載されている次に読み込むAutoConfigurationの読み込みを行う
- spring-boot-autoconfigure.jarには、ほぼ全てのBeanが定義されている。 Springイニシャライザーで複数コンポーネントを選定するが、上記設定ファイルにはほぼ全て最初から書かれている ⇨選定が行われる。条件は@ConditionalOnXX ⇨クラスパス上にthymeleafのライブラリがあれば、Beanを有効化するなどの 実装がかかれている
- EnableXXをつけない、自前でBean定義しないのが安全 安全なカスタマイズ方法:補助的なBeanを定義して、コンテナから拾ってもらう Bootで準備されている、XxxCoustmizerを使う
2コマ目
qiita.com事前に調べてから行けばよかったのだが、過去に別の勉強会で話して、
QiitaにUp済みの内容でした。既視感がすごかったです。
ただし、デモや説明として聞けたことが大きかったです。
- SecurityはServlet のFilter機能を利用してセキュリティ機能を提供するフレームワーク
- セッションIDの盗用はクエリパラメータにセットする、など。
- SpringSecurityはURLリライティングを検知して、消す処理がデフォルトで備わっている
- ログインの前後でセッションIDを変化させないとダメ
- SpringSecrityはFormログインしたときにはデフォルトでセッションIDをかえてくれる
- CSRFリクエストが正規のページからきたことを確実に判断することが大事。
トークン発行など。 - SpringSecurityではデフォルト有効
- クリックジャッキング、みえないiframeをボタンの上に乗っけて正規のページの処理を動かされている
3コマ目
資料はアップしないとのこと。Oracle正式見解として、Web上にページ公開を
社内で計画しているから、、とのことです。
- JavaーCadence:リリースモデルを変える話
- JDK9は過去最大の機能追加数:91?
- JavaSEのリリースまでには2つの関門が。
OpenJDKー>JCPの投票 - 新しいリリースモデル11/17現在
6ヶ月で定期リリース、削除提案、削除実行のプロセスも含まれる - OpenJDKもバイナリでもリリースする。v9.0.1が最新
- 1年後のリリースまでにOpenJDKを機能強化させ、OracleJDKと同機能まで持っている.フライトコントローラ、ミッションコントローラ
- Z garbage Collector:オラクルのインターナルプロジェクト、マルチテラバイトGC、10msec以下
Application Class Data Sharing,
Ahead of Time Comlilation:出せるのかが不安になってきている。引っ込める可能性もある - コミュ二ティとの連携は継続、OpenJDK,JCP
- OracleJDKはLTS版のみのリリースとなる。11LTSの次は17LTSとなる
- 半年毎のリリースはOpenJDKのみ。
- リリース情報の提供はOpenJDKにのっているものが最新。Featuresの欄が新機能情報。
http://openjdk.java.net/projects/jdk/10/ - リリースドキュメントも重要。Deprecatedの運用ルールはそのまま
⇨最短1年(Deprecated:削除タグがついて2バージョン後)で機能が削除される可能性あり。 - CORBA関連の機能がなくなることがJavaOne内で言及があった
- Oracle公式アップデートの終了
- JDK8:2018年9月,9,10は半年。
- 8の移行先は11移行推奨。9,10は機能評価用として利用すべきもの。
- Java8のDeployment Techonologyは通常のJava8より短い。Applet,JWTなど。
- OpenJDKでもLTSという話がでてきた。(DevoxxでMarkRainfoldが言及)
- IEはJavaSE9の64bit版を認識しない。
- *JavaSE9以降は自動更新は行われない。
- *JavaSE9の32bit版のバイナリ提供の予定は現状なし。
4コマ目
pring BootとKafkaでCQRSなアプリを動かしてみる
#ccc_e6
楽天椎葉さん
ツイッター上でやり取りさせていただきました!レスポンスあって嬉しい!
物腰柔らかくて良い人でしたー。
ありがとうございましたー。CQRSはまだ使ってませんが、Spring Boot自体は使ってますよー。
— しーば (@bufferings) 2017年11月19日
- CQRSはGreg Youngが名つけたもの。
- コマンドとクエリを別のオブジェクトに分ける。
(プレゼンの図はCacooで書くとかきやすい) - 複雑なものをキープしたい、複雑なものをどうやって改善するか。。
- DDD:ソフトウェアの複雑さの核心にせまる
- DDDの印象:依存関係を切り離し、凝縮させて複雑さを回避していく
- DBからの解放はステキ。だけどUIからの解放は難しかった。集約とか、集約からの導出した値で検索やソートをしたり。。
-> JOINを使い、妥協した - ドメインモデルは更新側が重要。クエリ側はDAOにしてしまう、といったアイデアもでてくる
- ステートソーシング:現状の状態を連携、管理する。ビール残り3本、残り1本、など
- イベントソーシング:起こった出来事を管理、連携する。ビール3本買って来た。1本飲んだ。など:過去の履歴が追いやすい
- CQRSとするなら、
更新側ではイベントソースに投入するのみ。そこからDBに非同期で反映。 - CQRSはEvent SourcingへのStepping-Stone(踏み台)
- CQRS/Event sourcingを全体に適応しない。コストが高く、難しい。必要なところに集中してやるのが良い
- Kafka 分散ストリーミングプラットフォーム
- MQの場合はキューにはいったものが読みこまれると消えてしまうが
Kafkaは読み取っても消えないし、過去の分も読み込める
最後のコマ
Serverspec NTTDataのサーバスペック活用のお話
- アプリの自動化は進んでいたが、インフラ自動化はなかなか浸透してこなかった。
- 商用ミドルウェアの単体テスト自動化 #jjug_ccc #ccc_a8
- これまでは
- パラメータシート>構築手順書・テスト項目書>構築対象
- を全て手動で転記や対応。
- 案件での実績としては110ノードの単体テストを作業ミスなしで3週間の遅れをとりもどす!
- パラメータシートのフォーマットがミドルウェア、チームごとにバラバラ
- WebLogicだけでも2800以上あった。自動化スクリプトが肥大化&未管理
- ・パラメータシートのフォーマットを統一化
- ・そのシートを元に自動生成の定義(自動)と、テストスクリプト(手動?)を生成
- WLSTが内包されていて、便利なので活用する方針
- テストスクリプトをテンプレート化し、変数群をyamlに転記するよう自動化。
- 状態確認ができるものはそれをやる。できない場合はデプロイ後の設定ファイルを確認する。
- ⇨テストパターンによりテストロジックを共通化する
- フォーマットやツールについては現状公開予定はないが、他社さんとかで公開している事例があるので
参考にした方が良い。 - 1Nodeで複数ミドルウェアをいれてるとインストールする中で勝手に変更するケースもあり、
考慮が必要。(順序性とか?) - QAタイムでパラメータシートExcelとか、転記マクロとか公開してくれませんか?とお願いしたが、現状予定なしとのこと。世の中にもいくつかあるようだとのコメントいただいたので、時間あるとき探したいと思いましたー。
懇親会は家族とのご飯予定があったので、帰りました。寒い日でしたが
イベントはアツかったですね!
運営とスピーカーにいつも感謝。
おつかれさまでしたー。