SlideShare a Scribd company logo
/65
Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima
© DENSO CORPORATION All RightsReserved.
本番用のDBに対して
やってしまった話
2020/8/24
ITエンジニア怪談 #3
小島 優介(8/27デブサミ関西登壇)
/65
Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima
© DENSO CORPORATION All RightsReserved.
業務の内容
2
10年以上前の話
数百人が利用している社内ツールの小改善
その社内ツールは
SQL Server のデータを取得・更新する
※以降、赤字部分は、その後の悲劇に繋がるポイントです
社内ツール
(デスクトップアプリ)
SQL
Server
ユーザー
/65
Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima
© DENSO CORPORATION All RightsReserved.
社内ツールの改善内容
3
小さな機能(ロジックもシンプル)を追加すること
ただし、その機能追加で、DBにアクセスする回数が増えるため
DBサーバーの負荷状況に問題が起きないか
念の為にサーバー負荷テストを実施することに
←この時点では「余裕!余裕!」と思っていた私
/65
Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima
© DENSO CORPORATION All RightsReserved.
サーバー負荷テストの実施手順
4
当時(10年以上前)のさらに数年前に
その社内用ツールでのサーバー負荷を確認するための
テスト用ツールが作成されていた
(自分以外の人が作成したテスト用ツール)
そのテスト用ツールは、過去数年使われていないようだったが
幸いにも利用手順書が存在した
テスト用ツール
(デスクトップアプリ)
SQL
Server
開発者(私)
本番運用を想定した
DBアクセスを行って負荷を与える
テスト用ツールの概要
/65
Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima
© DENSO CORPORATION All RightsReserved.
テスト実施時の注意点
5
社内ツールでのテストは
本番環境のDBに間違ってアクセスすると
大変なことになるので
ちゃんとテスト用のDBにアクセスするように
DB設定ファイルを確認した上で、テストを実施する必要がある
テスト用ツールも、利用手順書をしっかり読んで、
テスト用のDBにアクセスすることを確認する
この時点で、テスト用DBが更新されることを確認していた
テスト用ツール テスト用
DB
任意の1レコードが
更新されることを確認
/65
Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima
© DENSO CORPORATION All RightsReserved.
そしてテストを実行
6
テスト用ツールでサーバー負荷テストを実施し、
サーバー負荷状況に問題がないことを確認した
テスト用ツール テスト用
DB
本番用
DB
開発者(私)
サーバー負荷テスト合格
テスト用DBでテストしたので
本番用DBには影響がないはず
/65
Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima
© DENSO CORPORATION All RightsReserved.
翌日に異変が
7
ユーザーから以下の問い合わせが!
「なんかデータが勝手に書き換わっている気がするんだけど」
←問い合わせ内容を見たときの私
/65
Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima
© DENSO CORPORATION All RightsReserved.
おそるおそる本番環境のDBを見ると・・・
8
書き換わっている!
なぜ!?
←絶望した私
/65
Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima
© DENSO CORPORATION All RightsReserved.
原因はテスト用ツール
9
テスト用ツールのソースコードをよく見ると
処理Aと処理Bの2つのDB更新処理が存在し、
処理Aと処理Bがそれぞれ、どのDBにアクセスするかの設定が存在
(なぜ1つにまとまっていないのかは不明)
処理Aはテスト用DBにアクセスしていたが、処理Bは本番用DBに
テスト用ツール テスト用
DB
本番用
DB
処理A
処理B
/65
Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima
© DENSO CORPORATION All RightsReserved.
テスト用ツールのDBアクセスの設定漏れ
10
どのDBにアクセスするかの設定は
デフォルトで本番環境のDBにアクセスする設定になっていた
利用手順書には、処理AのDBアクセス設定しか書いていなかったため
手順書通りに実施すると
処理Bは本番環境のDBを更新してしまう状態だった
テスト用ツール テスト用
DB
本番用
DB
処理A
処理B
処理BのDBアクセスの
設定が漏れていた
/65
Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima
© DENSO CORPORATION All RightsReserved.
謝罪とデータ復旧
11
致命傷には至らなかったため、なんとか復旧できた
←関係者に謝罪する私
/65
Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima
© DENSO CORPORATION All RightsReserved.
教訓
12
何年も使われていないプログラム(テスト用ツールなど)に対しては
手順書を鵜呑みにするのでなく
ソースコードを読んで、重大な問題が起きないことを
確認した上で利用すること
/65
Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima
© DENSO CORPORATION All RightsReserved.
自己紹介
13
名前:小島 優介
Twitter:@kojimadev
https://twitter.com/kojimadev
「Serverless LT初心者向け」 というコミュニティを運営
9/7 LT初心者向け LT大会 #3 (発表者を募集中)
https://serverlesslt.connpass.com/event/184417/
デブサミ2020関西で登壇予定(約500人が視聴予定)
8/27 14:10-14:55 事前登録すれば無料で視聴できまさす
https://event.shoeisha.jp/devsumi/20200827/session/2586/
テーマ
組織と個人が内発的動機により
継続的に成長するための施策

More Related Content

PDF
Firebase Realtime Database を C# から利用する
PDF
リモートワークで楽しく開発するためのチームビルディング
PDF
Azure のApp Center でアプリの 使用状況を分析する
PDF
Azure の App Center でアプリの 使用状況を分析する
PPTX
楽楽精算iOSアプリのCI/CD紹介
PPTX
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
PDF
Windows 10 20H2はどうなる
PPTX
消滅都市5周年の運営を支えた技術とその歴史
Firebase Realtime Database を C# から利用する
リモートワークで楽しく開発するためのチームビルディング
Azure のApp Center でアプリの 使用状況を分析する
Azure の App Center でアプリの 使用状況を分析する
楽楽精算iOSアプリのCI/CD紹介
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
Windows 10 20H2はどうなる
消滅都市5周年の運営を支えた技術とその歴史

What's hot (20)

PPTX
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
PPTX
Another Visual Studio - Visual Studio for Mac
PDF
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
PDF
デバイスコネクト対応機の弊社確認結果とご相談
PDF
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
PDF
[デブサミ]Microsoft Data Platform 最新アップデート
PDF
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
PDF
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
PDF
[DO08] 『変わらない開発現場』を変えていくために ~エンプラ系レガシー SIer のための DevOps 再入門~
PDF
Google Container Engine と Kubernetes で 無理をしないコンテナ管理
PDF
ACRi_gdep-hayashi-v2
PPTX
DataEngConf NYC’18 セッションサマリー #1
PDF
animation_prototype_campfire_design
PDF
ソフトウェア開発活動のデータとアナリティクスの3原則
PDF
OSSコンソーシアム 開発基盤部会 2019年度 活動方針・部会紹介
PPTX
Node-REDからメール送信
PDF
Slack の Incoming Webhookで簡易なフィードバック管理
PDF
国内Cloud spanner初事例!「迎車料金無し!新感覚タクシーアプリ「フルクル」」
PDF
kintone hack in kintone hive fukuoka Vol.4
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
Another Visual Studio - Visual Studio for Mac
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
デバイスコネクト対応機の弊社確認結果とご相談
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
[デブサミ]Microsoft Data Platform 最新アップデート
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
[DO08] 『変わらない開発現場』を変えていくために ~エンプラ系レガシー SIer のための DevOps 再入門~
Google Container Engine と Kubernetes で 無理をしないコンテナ管理
ACRi_gdep-hayashi-v2
DataEngConf NYC’18 セッションサマリー #1
animation_prototype_campfire_design
ソフトウェア開発活動のデータとアナリティクスの3原則
OSSコンソーシアム 開発基盤部会 2019年度 活動方針・部会紹介
Node-REDからメール送信
Slack の Incoming Webhookで簡易なフィードバック管理
国内Cloud spanner初事例!「迎車料金無し!新感覚タクシーアプリ「フルクル」」
kintone hack in kintone hive fukuoka Vol.4
Ad

Similar to 本番用のDBに対してやってしまった話 (20)

PPTX
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます
PDF
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...
PPTX
Qlik TechFest A-3 Qlik Senseによる厚生労働省の国民向けサイト事例紹介
PPTX
【STech I USA】2025.7.25 Databricks Data+AI Summit 2025 フィードバックウェビナー 〜現地参加者が語る注...
PDF
Another works_リードエンジニア向け採用資料.pdf
PDF
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
PDF
scrum_fest_osaka_2020
PPTX
Data & AI Update 情報 - 2020年4月版
PDF
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
PPTX
Cloud impact on IT industry (in Japanese)
PDF
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
PDF
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~
PDF
Microsoft Build 2021 Recap Day
PDF
Two Dataflows
PDF
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
PDF
Infrastructure as Code (IaC) 談義 2022
PPTX
Running Kubernetes on Azure
PPTX
CData Drivers HandsOn 20180326
PPTX
BigQueryを活用したPrivate DMPを作って使ってるお話
PDF
Ignite update databricks_stream_analytics
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...
Qlik TechFest A-3 Qlik Senseによる厚生労働省の国民向けサイト事例紹介
【STech I USA】2025.7.25 Databricks Data+AI Summit 2025 フィードバックウェビナー 〜現地参加者が語る注...
Another works_リードエンジニア向け採用資料.pdf
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
scrum_fest_osaka_2020
Data & AI Update 情報 - 2020年4月版
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
Cloud impact on IT industry (in Japanese)
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~
Microsoft Build 2021 Recap Day
Two Dataflows
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
Infrastructure as Code (IaC) 談義 2022
Running Kubernetes on Azure
CData Drivers HandsOn 20180326
BigQueryを活用したPrivate DMPを作って使ってるお話
Ignite update databricks_stream_analytics
Ad

More from Yusuke Kojima (6)

PDF
(SPI JAPAN 2020) 組織と個人が内発的動機で継続的に成長し続けるための実践手法
PDF
組織と個人が内発的動機により継続的に成長するための施策
PDF
徹底的にアウトプットを伴う育成をやってみた話
PDF
リモートワークで楽しく開発するためのチームビルディング
PDF
生産性を倍にしたハピネスチームビルディング
PDF
生産性を2倍にしたチームビルディング
(SPI JAPAN 2020) 組織と個人が内発的動機で継続的に成長し続けるための実践手法
組織と個人が内発的動機により継続的に成長するための施策
徹底的にアウトプットを伴う育成をやってみた話
リモートワークで楽しく開発するためのチームビルディング
生産性を倍にしたハピネスチームビルディング
生産性を2倍にしたチームビルディング

本番用のDBに対してやってしまった話

  • 1. /65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All RightsReserved. 本番用のDBに対して やってしまった話 2020/8/24 ITエンジニア怪談 #3 小島 優介(8/27デブサミ関西登壇)
  • 2. /65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All RightsReserved. 業務の内容 2 10年以上前の話 数百人が利用している社内ツールの小改善 その社内ツールは SQL Server のデータを取得・更新する ※以降、赤字部分は、その後の悲劇に繋がるポイントです 社内ツール (デスクトップアプリ) SQL Server ユーザー
  • 3. /65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All RightsReserved. 社内ツールの改善内容 3 小さな機能(ロジックもシンプル)を追加すること ただし、その機能追加で、DBにアクセスする回数が増えるため DBサーバーの負荷状況に問題が起きないか 念の為にサーバー負荷テストを実施することに ←この時点では「余裕!余裕!」と思っていた私
  • 4. /65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All RightsReserved. サーバー負荷テストの実施手順 4 当時(10年以上前)のさらに数年前に その社内用ツールでのサーバー負荷を確認するための テスト用ツールが作成されていた (自分以外の人が作成したテスト用ツール) そのテスト用ツールは、過去数年使われていないようだったが 幸いにも利用手順書が存在した テスト用ツール (デスクトップアプリ) SQL Server 開発者(私) 本番運用を想定した DBアクセスを行って負荷を与える テスト用ツールの概要
  • 5. /65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All RightsReserved. テスト実施時の注意点 5 社内ツールでのテストは 本番環境のDBに間違ってアクセスすると 大変なことになるので ちゃんとテスト用のDBにアクセスするように DB設定ファイルを確認した上で、テストを実施する必要がある テスト用ツールも、利用手順書をしっかり読んで、 テスト用のDBにアクセスすることを確認する この時点で、テスト用DBが更新されることを確認していた テスト用ツール テスト用 DB 任意の1レコードが 更新されることを確認
  • 6. /65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All RightsReserved. そしてテストを実行 6 テスト用ツールでサーバー負荷テストを実施し、 サーバー負荷状況に問題がないことを確認した テスト用ツール テスト用 DB 本番用 DB 開発者(私) サーバー負荷テスト合格 テスト用DBでテストしたので 本番用DBには影響がないはず
  • 7. /65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All RightsReserved. 翌日に異変が 7 ユーザーから以下の問い合わせが! 「なんかデータが勝手に書き換わっている気がするんだけど」 ←問い合わせ内容を見たときの私
  • 8. /65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All RightsReserved. おそるおそる本番環境のDBを見ると・・・ 8 書き換わっている! なぜ!? ←絶望した私
  • 9. /65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All RightsReserved. 原因はテスト用ツール 9 テスト用ツールのソースコードをよく見ると 処理Aと処理Bの2つのDB更新処理が存在し、 処理Aと処理Bがそれぞれ、どのDBにアクセスするかの設定が存在 (なぜ1つにまとまっていないのかは不明) 処理Aはテスト用DBにアクセスしていたが、処理Bは本番用DBに テスト用ツール テスト用 DB 本番用 DB 処理A 処理B
  • 10. /65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All RightsReserved. テスト用ツールのDBアクセスの設定漏れ 10 どのDBにアクセスするかの設定は デフォルトで本番環境のDBにアクセスする設定になっていた 利用手順書には、処理AのDBアクセス設定しか書いていなかったため 手順書通りに実施すると 処理Bは本番環境のDBを更新してしまう状態だった テスト用ツール テスト用 DB 本番用 DB 処理A 処理B 処理BのDBアクセスの 設定が漏れていた
  • 11. /65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All RightsReserved. 謝罪とデータ復旧 11 致命傷には至らなかったため、なんとか復旧できた ←関係者に謝罪する私
  • 12. /65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All RightsReserved. 教訓 12 何年も使われていないプログラム(テスト用ツールなど)に対しては 手順書を鵜呑みにするのでなく ソースコードを読んで、重大な問題が起きないことを 確認した上で利用すること
  • 13. /65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All RightsReserved. 自己紹介 13 名前:小島 優介 Twitter:@kojimadev https://twitter.com/kojimadev 「Serverless LT初心者向け」 というコミュニティを運営 9/7 LT初心者向け LT大会 #3 (発表者を募集中) https://serverlesslt.connpass.com/event/184417/ デブサミ2020関西で登壇予定(約500人が視聴予定) 8/27 14:10-14:55 事前登録すれば無料で視聴できまさす https://event.shoeisha.jp/devsumi/20200827/session/2586/ テーマ 組織と個人が内発的動機により 継続的に成長するための施策