Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
わたしのまわりのニュー・ノーマル3選
Search
hmatsu47
PRO
January 19, 2021
Technology
1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
わたしのまわりのニュー・ノーマル3選
吉祥寺.pm25 [Online] 2021/01/19 Talk
hmatsu47
PRO
January 19, 2021
More Decks by hmatsu47
See All by hmatsu47
中小企業に就職して転職せず30年。結果どうなった?
hmatsu47
PRO
0
84
JAWS ミート 2026 の「出し物」のゲームを Kiro と AI-DLC v2 で作った話
hmatsu47
PRO
0
15
ゲームで挑戦!VPC の気持ちになって IPv4/v6 パケットをルーティングしよう!
hmatsu47
PRO
0
29
続・名古屋城とデータセンター
hmatsu47
PRO
0
28
【再演】IPv6 VPC の実装パターンをいくつか
hmatsu47
PRO
0
33
名古屋城とデータセンター
hmatsu47
PRO
0
40
IPv6 に関する話
hmatsu47
PRO
0
29
さいきんの光ファイバーの話
hmatsu47
PRO
0
76
低いほうのレイヤを見てみる話
hmatsu47
PRO
0
35
Other Decks in Technology
See All in Technology
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
160
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
Snowflakeで実現する全社横断の顧客の声(VOC)分析・活用基盤@Snowflake World Tour Tokyo 2026
yuto16
0
210
beyond jj: config & tools ecosystem
indirect
0
380
絵ではじめるKubernetesセキュリティ
aoi1
3
530
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
3
550
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
1
510
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
8
890
Minecraft JavaのMODをSwiftで作る
1mash0
0
160
おい、エージェントを使って終わらせろ
nwiizo
0
220
LLMに渡さなかった仕事
nanaism
0
140
事業課題から技術的負債に向き合う
sansantech
PRO
2
1.7k
Featured
See All Featured
Accessibility Awareness
sabderemane
1
210
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
500
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
540
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
202
76k
Transcript
わたしのまわりのニュー・ノーマル(むりやり) 3 選 吉祥寺.pm25【オンライン】 2021/01/19 まつひさ(hmatsu47)
自己紹介 松久裕保(@hmatsu47) https://qiita.com/hmatsu47 名古屋で Web インフラのお守り係をしています MySQL 8.0 の薄い本を作って配っています ◦
Qiita の記事: https://qiita.com/hmatsu47/items/ceb75caf46e3c761095d ◦ GitHub リポジトリの他、印刷版を勉強会などで無料配布していました ◦ 新型コロナウイルスの関係でオフライン勉強会ができなくなったので、 現在は BOOTH でも配布しています(100円+送料)後の話に続く… https://booth.pm/ja/items/2524481 2
吉祥寺.pm 初トーク参加です • 一般参加:過去 1 回 ◦ 設計ナイトを含めても過去 2 回
• 「一句」が浮かばず一週間悩む ◦ これ↓を見て「聞きたかった」と思いつつ 3
本日のネタ(むりやり 3 選) • 継続的デリバリーモデル • OLTP + OLAP =
HTAP • レガシーなシステムでのクラウドとの付き合い方 4
[1] 継続的デリバリーモデル • 2020/12/08、CentOS 8 終了のお知らせ ◦ https://blog.centos.org/2020/12/future-is-centos-stream/ ◦ 2021/末終了
◦ 今後は CentOS Stream に注力 • CentOS Stream : 継続的デリバリー ◦ 赤帽エンジニアブログ https://rheb.hatenablog.com/entry/centos_stream 5
ところで、継続的デリバリーモデルといえば(強引) • MySQL Innovation Day(2018/05)の講演にて ◦ MySQL 8.0 は継続的デリバリーモデルによって、GA となった後
も機能を継続的に追加していくことに https://gihyo.jp/dev/serial/01/oss-db-various-news/0034 • 四半期毎にマイナーバージョンアップ ◦ それにあわせて新機能追加・改良 6
継続的デリバリーモデル : 使用上の注意 • アップデートで突然、挙動が変わる ◦ 例)NLJ Only だった MySQL、8.0.18
にて Hash Join を採用 ▪ なぜか同じ SQL(文)によるデータの取得結果が違ったり…?? ◦ 例)予約語の追加が命取りに https://dev.mysql.com/doc/mysqld-version-reference/en/keywords.html →メジャーバージョン間の差異 https://dev.mysql.com/doc/refman/8.0/en/keywords.html →8.0 マイナーバージョンでの追加・削除・変更 7
「変わる」ことを前提に付き合っていく • 変わっても良いようにしておく ◦ 例)自動アップデートは OFF に(確認後にアップデート) ◦ 例)DB・テーブル・列名などはバッククォート(`)で挟む •
変化を積極的に追い続ける ◦ メジャーバージョンアップまでの間「塩漬け」しない ▪ 一度に大きな変化に対応する必要があり、かえって大変になる ▪ セキュリティパッチを当てられないリスクが大きい 8
【余談】MySQL 8.0 の薄い本も • 四半期毎のマイナーバージョンアップに追従 ◦ 継続的デリバリー中 ▪ 正直しんどい •
2021/01 は MySQL 8.0.23 リリース見込み ◦ そろそろ出る?昨日(2021/01/18)出てた ◦ 薄い本も 8.0.23 対応版の改訂時期 9
ところで、MySQL といえば • 集計・分析用の重たいクエリを投げると ◦ 数時間結果が返ってこないことも • 集計・分析をするなら ◦ ETL
経由で分析・OLAP 用の環境にデータを流して処理 10
MySQL の旧ノーマル : 集計・分析が苦手な子 (後述 URL の PDF 資料「20201223_MySQL_MDS_HeatWave_jp.pdf」より引用) 11
[2] OLTP + OLAP = HTAP • Oracle Cloud の
MySQL Database Service(MDS)に HeatWave 機能が追加! ◦ https://www.mysql.com/jp/why-mysql/presentations/business-benefits-of- using-mds-and-heatwave-202012-doc-jp/ (サービス説明 PDF 資料) ※要 Oracle シングル・サインオンアカウント(無料) • 分析クエリが自動的に HeatWave へ ◦ https://qiita.com/sugimount/items/9ecf8800cd59ba2a635c 12
MySQL のニュー・ノーマル : MDS で HeatWave (前述 URL の PDF
資料「20201223_MySQL_MDS_HeatWave_jp.pdf」より引用) 13
MySQL が「集計・分析できる子」に!(MDS 限定ですが ) https://dev.mysql.com/doc/ (MDS・HeatWave が先頭に) 14
[3] クラウドとの付き合い方 • とあるサービスの話 : 約 3 年半前、自社サービス (15 年モノのレガシー
Web システム)を AWS へ移行 ◦ https://qiita.com/hmatsu47/items/23e2f0b36ab46234b9db (ほか、計 3 記事) ◦ LB を ALB、DB(MySQL)を Aurora へ ◦ ほぼ AWS に「載せただけ」(でも大変だった) • 2020/12、サービス別に AWS アカウントを分離 ◦ メインのサービスを別アカウントへ移行 15
ALB の仕組み • 複数の AZ にある複数のインスタンスがターゲットサーバ にリクエストを振り分ける ◦ (1AZ で使わないかぎり)単一インスタンスではない
• 負荷に応じて自動的にスケールアウト/スケールイン→ スケールアップ/スケールダウン ◦ インスタンスの数やサイズが動的に変わる 16
ある日の ALB(事情によりメトリクスグラフは出せませんが) • 突然、スパイクアクセスを受ける ◦ 調査+サポートに問い合わせ ▪ 瞬間的に大量のリクエストがあった ▪ その後は元のリクエスト数に戻った(継続はしていない)
• ALB 関連のメトリクスグラフは異常なまま ◦ コネクション数が倍増(ずっと戻らない) ◦ 他は元に戻っていた(分間 リクエスト数・平均 レスポンス時間など) 17
そのとき、ターゲットサーバでは • コネクション数が 3 倍に(ずっと戻らない) ◦ アイドルタイムアウト設定など何も変えていないのに • Web サーバの設定が「昔のまま」だったので
◦ コネクション増→メモリ使用量がダイレクトに増加 ◦ 一部(設定上の)コネクション上限に達する ▪ アカウント移行作業時、サーバソフトウェア類のバージョンは上げていた のに、設定内容が一部古いままだった 18
スパイク前のイメージ 19 ALB Web
スパイク後のイメージ 20 ALB Web
ALB の中身はブラックボックス • 日々進化している ◦ 例えば、スケールアップ時の応答性の向上とか ▪ 暖機がほぼ不要になった • 「昨日と同じ動きをする」とは限らない
◦ 使う側も、クラウドの流儀(Elastic)に合わせてスケール対応 する構成に変えていかないといけない (問題のコネクション数は年が明けたところで元の水準に戻っていた) 21
時を戻して…ここで、突然の一句。 年の瀬に ひやり Aurora 再起動 22
サポートに問い合わせてみて原因が判明 先読みが コケて Aurora 再起動 • 再起動後のエラーログに↑を見つけたら AWS サポートへ ◦
決して bugs.mysql.com にバグレポートを上げてはいけません (ちなみに、オーロラは冬の季語ではないらしい) 23 yyyy-mm-dd hh:mm:ss XXXXXXXXXXXX InnoDB: Assertion failure in thread nnnnnnnnnnnnnn in file ut0boundedqueue.cc line 123 InnoDB: Failing assertion: oldVersion != EMPTY_ENTRY && oldVersion != SUPERSEDED_ENTRY InnoDB: We intentionally generate a memory trap. InnoDB: Submit a detailed bug report to http://bugs.mysql.com. (後略)
その後、DB の性能問題が発生 • ワークアラウンド対応(先読み無効化)の影響? ◦ あったとしても軽微 ▪ 普段から利用状況を見ていたので概ね判断が付いた • 原因を見つけて対応
◦ 無事、解決 • 念のため別の対応策も準備 ◦ 構成を変えると DB 負荷がどう変わるか何度か検証していた 24
本日のネタ(むりやり 3 選)のまとめ • 継続的デリバリーモデル ◦ 「変わる」ことを前提に付き合っていく • OLTP +
OLAP = HTAP ◦ MySQL が「集計・分析できる子」に!(ただし MDS に限る) • レガシーなシステムでのクラウドとの付き合い方 ◦ レガシーでも Elastic を意識してスケール対応(設定) ◦ 可観測性と「平常時」の把握が大事(構成変更時の変化の検証も) 25
【振り返り】変わったもの・変わっていないもの • ニュー・ノーマルで変わったもの ◦ 使うツール/ツールの使い方 ◦ 手段・手順 • ニュー・ノーマルでも変わっていないもの ◦
ベースとなる考え方 ◦ 目的 26