Slide 1

Slide 1 text

© Cake.jp Co.Ltd. All Right Reserved.|Confidential 2024/05/23 (弊社の) OpenSearchに潜んでいた罠 山内 啓輔

Slide 2

Slide 2 text

2 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 自己紹介 山内 啓輔 やまうち  けいすけ 担当業務 CRM、PHPバージョンアップなど 🍰おすすめスイーツ 元祖かぼちゃプリン 約1.2kg かぼちゃ感が強く、甘さが控えめで美味し い! 付属のカラメルをかけることで甘さもアッ プ

Slide 3

Slide 3 text

3 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1.  背景の説明 2.  何が起きたのか 3.  どのような対応をしたのか 4.  まとめ 検索機能のしくじり

Slide 4

Slide 4 text

4 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1.  背景の説明 2.  何が起きたのか 3.  どのような対応をしたのか 4.  まとめ 検索機能のしくじり

Slide 5

Slide 5 text

5 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 背景の説明 ・商品検索でOpenSearchを使用している 「OpenSearchは、大量のデータをリアルタイムでインデックス化し、迅速かつ柔軟に検索・分析できる オープンソースの検索エンジンです。」 by ChatGPT 4o ・何をしようとしていたのか ソートに使用する項目に変更を加えた 0〜5まで設定できる項目を、0〜500まで設定できるように変更 → 仕様変更

Slide 6

Slide 6 text

6 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1.  背景の説明 2.  何が起きたのか 3.  どのような対応をしたのか 4.  まとめ 検索機能のしくじり

Slide 7

Slide 7 text

7 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか 時系列順に説明

Slide 8

Slide 8 text

8 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか DBの値を更新 DBの値を更新→

Slide 9

Slide 9 text

9 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか OpenSearchのインデックス更新 DBの値を更新→OpenSearchのインデックス更新→

Slide 10

Slide 10 text

10 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか 他部署の方から「なんかおかしい」と連絡 DBの値を更新→OpenSearchのインデックス更新→他部署 の方から「なんかおかしい」と連絡→

Slide 11

Slide 11 text

11 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか 「待ってれば大丈夫」と言うための調査開始 DBの値を更新→OpenSearchのインデックス更新→他部署の方から「なんかおかしい」 と連絡→「待ってれば大丈夫」と言うための調査開始→

Slide 12

Slide 12 text

12 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか エラー発見! DBの値を更新→OpenSearchのインデックス更新→他部署の方 から「なんかおかしい」と連絡→「待ってれば大丈夫」と言う ための調査開始→エラー発見!→

Slide 13

Slide 13 text

13 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか 調査開始 DBの値を更新→OpenSearchのインデックス更新→他部署の方から「なんか おかしい」と連絡→「待ってれば大丈夫」と言うための調査開始→エラー発 見!→調査開始→

Slide 14

Slide 14 text

14 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか エラー内容把握 管理画面の変更→DBの値を更新→OpenSearchのインデックス更新→社内に連絡→他部署から「なんかおかしい」と連 絡→「待ってれば大丈夫」というための調査開始→エラー発見!→調査開始→エラー内容把握→

Slide 15

Slide 15 text

15 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか エラー内容 "reason":"Value [400] is out of range for a byte"

Slide 16

Slide 16 text

16 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか OpenSearchの公式を見に行くと・・・

Slide 17

Slide 17 text

17 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか OpenSearchの公式を見に行くと・・・ 引用:https://opensearch.org/docs/latest/field-types/supported-field-types/numeric/

Slide 18

Slide 18 text

18 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 何が起きたのか せめて全て失敗していれば良かったのに、 1→100だけ成功してしまったばっかりに、 ソートがおかしくになってしまった

Slide 19

Slide 19 text

19 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1.  背景の説明 2.  何が起きたのか 3.  どのような対応をしたのか 4.  まとめ 検索機能のしくじり

Slide 20

Slide 20 text

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のインデックスの更新

Slide 21

Slide 21 text

21 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1.  背景の説明 2.  何が起きたのか 3.  どのような対応をしたのか 4.  まとめ 検索機能のしくじり

Slide 22

Slide 22 text

22 © Cake.jp Co.Ltd. All Right Reserved.|Confidential まとめ 関連する項目を確認し、 どのようにデータが入っていくのかを確認しよう! なかなか、難しいけどね、、、