http://www.java-users.jp/ccc2018fall/#/www.java-users.jp
↓朝8時半、爽快に晴れ、朝日が差し込む四谷駅から新宿二丁目西新宿に向かう
今年の冬もやってきました❗️JJUG CCC 2018 Fall❗️
所用があり午前中だけの参加でしたが、とても有益な情報を得られ、
おかげさまで参加したメリットがとても大きかったと思います❗️😃
レポートしていきます!📝
レポート📝
10:00 - 10:45 Spring BootのWebアプリケーションをDockerに載せてAWS ECSで動かしている話
www.slideshare.net
- DDDとクリーンアーキテクチャの人(前回の登壇は見てた)
- システム構成
- 企業向けWebサービス、取り扱うデータ量は多い(数百GB~数TB)
- ALB -> WEB UI Container -> in ALB -> other containers
- in ALB -> independent EC2の流れもある
- ECR -> ECSの王道を行く
- CodeDeploy, GitLabを利用してECRに登録
- 採択経緯
- 学習コスト懸念、Fargateのランニングコスト懸念
- (ECSでやっておけばFargateへの切り替えは比較的容易・・)
- (Web)ALB -> Web Server Container -> UI Container
- 本当はUI Containerの前にALBを挟みたかった
- X-Forward-For, X-Forwarded-Proto, X-Forwarded-Portが書き換わる
- リダイレクトURLのポートが変わっちゃう問題があった
- 本当はUI Containerの前にALBを挟みたかった
- 開発環境
- メモリ16GB, Windows派多数、Macな人も
- マージリクエストを利用
- ローカル用プロファイルで動作させるSBが入ったDockerコンテナをビルド・起動
- 他マイクロサービスのところはモック化
- GitLab CIで開発環境にデプロイ
- jarビルド -> Dockerイメージビルド -> ECRに登録 -> ECSのタスク定義 & サービス更新 -> Mattermostに通知
- すぐにデプロイされない罠
- ec2数 > タスク数:すぐにデプロイされる(新しいインスタンスに)
- ec2数 = タスク数:1個止めに行っている間は待たされる
- 環境毎の切り替え
- β環境1 -> β環境2 -> β環境3
- 性能ってのは測ってみるしかない!
- プロファイルの切り替え
- Git Flowを採用
- ECSの環境変数をだけで動作設定を変更できる。
- メモリ16GB, Windows派多数、Macな人も
- ログ出力
- Kinesys Data Firehorseに連携、S3に保存して分析
- アクセス監視
- 未解決事件
- コンテナ間通信が502エラー
- ALB <- -> コンテナ
- コンテナ間通信が502エラー
- ECSはDockerコンテナを間違って落としちゃったとしても瞬時に検知して復旧できる仕組みがあるからそこがすごい。
- 未解決事件
11:00 - 11:45 Java + コンテナ向けパフォーマンス分析手法の紹介と活用事例
https://jjug-cfp.cfapps.io/submissions/2674d2b0-9b8e-415a-bb3f-75e56333330b
- 最小の変更点を発見し、速度を改善したい。
- JMeter & APP DYNAMICS
- APMでもモニタリング
- プレリリース環境での継続的な負荷テスト
- ボトルネックの発見
- だれでもやること
- ログをいい感じに仕込む
- VISUALVMをつなぐ
- FlightRecorder?
- system, libc, Native library, GC, JIT?
- perf-toolでサンプリング
- カネールがタイマを持つ
- 定時観測
- ユーザランドでファイルに
- 事故は起こってから観測しても遅い
- perf-scriptは重い
- perf-recordは比較的軽い
- Interpreterによる分裂の障害
- Interpreterのヒューリスティックな合成
- 利用しているツールなど
- Avalancheの解析レポート
- Netflix Vector
- AppDynamics
- Prometeus
- Off-CPUの自動解析は難しい
- wPerf (Zhou et al)
@nakayama_sanの可愛いメモ
紹介せざるをえない!JJUG CCCでいつも可愛いメモを共有してくださっている、
@nakayama_sanのツイートです!
Javaの未来を考えよう を聞いてきたメモ#ccc_e1 #jjug_ccc pic.twitter.com/rc8m8EmUvT
— Nakayama san (@nakayama_san) 2018年12月15日
モジュールグラフが作られる様子を学ぼう を聞いてきたメモ#ccc_a2a #jjug_ccc pic.twitter.com/7MqSw0so3I
— Nakayama san (@nakayama_san) 2018年12月15日
LINEで広告プラットフォームをJava➕Golangで立ち上げた話 を聞いてきたメモ。#ccc_a2b #jjug_ccc pic.twitter.com/5zXz7DITbC
— Nakayama san (@nakayama_san) 2018年12月15日
思考停止しないアーキテクチャ を聞いてきたメモ #ccc_e3 #jjug_ccc pic.twitter.com/Nk1TkEypqY
— Nakayama san (@nakayama_san) 2018年12月15日
エムスリーでのKotlinへの取り組み を聞いてきたメモ #ccc_a5
— Nakayama san (@nakayama_san) 2018年12月15日
#jjug_ccc pic.twitter.com/lpyQO34bSX
Javaを活用したマイクロサービスのためのKubernetes活用 を聞いてきたメモ #ccc_e5 #jjug_ccc pic.twitter.com/nP6j0r6EZR
— Nakayama san (@nakayama_san) 2018年12月15日
コードをどまんなかに据えた設計アプローチ を聞いてきたメモ #ccc_e6 #jjug_ccc pic.twitter.com/QcQBiVUM0K
— Nakayama san (@nakayama_san) 2018年12月15日
所感
ECSの環境変数を便利に使えるという話はとても有益でした。
[2018/12/19追記]
本イベントの後にAWSから発表があり、
SSM Parameter Storeの値の参照が Fargate から可能になったようです。
Fargate Platform Version 1.3 がリリースされました!これまで EC2 起動モードでのみ利用できた SSM Parameter Store (と、その API を通した Secrets Manager) の値の参照が Fargate から可能になります! / "AWS Fargate Platform Version 1.3 Adds Secrets Support" https://t.co/GFZwiJinit
— Tori Hara (@toricls) 2018年12月18日
Avalancheについても是非とも実際に動かしてみて、
パフォーマンスを解析したいと思っています。
スター数とかも増えて是非とも盛り上がって欲しいOSSですねぇ。
短い時間での参加でしたが、本当に参考になるセッションばかりで感謝です!
見れなかったセッションは、TwitterやGitHubを通して、各セッション情報を参照し、
確認したいと思います!
GitHub - jjug-ccc/slides-articles-2018Fall: JJUG CCC 2018 Fall 登壇資料まとめ
↓写真はおなじみの成子天神社の一コマ。今回も牛さん撫でできました 🐮
以上です!