7 ポイント 投稿者 evisdrenova 2024-05-09 | まだコメントはありません。 | WhatsAppで共有

こんにちは、Hada News の皆さん。Neosync をリリースできてうれしく思います!

Neosync は、開発者がプライバシーやセキュリティ上のリスクなしに、ローカルテスト、デバッグ、開発者体験の改善のために、本番データの匿名化版および合成版を生成できるよう支援するオープンソースプラットフォームです。

ほとんどの開発者やチームは、ローカルおよびステージング用データベースのために、いくつかのモックデータを生成するデータベースのシードスクリプトを持っています。開発者から聞いた問題は、ローカルでは機能が正しく動作しているように見えても、本番データを代表していないシードデータのせいで、本番環境でバグや例外ケースが発生するということです。2つ目の問題は、本番環境でのエラーをデバッグする際に、本番に近いデータを得るための良い方法がないことでした。

本番データをそのまま使えばこれらの問題は解決できますが、ほとんどのチームは 1. プライバシー/セキュリティの問題 と 2. 規模 のために使うことができません。

そこで私たちは、Neosync でこの2つの問題を解決しようとしました。

私たちは、匿名化と合成データを使ってプライバシーとセキュリティの問題を解決します。40種類以上の事前構築済みトランスフォーマー(またはコードで直接作成)を使って、PII や機密データを匿名化し、ローカルで安全に利用できます。また、データを匿名化する代わりに、最初から本番データのように見える合成データを生成することもでき、データベースの既存スキーマに合わせて調整されます。

2つ目の問題は規模です。一部の本番データベースはローカルに収まらないほど大きかったり、必要以上のデータを持っていたりします。また、特定の顧客のデータをデバッグしたい場合に、その顧客のデータだけをフィルタリングする方法が必要になることもあります。私たちはこれをサブセット化で解決します。テーブルをフィルタリングするための SQL クエリを渡せば、Neosync が複雑な処理をすべて引き受けます。

Neosync の中核は、参照整合性を扱える能力です。リレーショナルデータベースを扱うときには、主キー、外部キー、一意制約、テーブル内およびテーブル間の循環依存、シーケンスなどがあります。

そのため、データを匿名化する場合でも合成データを生成する場合でも、それらの制約と関係を保持する方法が必要であり、そうでなければスキーマが壊れてしまいます。

Neosync はこれを透過的に処理します。外部キーが壊れている場合や、マッピングが必要な新しい列、NULL 不可の外部キーなど、制約に関する問題が発生した場合には通知し、対応して修正できるようにします。

動作の流れは次のとおりです。

  1. ソースおよびターゲットのデータベースを接続します。

  2. ジョブの種類を定義し、スケジュールに従って実行するかどうかを決めます。同期ジョブはソースからターゲットへデータを同期し、データ生成ジョブは最初から合成データを生成してターゲットへストリーミングします。

  3. 同期および変換するスキーマとテーブルを定義します。カラム単位でデータを匿名化したり合成データを生成したりする方法を定義するトランスフォーマーを選択するか、AI 生成の合成データを使ってターゲットデータベースのデータを生成できます。

  4. 最後に、サブセットを定義できます。これはターゲットに送信されるデータをフィルタリングする方法です。そのために、カスタム SQL クエリやフィルターを提供できます。

以上です! 設定したスケジュールに従ってジョブが実行されます。私たちは、データベース全体にわたるリトライ、バックオフ、参照整合性を処理します。また、API、CLI、GitHub Actions も提供しており、CI パイプラインで CI 用データベースを投入するために Neosync を利用できます。

Neosync は Go と Typescript で書かれたオープンソースプロジェクトで、Helm や Docker compose で実行できます。また、ホスティングプラットフォームも提供しており、十分に余裕のある無料枠を利用できます。

フィードバックをお待ちしており、いつでも貢献を歓迎します。

まだコメントはありません。

まだコメントはありません。