除雪インフラ

GitLab SaaSのSnowplowイベントはGitLabが管理するAWSのパイプラインを通ります。

AWSパイプラインでのイベントの流れ

すべてのイベントはコレクター、エンリッチャー、仮名化ラムダを通過します。イベントはその後、S3ストレージにダンプされ、Snowflakeデータウェアハウスによってピックアップされます。

インフラのデプロイと管理は、現在のTerraformリポジトリでTerraformを使って自動化されています。

graph LR GL[GitLab.com]-->COL subgraph aws-cloud[AWS] COL[Collector]-->|snowplow-raw-good|ENR COL[Collector]-->|snowplow-raw-bad|FRBE subgraph firehoserbe[Firehose] FRBE[AWS Lambda] end FRBE-->S3RBE ENR[Enricher]-->|snowplow-enriched-bad|FEBE subgraph firehoseebe[Firehose] FEBE[AWS Lambda] end FEBE-->S3EBE ENR[Enricher]-->|snowplow-enriched-good|FRGE subgraph firehosege[Firehose] FRGE[AWS Lambda] end FRGE-->S3GE end subgraph snowflake[Data warehouse] S3RBE[S3 raw-bad]-->BE[gitlab_bad_events] S3EBE[S3 enriched-bad]-->BE[gitlab_bad_events] S3GE[S3 output]-->GE[gitlab_events] end

Snowplow独自のドキュメントや、コレクタとエンリッチャがどのように動作するかの概要については、Snowplow technology 101を参照してください。

仮名化

典型的なSnowplowパイプラインとは対照的に、エンリッチメントの後、GitLab SnowplowイベントはS3ストレージに保存される前にAWS Lambdaサービスの形で仮名化サービスを通過します。

イベントの仮名化が必要な理由

GitLabはコミュニティに対する義務と法的規制によって、ユーザーのプライバシーを保護する義務があります。

GitLabはビジネス上の意思決定のために価値あるインサイトを提供しなければならず、さまざまなユーザーの行動パターンをよりよく理解する必要があります。仮名化プロセスは、これら2つの要件の妥協点を見つけるのに役立ちます。

仮名化は、Snowplowイベント内で個人を特定できる情報を不可逆的に処理し、与えられた入力に対して決定論的な出力をメンテナーとして維持しながら、その入力との関連性をマスキングします。

イベントがどのように仮名化されるか

仮名化は、デフォルトでプライバシーを提供する許可リストを使用します。したがって、Snowplowイベントの一部として受信された各属性は、その属性が許可された例外でない限り、仮名化されます。

仮名化は、HMAC-SHA256 鍵付きハッシュ アルゴリズムを使用して行われます。属性は秘密のソルトと組み合わされ、識別可能な各情報を仮名に置き換えます。

S3バケットデータレイクからSnowflakeへ

データがどのようにSnowflakeデータウェアハウスに取り込まれるかの詳細については、データチームのSnowplowの概要を参照してください。

モニタリング

処理パイプラインのさまざまなステージで追跡するSnowplowイベントを監視するツールがいくつかあります:

  • Analytics Instrumentation Grafanaダッシュボードは、GitLab.comインスタンスからコレクターフリートへ送信されるバックエンドイベントを監視します。このダッシュボードは以下の情報を提供します:
    • Snowplow コレクターに正常に到達したイベントの数。
    • Snowplowコレクターに到達しなかったイベント数。
    • 送信されたバックエンドイベントの数。
  • AWS CloudWatchダッシュボードは、処理パイプライン内のイベントの状態を監視します。パイプラインはSnowplowコレクターから始まり、エンリッシャーと仮名化を経て、S3バケットに永続化されます。S3からイベントはSnowflake Data Warehouseにインポートされます。このダッシュボードを表示するには、AWSのアクセス権限が必要です。詳細については、Snowplow Events pseudonymization service documentationのmonitoringを参照してください。
  • Sisenseダッシュボードでは、インポートされたSnowplowイベントの総数に加え、データウェアハウスにインポートされたイベントの良品数と不良品数に関する情報が提供されます。

詳細については、このビデオウォークスルーをご覧ください。