Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データ分析基盤の障害を未然に防ぐためのチェックリスト / checklist for prev...

データ分析基盤の障害を未然に防ぐためのチェックリスト / checklist for preventing incidents of data management system

2020/11/04に開催されたDataEngineeringStudy#4でのLT登壇資料です。

Sotaro Tanaka

November 04, 2020
Tweet

More Decks by Sotaro Tanaka

Other Decks in Programming

Transcript

  1. 2 • Data Management & BI • Data Reliability •

    Site Reliability • Like : Docker/k8s/Python/Go/小倉唯さん • Hobby : / / ⚽ / 小倉唯さん 自己紹介 Sotaro Tanaka @__sotaron__ Data Engineer @ Ubie, Inc. DS Team 2
  2. 5 Data Reliabilityって何? はじめに / Data Reliabilityとは? データ活用を推進する上で、避けては通れないデータに関わる諸々の品質についての話。 ざっくり2つの品質があると思います。 1/

    データ品質   分析レポートやMLアプリケーションで利用している「データそのもの」の品質。間違ってたら困る。 2/ データ関連システムの品質  データパイプラインやワークフロー、BIツール、データベースなど、「データを取り扱うシステム」の品質。 5
  3. 6 データ品質の指標 代表的なもの 6 完全性 Integrity レコードは欠損していないか? Requiredなカラムに値があるか? これがないと…? -

    許容値を超えたら、データは「ス トアするのに金がかかるゴミ」に なる 一貫性 Consistency ある値が… データセット間で一貫しているか? データセット内で一貫しているか? これがないと…? - レポートAとレポートBで同じ指 標値が異なる値になったりする 一意性 Uniqueness 重複してはいけないレコードやインスタ ンスが重複していないか? 重複排除とほぼ同じ。 これがないと…? - 極端な話、KPIが不正に二倍に なったりする。 はじめに / Data Reliabilityとは?
  4. 7 データ関連システムの品質指標 代表的なもの 7 適時性 Timeliness 更新系システムのデータ変化に分析 /ML側が適切に追従できているか? レポートは適切に更新されたか? これがないと…?

    - 3日前の速報値で意思決定する PdM - ある日のデータ反映が、顧客側 に表示されるのは3日後 可用性 Availability システムが稼働しているべき時間中、 稼働し続けているか? これがないと…? - ダッシュボード見れません! 冗長性 Redundancy データロストしないか? オペミスでデータ消した時にどうなる? これがないと…? - 事業\(^o^)/オワタ はじめに / Data Reliabilityとは?
  5. 10 ETL(ELT)パイプライン、ワークフローの場合 データ分析基盤のコンポーネントと品質チェックリストの例 1/ パイプライン上のタスクが失敗したときのリトライを考慮できているか?   耳タコだが、タスクが冪等になっているかなどの観点がある。可用性、一貫性、一意性など複数の指標が関係。   冪等にできない場合、リトライ手順は複雑化するのでドキュメンテーションできているかなども事前にチェックできると‍♂ 2/

    扱っているデータごとの時間的なボラティリティを理解しているか?  社内レポートや顧客に表示する画面へのデータ反映などの問題。適時性の指標が関係。   たとえば頻繁な更新が走るデータと、静的なマスタデータを同じパイプラインに載せるのが吉なのか?などを考えられる。 3/ デプロイ時にストリームデータが欠損しないシステムになっているか?  たとえば、Blue/Greenなデプロイ戦略をとれているのか?メッセージキューを利用しているならackを正しくハンドリングしているか、 など。可用性、完全性、冗長性などの指標が関係する。ストリーム処理の障害対応はつらい。 10
  6. 11 データストアの場合 データ分析基盤のコンポーネントと品質チェックリストの例 1/ 故障してもデータロストしないか?   当たり前だけど、バックアップを取る。そのバックアップがリストアできることを定期的にテストしておく、など。   PITRがサポートされているのか?サポートされていないなら、何を許容できるのか把握しているか?冗長性の観点。 2/

    failover時の挙動はテストしているか?  機能的に提供されているfailoverに安心しきってはいけない。   failoverには暗黙的な条件がいくつもあったりするので、それを正しくハンドリングできているのか?をチェックしておく   可用性、一貫性(replication失敗とか)などに関わる。 11
  7. 12 BIツールの場合 1/ 故障したとき、シートの情報はロストしないか?(自社ホストの場合)   BIツールは多くの場合、内部的にシート情報や外部データソースへの接続情報を保持するため、データストア層を持つ。   MySQLとかPostgreでバックアップを取るというと当たり前だが、こちらのバックアップ/リストア戦略も当然だいじ。   冗長性の指標。

    2/ グラフや数表の描画や表示にかかる時間をモニタできているか? SLOにおさまっているか?  「グラフの表示が遅いんですけど〜」と言われることはよくあると思います。   ユーザーからの体感値の報告を無視してはいけません。   データセットが肥大化していることによって、レスポンスが遅くなっていたら、ある日突然全てのグラフが1日見れなくなるなんてこともあ るかもしれません。 データ分析基盤のコンポーネントと品質チェックリストの例 12