現在の仕事では、Webアプリケーションの運用保守をしていますが、アプリケーションのデータに異常があるか定期的に確認し、問題があれば、異常データを修復するという作業をする事があります。
この作業は一般的にどのような言葉で名付けられているのか、事例などを検索したところ、満足のいく結果が得られなかったのでこの作業名の名前付けと、使用するツールをまとめます。
目次
- 業務、作業の名称ラベル化、定義について
- 関連記事/文献
- DMBOK/データ品質管理
- ツールについて
業務、作業の名称ラベル化、定義について
業務名、作業名の名前づけと作業内容を定義してみます。
実施内容を短く言うと
SQLを定期的に実行して、異常データを検知、異常データがあれば修復のための行動を取る。
業務名、作業名について
以下のような名前が適切に思います。
- アプリケーションデータ監視
- サービスデータ監視
- アプリケーションデータ品質監視(管理)
- サービスデータ品質監視(管理)
- 業務データモニタリング
Web検索してみた限りは、データ品質って言葉を使うのは、専任のデータエンジニアがいるケース、もしくは、機械学習のデータ前処理あたりの文脈で、アプリケーション運用保守的な文脈だとあまり明確な名前づけラベリングがなされていないように思います。
作業の定義付け
以下、作業内容の箇条書きでの説明です。
- RDBに限らず、データストレージにアクセスできるクエリ言語を、定期的に手動、または自動で実行してデータの状態を確認する。
- データに異常がある場合は、データを直接更新してデータの異常を修復するか、Webアプリケーションを介してデータを更新する。
- データの修復に関して、社内の業務担当者、エンドユーザとの調整が必要なケースもある。
- データ異常は、イベント、インシデントとして記録され、SREでいうSLIの項目の一つとして扱われる。
- データ異常の発生の原因は以下のようなパターンがある。
- データ移行の失敗によるデータ異常
- マイクロサービスのサービス間データ連携失敗によるデータ不整合
- アプリケーションのバグに由来するデータ異常
- 予算都合(ROI)で、あえて機能を作らなかったために発生するデータ不整合
- インシデント検知から対応までの作業は、SREのトイルに該当する作業となる。
- クエリの実行、インシデントしての記録、通知、レポート作成の基盤として自作のツールや、オープンソース、Saas等が使用される。
関連記事/文献
まさにこんなものという記事ありましたので、リンクを記載します。
SQLを使った監視でデータ基盤の品質を向上させる - MonotaRO Tech Blog
定期的にSQLを実行した結果をDatadogに送信するcyqldogというツールを作った - クラウドワークス エンジニアブログ
DMBOK/データ品質管理業務について
検索していて、DMBOK/データ品質管理業務という言葉を見つけました。
関連しそうですので、文書リンクなどをまとめておきます。
データマネジメントの知識体系”DMBOK”とは?どう役立つのか?
ツールについて
個人的に観測した限り、以下のような手法があるように思いました。
JenkinsでSQL実行、実行結果を条件に応じて通知
Jenkinsは、jobの定期実行機能は元々備わっています。
SQL実行して、通知ができれば最低限データ監視基盤としては機能しそうです。
-
SQL の実行
-
JenkinsからSlackへの通知
-
ビルド結果での条件分岐 Jenkins Declarative Pipeline 〜whenを使い倒す!〜 - Qiita
RundeckでSQL実行、実行結果を条件に応じて通知
-
SQLプラグイン
-
RundeckからSlackへの通知
-
エラーハンドリング/条件分岐
RedashのAlert機能を使う
RedashのAlert機能はデータ監視基盤としてそのまま使用できそうです。
SupersetのAlert機能を使う
RedashでできるならSupersetでもできるのでは?というところで確認したところ以下のドキュメントを見つけました。
Data Observability Tool の機能を使用する
以下、データの可観測性を高めるためのツールについてまとめられた記事です。
6 Best Data Observability Tools: Comparing Usability & Features
これらもデータ監視基盤としての機能を備えていそうです。
特にsodaは、soda-sqlというツールを公開しています。
sodaのSass基盤に記録する用途で作られていそうですが、定義ファイルの作成方法などは自作する際も参考にできそうです。
sodadata/soda-sql: Data profiling, testing, and monitoring for SQL accessible data.
ちなみに、データ監視基盤ツールは、以下のようなタグが付けられているので、タグベースもう少し探すと良いツールが見つかるかもしれません。
- data-quality-monitoring · GitHub Topics
- data-quality-checks · GitHub Topics
- data-monitoring · GitHub Topics
個人的にはどうするか?
個人的にはPythonが書けるのと、インストール、設定作業とプロセス起動しっぱなしのツールは運用が面倒に思いましたので、作るとしたら、以下の記事のPythonスクリプトベースで自作かなと思いました。
SQLを使った監視でデータ基盤の品質を向上させる - MonotaRO Tech Blog
参考
以下、記事作成中に見ていた文書です。
個人的なモヤモヤが少しクリアになりました。
以上です。
コメント