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
20
Cake.jpのCRM 今と未来
kechiiin
0
52
半年かけてPHP5.6からPHP7.4までバージョンアップした苦労と工夫 PHPカンファレンス福岡2024
kechiiin
1
660
before/afterで見る Cake.jpのアジャイル開発
kechiiin
0
18
ランダム処理を修正し、DBの負荷を下げた話
kechiiin
0
30
レガシーからモダンへ? PHP5.6からの脱却
kechiiin
0
320
Other Decks in Programming
See All in Programming
ソフトウェアテスト徹底指南書の紹介
goyoki
1
110
物語を動かす行動"量" #エンジニアニメ
konifar
14
5.5k
実践!App Intents対応
yuukiw00w
1
360
GUI操作LLMの最新動向: UI-TARSと関連論文紹介
kfujikawa
0
1k
STUNMESH-go: Wireguard NAT穿隧工具的源起與介紹
tjjh89017
0
390
Honoアップデート 2025年夏
yusukebe
1
860
AI時代のドメイン駆動設計-DDD実践におけるAI活用のあり方 / ddd-in-ai-era
minodriven
23
9k
サイトを作ったらNFCタグキーホルダーを爆速で作れ!
yuukis
0
520
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
8
990
Langfuseと歩む生成AI活用推進
licux
3
300
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
200
KessokuでDIでもgoroutineを活用する / Go Connect #6
mazrean
0
120
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.4k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
Building Applications with DynamoDB
mza
96
6.6k
Into the Great Unknown - MozCon
thekraken
40
2k
How STYLIGHT went responsive
nonsquared
100
5.7k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
480
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
283
13k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
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 まとめ 関連する項目を確認し、 どのようにデータが入っていくのかを確認しよう!
なかなか、難しいけどね、、、