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
120
(弊社の)OpenSearchに潜んでいた罠
Keisuke Yamauchi
May 23, 2024
Tweet
Share
More Decks by Keisuke Yamauchi
See All by Keisuke Yamauchi
動的型付け言語に抗うPHPStanという戦士
kechiiin
0
21
Cake.jpのCRM 今と未来
kechiiin
0
53
半年かけてPHP5.6からPHP7.4までバージョンアップした苦労と工夫 PHPカンファレンス福岡2024
kechiiin
1
670
before/afterで見る Cake.jpのアジャイル開発
kechiiin
0
19
ランダム処理を修正し、DBの負荷を下げた話
kechiiin
0
31
レガシーからモダンへ? PHP5.6からの脱却
kechiiin
0
330
Other Decks in Programming
See All in Programming
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
500
Navigating Dependency Injection with Metro
zacsweers
3
250
「待たせ上手」なスケルトンスクリーン、 そのUXの裏側
teamlab
PRO
0
500
Kiroの仕様駆動開発から見えてきたAIコーディングとの正しい付き合い方
clshinji
1
210
詳解!defer panic recover のしくみ / Understanding defer, panic, and recover
convto
0
240
ユーザーも開発者も悩ませない TV アプリ開発 ~Compose の内部実装から学ぶフォーカス制御~
taked137
0
150
パッケージ設計の黒魔術/Kyoto.go#63
lufia
3
430
HTMLの品質ってなんだっけ? “HTMLクライテリア”の設計と実践
unachang113
4
2.8k
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
590
請來的 AI Agent 同事們在寫程式時,怎麼用 pytest 去除各種幻想與盲點
keitheis
0
120
Improving my own Ruby thereafter
sisshiki1969
1
160
AIコーディングAgentとの向き合い方
eycjur
0
270
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
525
40k
Mobile First: as difficult as doing things right
swwweet
224
9.9k
Documentation Writing (for coders)
carmenintech
74
5k
A Tale of Four Properties
chriscoyier
160
23k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Context Engineering - Making Every Token Count
addyosmani
1
37
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
A Modern Web Designer's Workflow
chriscoyier
696
190k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.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 まとめ 関連する項目を確認し、 どのようにデータが入っていくのかを確認しよう!
なかなか、難しいけどね、、、