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
81
(弊社の)OpenSearchに潜んでいた罠
Keisuke Yamauchi
May 23, 2024
Tweet
Share
More Decks by Keisuke Yamauchi
See All by Keisuke Yamauchi
Cake.jpのCRM 今と未来
kechiiin
0
30
半年かけてPHP5.6からPHP7.4までバージョンアップした苦労と工夫 PHPカンファレンス福岡2024
kechiiin
1
440
before/afterで見る Cake.jpのアジャイル開発
kechiiin
0
13
ランダム処理を修正し、DBの負荷を下げた話
kechiiin
0
24
レガシーからモダンへ? PHP5.6からの脱却
kechiiin
0
270
Other Decks in Programming
See All in Programming
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
9
2.3k
歴史と現在から考えるスケーラブルなソフトウェア開発のプラクティス
i10416
0
300
ある日突然あなたが管理しているサーバーにDDoSが来たらどうなるでしょう?知ってるようで何も知らなかったDDoS攻撃と対策 #phpcon.2024
akase244
2
7.7k
ESLintプラグインを使用してCDKのセオリーを適用する
yamanashi_ren01
2
230
chibiccをCILに移植した結果 (NGK2025S版)
kekyo
PRO
0
130
Итераторы в Go 1.23: зачем они нужны, как использовать, и насколько они быстрые?
lamodatech
0
1.4k
AWS re:Invent 2024個人的まとめ
satoshi256kbyte
0
100
Jaspr Dart Web Framework 박제창 @Devfest 2024
itsmedreamwalker
0
150
Androidアプリの One Experience リリース
nein37
0
1.2k
QA環境で誰でも自由自在に現在時刻を操って検証できるようにした話
kalibora
1
140
Flatt Security XSS Challenge 解答・解説
flatt_security
0
730
月刊 競技プログラミングをお仕事に役立てるには
terryu16
1
1.2k
Featured
See All Featured
Adopting Sorbet at Scale
ufuk
74
9.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
113
50k
A designer walks into a library…
pauljervisheath
205
24k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
YesSQL, Process and Tooling at Scale
rocio
170
14k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Making the Leap to Tech Lead
cromwellryan
133
9k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
A Philosophy of Restraint
colly
203
16k
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 まとめ 関連する項目を確認し、 どのようにデータが入っていくのかを確認しよう!
なかなか、難しいけどね、、、