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
(弊社の)OpenSearchに潜んでいた罠
Search
Keisuke Yamauchi
May 23, 2024
Programming
0
29
(弊社の)OpenSearchに潜んでいた罠
Keisuke Yamauchi
May 23, 2024
Tweet
Share
More Decks by Keisuke Yamauchi
See All by Keisuke Yamauchi
半年かけてPHP5.6からPHP7.4までバージョンアップした苦労と工夫 PHPカンファレンス福岡2024
kechiiin
1
180
ランダム処理を修正し、DBの負荷を下げた話
kechiiin
0
15
レガシーからモダンへ? PHP5.6からの脱却
kechiiin
0
180
Other Decks in Programming
See All in Programming
2024/7/11発刊!開発生産性の教科書がざっとわかるスライド 2024/06/20 / A Brief Overview of the Textbook on Development Productivity
ma3tk
0
120
ゼロから始める型安全なGraphQL開発
shachi_daikon55
0
180
CSC307 Lecture 03
javiergs
PRO
0
140
Get started with Compose Multiplatform!
ogi2ogi
0
1.1k
【超難問】絶対に解けないJavaScriptクイズ8選
tomo1227
0
2k
設計の考え方 - インターフェースと腐敗防止層編 #phpconfuk / Interface and Anti Corruption Layer
okashoi
7
1.6k
JJUG CCC 2024 Spring自動アップグレードを夢見て、Amazon Q Developer使ってみた
toricky6
2
190
How to send distibuted traces to Datadog using build own OpenTelemetry-Lambda distribution
aereal
3
120
Fat Controller は悪か? ~光のFat Controller・闇のガリController~
stwile
1
300
IaCにおけるテスト考察 / Tests in IaC
linyows
2
250
K2のKotlin IDEプラグインの中を覗いてみよう♪
yanex
0
1.9k
技術サポートでよく見かけるパターンと便利な活用方法
tamai_63
0
440
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
661
120k
A designer walks into a library…
pauljervisheath
201
24k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
jQuery: Nuts, Bolts and Bling
dougneiner
60
7.3k
Teambox: Starting and Learning
jrom
129
8.5k
Design by the Numbers
sachag
276
18k
The Cult of Friendly URLs
andyhume
74
5.8k
Statistics for Hackers
jakevdp
791
220k
WebSockets: Embracing the real-time Web
robhawkes
59
7.1k
Side Projects
sachag
451
41k
Building Applications with DynamoDB
mza
89
5.8k
Fantastic passwords and where to find them - at NoRuKo
philnash
40
2.6k
Transcript
© Cake.jp Co.Ltd. All Right Reserved.|Confidential 2024/05/23 (弊社の) OpenSearchに潜んでいた罠 山内
啓輔
2 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 自己紹介 山内 啓輔
やまうち けいすけ 担当業務 CRM、PHPバージョンアップなど 🍰おすすめスイーツ 元祖かぼちゃプリン 約1.2kg かぼちゃ感が強く、甘さが控えめで美味し い! 付属のカラメルをかけることで甘さもアッ プ
3 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1. 背景の説明
2. 何が起きたのか 3. どのような対応をしたのか 4. まとめ 検索機能のしくじり
4 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1. 背景の説明
2. 何が起きたのか 3. どのような対応をしたのか 4. まとめ 検索機能のしくじり
5 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 背景の説明 ・商品検索でOpenSearchを使用している 「OpenSearchは、大量のデータをリアルタイムでインデックス化し、迅速かつ柔軟に検索・分析できる
オープンソースの検索エンジンです。」 by ChatGPT 4o ・何をしようとしていたのか ソートに使用する項目に変更を加えた 0〜5まで設定できる項目を、0〜500まで設定できるように変更 → 仕様変更
6 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1. 背景の説明
2. 何が起きたのか 3. どのような対応をしたのか 4. まとめ 検索機能のしくじり
7 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか 時系列順に説明
8 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか DBの値を更新 DBの値を更新→
9 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか OpenSearchのインデックス更新 DBの値を更新→OpenSearchのインデックス更新→
10 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか 他部署の方から「なんかおかしい」と連絡 DBの値を更新→OpenSearchのインデックス更新→他部署
の方から「なんかおかしい」と連絡→
11 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか 「待ってれば大丈夫」と言うための調査開始 DBの値を更新→OpenSearchのインデックス更新→他部署の方から「なんかおかしい」
と連絡→「待ってれば大丈夫」と言うための調査開始→
12 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか エラー発見! DBの値を更新→OpenSearchのインデックス更新→他部署の方
から「なんかおかしい」と連絡→「待ってれば大丈夫」と言う ための調査開始→エラー発見!→
13 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか 調査開始 DBの値を更新→OpenSearchのインデックス更新→他部署の方から「なんか
おかしい」と連絡→「待ってれば大丈夫」と言うための調査開始→エラー発 見!→調査開始→
14 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか エラー内容把握 管理画面の変更→DBの値を更新→OpenSearchのインデックス更新→社内に連絡→他部署から「なんかおかしい」と連
絡→「待ってれば大丈夫」というための調査開始→エラー発見!→調査開始→エラー内容把握→
15 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか エラー内容 "reason":"Value
[400] is out of range for a byte"
16 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか OpenSearchの公式を見に行くと・・・
17 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか OpenSearchの公式を見に行くと・・・ 引用:https://opensearch.org/docs/latest/field-types/supported-field-types/numeric/
18 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか せめて全て失敗していれば良かったのに、 1→100だけ成功してしまったばっかりに、
ソートがおかしくになってしまった
19 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1. 背景の説明
2. 何が起きたのか 3. どのような対応をしたのか 4. まとめ 検索機能のしくじり
20 © Cake.jp Co.Ltd. All Right Reserved.|Confidential どのような対応をしたのか ・DBのデータを元に戻す 100→1、200→2、、、
これをすることでOpenSearchのインデックスは、バッチが勝手に元に戻してくれる とりあえず、不具合解消 ・テスト環境で予行練習 OpenSearchのフィールドの型を変更する(byte→integer) DBのデータを更新する OpenSearchのインデックスの更新 ・本番で実施 OpenSearchのフィールドの型を変更する(byte→integer) DBのデータを更新する OpenSearchのインデックスの更新
21 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1. 背景の説明
2. 何が起きたのか 3. どのような対応をしたのか 4. まとめ 検索機能のしくじり
22 © Cake.jp Co.Ltd. All Right Reserved.|Confidential まとめ 関連する項目を確認し、 どのようにデータが入っていくのかを確認しよう!
なかなか、難しいけどね、、、