構築中。

名古屋のITインフラお守り係です。ITイベントへの参加記録などを残していきます。

JJUG CCC 2018 Spring(5/26)

昨秋に続いて行ってきました。 www.java-users.jp f:id:hmatsu47:20180527221828j:plain

以下、気になったポイントと感想などを箇条書きします。

但し、聞いたセッションの数が多いので、すでにスライドが公開されているものについては内容に関する記述は少な目です。

マルチスレッド問題の特定と再現に頑張った話(Koji Linさん)

スライド: マルチスレッド問題の特定と再現に頑張った話

  • 昨秋に続いて朝一に聞くのはLinさんの話
  • Caffeineは自分でも使ってる(Qiitaの記事にも入れてる…意味不明すぎる内容なのでいいね・はてブ0)
  • ヒープダンプ大事
  • VisualVMちゃんと使ってないので使おう
  • 机上トレースとデバッグでの再現、大事
  • 英語でコミュニケーション取れるようにならねば(読めるけどまともに書けない)

Kotlin + Spring Bootでサーバー開発(soranakaさん)

スライド: Kotlin + Spring Bootでサーバー開発

  • 昨秋のエムスリー前原さんのセッションに引き続き、サーバーサイドKotlin & Spring Bootの話を聞く
  • 今の業務に利用できるか…ちょっと微妙なタイミングなのでしばらく個人的に追うだけにする
    • Javaのコードを書くのが遅いから生産性が低い」とは必ずしも言えない状態でもあり…

ざっくりわかった気になるモダンGC入門(tomoya yokotaさん)

スライド: introduction-to-modern-gc // Speaker Deck

  • Shenandoah GC、ZGCとも「世代型メモリ管理をしない」GC
    • ある種のパラダイムシフト?「秘伝のタレ」が腐るヤツかな?
  • ZGCは「Linux 64bit」「仮想メモリ」前提=対象を絞る
    • 課題解決にはこういう「思い切り」が大事だと思う
  • Epsilon GC(何もしないGC)はネタにされてたけどマジメなやつ(だと思う)
    • 別セッションのTweetで「サーバレスに使える」というのが流れてきたけれど、AWS Lambdaに限っていうと、連続的に呼び出しがあると初期化が入らないので途中で死にそう(1日1回程度の呼び出しなら対象コンテナが一旦落ちるので大丈夫だと思う)

LINE LIVE のチャットが 30,000+/min のコメント投稿を捌くようになるまで(萩原 豪さん)

スライド: LINE LIVE のチャットが 30,000+/min のコメント投稿を捌くようになるまで

  • akka Actor Modelの使い方(コードの書き方ではなくて考え方)が中心の話
    • 早朝に移動してきた関係で眠気がピークになってしまい、リアルタイムでは理解できなかったが公開スライドで概要を把握
    • かなり参考になる話だった(自社サイトが「そこまで必要」な状態に成長するかどうかは別として)
  • オマケ?でついてきたRedisクライアント(Lettus)の話が、朝一のLinさんの話につながる

JavaでインメモリSQLエンジンを作ってみた(毛利元彦さん)

スライド(5/29追記): JavaでインメモリSQLエンジンを作ってみた

  • BIツールで集計するときにOLAPエンジンと組み合わせて使うSQLエンジンをインメモリで自作した話
  • OLAPエンジンに組み合わせるSQLエンジン高速化が集計高速化のキモ
    • PostgreSQL比100%の高速化(1億レコード389ms vs 39751ms)
    • 最初「RDBでの集計」の話が出たとき、使うSQLとして挙がったのがSELECT SUM() / GROUP BY / WHEREだけで「あれ?Window関数は?」と疑問に思ったが、OLAPエンジンとの組み合わせで使うBIツールが前提の話だったので納得
  • インメモリSQLエンジンの高速化
    • 列指向
    • 更新系を捨てる(定期バッチで更新)
    • 参照系もBIに必要なものに絞る(sum、count、min、max(avgやめる)、group by、where)→可能な限りOLAPエンジン側で吸収
      • avgは「sum/count」で出せる(総計のavgも同じ式で行ける)
    • sumはBigIntegerを使わずlong(配列)で→桁が足りなくなるが、自前で繰り上がりサポート&桁数制限
    • マルチスレッド化
      • PostgreSQLでもパラレルクエリをサポートしたが(9.6では性能が伸びなかった模様)
    • 絞り込みでString(配列)を使うとカラム増で遅くなるので、intをうまく使う
  • 計測Tipsとして、線形ではなく指数的にリソースを増やしていくのがお勧め(問題があったときに見つけやすい)
    • 10万、100万、1000万、1億…
    • 10万、20万、40万、80万…
    • 10万、20万、50万、100万… など
  • このセッションでも「思い切り(による仕様の絞り込み)が大事」ということを学んだ
    • 「シンプルに」といいつつ「あれもほしい」「これもほしい」となりがちな雰囲気をなんとかせねば

JavaエンジニアのためのDocker入門 〜 仮想開発・テスト環境構築 〜(Abe Asami (きの子)さん)

スライド(5/29追記): JavaエンジニアのためのDocker入門 // Speaker Deck

  • 本当に「基礎からのDocker」の話
    • docker build / docker run / docker-compose などなど
  • イメージとコンテナはクラスとインスタンスの関係に近い
    • 冷凍チャーハンに例える話もあった
  • VSCodeのDocker拡張が便利
  • DBサーバなどデータを残したいものはコンテナ内に保管せずにホスト上のFSなどをマウント
  • サーバ時刻変えてテスト、複数バージョンミドルウェアでのテストなどに便利
  • まずはMy開発環境構築用から
  • Java 10からコンテナのリソース制限が正しく働くように(コンテナ上かどうかを判別できるように)なった
    • ちょうど先週聞いてきた話だった
  • はやく手を付けよう…

自分のDocker/K8s環境をタダで手に入れる ICP Community Editionで簡単構築(斎藤 和史さん / 田中 孝清さん)

スライド(後半): K8s-icp-capsmalt-jjugccc2018spring

  • 冒頭にタイムマシン採用の話(Webから2~3年遅れでSI / エンプラへ)
  • 本題はIBM Cloud Private(ICP)でのDocker / k8s利用の話
    • 開発用途なら無償のCommunity Editionを(ICP-ce)
  • 最初から色々入ってて便利
  • はやく手を付けよう…(本日2回目)
  • AdoptOpenJDKの宣伝も

JDBC APIもそろそろ非同期の波に乗りたいらしい(西川 彰広さん)

  • Tech Deep Diveでもお世話になっている西川さんのセッション
  • まだ決まった話ではない(議論中)
    • 毎月仕様が変わる状態
  • 現行JDBCは同期アクセス
    • AOT、コネクションプールが使えないとき、coherenceが高くて使えないときにツラい→非同期にしたい
  • 非同期:ADBA(AsynchronusなDB Access
    • まだどのバージョンから入るか決まってない
      • Java 11では無理
    • コンセプト段階
  • 現時点でのゴール
    • ユーザスレッドはノンブロッキング
    • 既存のJDBCの置き換えではない(並存)
    • スループットアプリケーションがターゲット
    • java.sqlを参照しない or 最小限にする
      • パッケージはjava.sql2、モジュールはjdk.adbaの予定(最初はincuvatorが付く)
    • Builder patternを使う
    • SQLを解釈しない
      • 個々のRDBMSの方言 / 固有機能に対応しない
  • CompletionStage & CompletableFutureをガンガン使う
  • ラムダ式対応 & fluent programming
  • 実行モデルはすべてOperation
    • Operationはグルーピング可能(発行順序の指定OK←デフォルト)
  • OracleMySQL 8.0のConnector/JでX DevAPIに対応して非同期アクセスができるようになったはずだけど、どちらを使うか悩ましい状態になりそうな予感

懇親会

  • 「回る寿司」を横目に「回ってない穴子」狙いで行ったので普通にゲット
    • しかしテーブルが空いていなくて会場を一周する羽目に
    • やっとたどりついた先でボランティアスタッフの方に声を掛けていただいて雑談→寿司以外の食料にもありつく(昨秋は位置取りに失敗して食べるものがなくなった)。ありがたや
  • LT面白い
    • でも新幹線の都合で残念ながら今年も中座

全体を通して

  • 一方通行ルールは一部把握できていない参加者もいたようだが、全体的には混乱もなく秩序が保たれた状態だったと思う
    • 帰って万歩計を見たら、8,000歩余り(昨秋よりやや少ない)でいい運動になった
  • 懇親会の「回る寿司」も「奪い合い」どころか「むしろ余る」事態に?
    • 事前アナウンスの効果?LINEさんの配慮で増量?
      • そもそも今回の参加者に最初から「乱暴者」がいなかった可能性も
    • 「緊急事態です」「お寿司がお寿司なので」「穴子穴子なので」という謎のアナウンス
  • 今度は忘れ物をせずに帰ることができた
    • 前回は上着を忘れた(ちゃんと保管されていて送っていただきました)
    • 西新宿駅の入口を通過せずにまっすぐ帰ることもできた
      • 焦って反対方向の電車に乗ることもなかった
  • 時間帯が被って諦めたセッションのスライドが早い段階で公開されたので助かった

今回も十分楽しめました。

スタッフ・登壇者はじめ関係者の皆様、ありがとうございました!