JJUG CCC 2018 Spring に行ってきたメモ
JJUG CCC 2018 Spring
Container技術が流行ってきた昨今の様々な現場の話を聞けて楽しかったです。 幅広い話を聞いてきました
聞いたセッションは下記。
- JavaでWebサービスを作り続けるための戦略と戦術
- Concourse CI入門 ライブ環境構築&ビルド
- 日本最大級の求人検索エンジン「スタンバイ」を支える技術
- Java10まとめと、どうなるJava11
- JavaエンジニアのためのDocker入門 〜 仮想開発・テスト環境構築 〜
- Spring Boot on Kubernetes : Yahoo! ズバトク事例
- DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
ビズリーチの方の"JavaでWebサービスを作り続けるための戦略と戦術"がかなり参考になりました。
また、ジャストシステムの方の"DDDとクリーンアーキテクチャ"も実践的な事例の話で刺激的でした。
いずれのセッションでも、貴重なノウハウを拝聴できて面白かったです。 登壇者の皆様、ありがとうございました!
以下聞いたセッションのメモ書き
JavaでWebサービスを作り続けるための戦略と戦術
感想
スピーカーの方の熱意が伝わってきた。
開発の理想とそのために何をやってきたのか、という話。
手段としてDockerFileを学んでいくべきだというメッセージも強かった。
まとめ
- 開発環境とは、本番用ではないものすべてのアプリケーションが動く環境を指す
- エンジニアではない人も触れるもの
- 動くソフトウェアを作るためのもの
- 誰かのPCでは動かない、とかはNG
- あるべき姿
- setup.shでミドルウェアが全部入る
- VitrtualBoxがあるかどうか判定→インストール というところから全部一括で行う
- プロジェクトごとに作成する→複数プロジェクトに参画している人では動かせない、ではNG
- 仮想OS on 仮想OS
- docker on VitrtualBox on Mac
- dockerはなぜ利用するか
- 単純に早い
- 未来像として、Container技術に集約されそうな未来がある。
- dockerfileを作成するのはアプリ開発者である→学ぶべき
- ツールの変更
- 目指す先
- PR一つに対してそれ専用の検証環境が一つ自動構築されるのが理想
- 環境の空きを待つことなく、いつでも誰でも、確認したいものについて確認できるようにする
- setup.shでミドルウェアが全部入る
- 老朽化した技術からの脱却
- フロントエンド
- Swaggerすごい。
- 手動・自動テスト
- テストコードに価値はなく,その実行結果を見たあとの行動に価値がある
- PRごとにjenkinsで自動テストが走る
- MRも工夫。誰かがレビューコメントしないとMergeボタンが押せないようになっている
- セキュリティ
- AWSのシークレットOS環境に渡す
- など。
- バージョンアップ
- こまめにバージョンアップするしか無い。
- この脆弱性は関係ない、で対応してないとあとから強烈なバージョンアップを強いられる。
- こまめにバージョンアップするしか無い。
- まとめ
- 誰でも、いつでも、安定的に再現性高めにテストができる世界という理想を目指す
Concourse CI入門 ライブ環境構築&ビルド
資料
https://backpaper0.github.io/jjug-ccc-2018-spring-concourse/slide/index.html#1
感想
Concource使ってみなきゃ。
jenkinsと比べて書き方のコツさえ掴めばすべてコードベースで管理できて良さげ。
(あとあんま関係ないけどViewも鮮やか。)
まとめ
- アーキテクチャ
- Concource自体がマイクロサービスチック。
- Web,Worker,DBの3つのインスタンスから構成される。
- パイプラインやビルドログはポスグレに保存される
- worker自身はATCからの指示だけで動く、DBは直接見ない
- ので死んでしまっても立ち上げ直せば良い
- pipelineとかjobの構造は資料の図がとてもわかりやすかった
- YAMLのアンカーとエイリアス
- ただ結局、GUI上どのようにJOBが扱われるのかとか、ymlの管理とかは触ってみないとわからなさそう。やろう。
日本最大級の求人検索エンジン「スタンバイ」を支える技術
資料
感想
Elastic SearchのPluginすごい。
やりたいことや運用を楽にするためにどういう構成にするのか、どんなPluginを利用するのか、選択肢が豊富。
まとめ
検索周りの話を中心に。
- スタンバイ:800万件以上の求人情報を収集して、検索できるしくmi
- クローリングなどから収集したデータをElasticSearchに格納
- 利用者はそこから検索する
- 検索のサジェストはログから生成
- Elastic Search
- インデックスのしかけ
- 検索周りのしかけ
- フレーズマッチングとtitleなどマッチ箇所に応じた重み付け
- ワード単体のマッチングによる検索結果の補完
- Elastic SearchのPlugin
- 全体の仕掛けを運用する際の課題と解決
Java10まとめと、どうなるJava11
(このあたりから私の体力が尽きてくる
資料
https://www.slideshare.net/nowokay/java10-and-11
感想
リリースモデルの復習と新規機能について。
Raw Stringの話とStringの新API、Single-Fileでのjava実行、HEISEI問題が興味をそそられる話でした。
対応していかなきゃ。
まとめ
気になったものベースで
- 新リリースモデル
- JDK 10
- var を用いた型推論
- Heap Allocation on Alternative Memory Devices
- JDK 11
- about java support
- End of HEISEI問題
- NewEraという対応の仕方をする模様
- 2019/4には入るかも
- 現在議論中なので積極的に参加していきましょうとのこと
- NewEraという対応の仕方をする模様
- End of HEISEI問題
JavaエンジニアのためのDocker入門 〜 仮想開発・テスト環境構築 〜
感想
そもそもコンテナとはどういう存在なのか、というところから。
docker経験ありnot基礎知識みたいな感じの身なので、参考になった。
まとめ
- Dockerコンテナ
- あたかもサーバのように動いているもの
- コンテナ上には。OSは入っていない。ミドルとアプリだけが入っている
- 追記:ホストのKernelやベースOSの機能を共有しているっぽい
- Docker hubリポジトリ
- イチから書くのは面倒。なのでdocker imageを共有する仕組みがある
- ただし、玉石混交なので信頼できない個人のイメージよりは、公式か、自分で書いて作ったほうが良い。
- 注意すべきこと
- コンテナは基本使い捨て。永続化したい情報とかは乗っけない方が良い。
- bashで入ってなにか作業して整えた→ちゃんとその変更分もdockerFileに記述してやることで、冪等性を確保する。
- Java10のDocker対応
- JVMがDockerで動いていると認識していなかったのが治った
- 今まではホストの設定しかみていなかったっぽい?
- JVMがDockerで動いていると認識していなかったのが治った
Spring Boot on Kubernetes : Yahoo! ズバトク事例
感想
めっちゃくちゃ濃かった。
貴重なノウハウを共有していただけてありがたいです。
まとめ
結構情報が抜け落ちているのであとで資料を見たい
- yahoo!ズバトク
- くじやキャンペーンを掲載するためのプラットフォーム
- 需要のUPに対して運用や改修のコストがかかりすぎていて辛かった
- 現行システムでは限界だったので、k8sを利用して作り直した
- kubernetes
- コンテナのオーケストレーションプラットフォーム
- fail overの管理や異常検知、スケーリング、リクエストの負荷分散など課題の解決に有効そう
- コンテナのオーケストレーションプラットフォーム
- システム移行
- k8sを有効活用するためにtwelve-factor appに沿うように改善。
- ヘルスチェック
- actuatorを利用
- Graceful Shutdown
- Jettyの機能だけではうまく実現できなかった→自前で実装して実現
- ログ出力
- Spring Cloud Sleuth→依存を追加するだけでリクエストで一意なIDを出力。
- 40サービスあるので、こういった仕掛けがないと厳しい。
- ヘルスチェック
- 開発フローの改善
- Git上でオペレーションが簡潔するフロー
- PRがトリガーになって運用が走る構造
- 実働10分程度でデプロイ完了できるように。(もともと数時間
- 大変だったこと
- 社内の連携や考え方のスイッチなど。
- まだ改善の余地あり。
- k8sのデザインパターンなどを踏まえる
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
感想
実践的!DDDやクリーンアーキテクチャをどう組んでいったのか、プラクティスの話は新鮮だったので参考にできればいいなと。
まとめ
- 長いことやってるPJ
- スクラップ&ビルドしている
- コンセプトはあり、仕様の概要は決まっている
- 諸々の問題
- サーバから全データをダウンロード
- 全コンポーネントがDBと接続
- DBの変更に対してのWEBサーバ影響がでかい
- 解決策としてのDDD
- 設計段階
- 実装前の準備
- 実装してみてわかったこと
- やってみてよかったこととわるかったこと