Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
わたしのまわりのニュー・ノーマル3選
Search
hmatsu47
PRO
January 19, 2021
Technology
0
860
わたしのまわりのニュー・ノーマル3選
吉祥寺.pm25 [Online] 2021/01/19 Talk
hmatsu47
PRO
January 19, 2021
Tweet
Share
More Decks by hmatsu47
See All by hmatsu47
Aurora DSQL のトランザクション(スナップショット分離と OCC)
hmatsu47
PRO
0
5
いろんなところに居る Amazon Q(Developer)を使い分けてみた
hmatsu47
PRO
0
24
ゲームで体感!Aurora DSQL の OCC(楽観的同時実行制御)
hmatsu47
PRO
0
13
PostgreSQL+pgvector で GraphRAG に挑戦 & pgvectorscale 0.7.x アップデート
hmatsu47
PRO
0
34
LlamaIndex の Property Graph Index を PostgreSQL 上に構築してデータ構造を見てみる
hmatsu47
PRO
0
17
PostgreSQL+pgvector で LlamaIndex の Property Graph Index を試す(序章)
hmatsu47
PRO
0
17
HeatWave on AWS という選択肢を検討してみる
hmatsu47
PRO
0
14
HeatWave on AWS のインバウンドレプリケーションで HeatWave エンジン有効時のレプリケーションラグを確認してみた!
hmatsu47
PRO
0
23
CloudWatch Database Insights 関連アップデート
hmatsu47
PRO
0
58
Other Decks in Technology
See All in Technology
20250912_RPALT_データを集める→とっ散らかる問題_Obsidian紹介
ratsbane666
0
100
react-callを使ってダイヤログをいろんなとこで再利用しよう!
shinaps
2
270
「その開発、認知負荷高すぎませんか?」Platform Engineeringで始める開発者体験カイゼン術
sansantech
PRO
2
790
データ分析エージェント Socrates の育て方
na0
7
2.5k
エンジニアが主導できる組織づくり ー 製品と事業を進化させる体制へのシフト
ueokande
1
100
JTCにおける内製×スクラム開発への挑戦〜内製化率95%達成の舞台裏/JTC's challenge of in-house development with Scrum
aeonpeople
0
270
実践!カスタムインストラクション&スラッシュコマンド
puku0x
0
540
Platform開発が先行する Platform Engineeringの違和感
kintotechdev
4
590
Modern Linux
oracle4engineer
PRO
0
160
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
260
Apache Spark もくもく会
taka_aki
0
140
OCI Oracle Database Services新機能アップデート(2025/06-2025/08)
oracle4engineer
PRO
0
180
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Docker and Python
trallard
46
3.6k
Code Review Best Practice
trishagee
71
19k
Rails Girls Zürich Keynote
gr2m
95
14k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Music & Morning Musume
bryan
46
6.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
113
20k
The Language of Interfaces
destraynor
161
25k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Mobile First: as difficult as doing things right
swwweet
224
9.9k
Gamification - CAS2011
davidbonilla
81
5.4k
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