Seeing is believing

いちエンジニアの日々の興味のあるところ、イベント参加記録、学びの共有を取止めなく※このblogは個人の見解であり所属する組織の見解ではありません

JJUG CCC 2017 Fallに参加してきました

JJUG CCC 2017 Fallに参加してきました。

家族イベントがあったので、午後からの参加です。

 

1コマ目

www.slideshare.net

安定のカサレアル多田さんのセッション。教えるプロということもあり

説明がわかりやすい!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伊藤さんのJDKリリースモデル説明

資料はアップしないとのこと。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は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とか、転記マクロとか公開してくれませんか?とお願いしたが、現状予定なしとのこと。世の中にもいくつかあるようだとのコメントいただいたので、時間あるとき探したいと思いましたー。

懇親会は家族とのご飯予定があったので、帰りました。寒い日でしたが

イベントはアツかったですね!

 

運営とスピーカーにいつも感謝。

おつかれさまでしたー。