Bytebaseで実現する、開発者のための安全なSQL実行基盤と円滑な監査対応
.png)
株式会社LayerX / Sadayoshi Tada
メンバー / SRE
利用プラン | 利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|---|
エンタープライズプラン | Rollout Policy、SQL Editor、Custom Role、Audit Log、Single Sign-On | 51名〜100名 | 2024年5月 | B to B |
利用プラン | エンタープライズプラン |
---|---|
利用機能 | Rollout Policy、SQL Editor、Custom Role、Audit Log、Single Sign-On |
ツールの利用規模 | 51名〜100名 |
ツールの利用開始時期 | 2024年5月 |
事業形態 | B to B |
アーキテクチャ
アーキテクチャの意図・工夫
- 本番データベースを閲覧や操作を行うメンバーを限定するためにBytebaseの前段に設置したALBのOIDC認証と、BytebaseのSingle Sign-OnでMicrosoft Entra IDの特定グループのみアクセスできるようにしたこと
- 本番データベースを複製して本番オペレーションの前に事前確認を行う、テスト環境を構築したこと
- データベースの複製および削除スケジューラーの作成は GitHub Actionsから実行している
- 複製したデータベースは時限式でStep Functionsで削除してコストに影響が少ない状態にしたこと
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
バクラク事業部では、踏み台サーバのポートフォワード経由で本番データベース(Amazon Aurora MySQL)に接続し、開発者のペアオペレーションにてSQLクライアントでデータ変更を行っていました。
上記のオペレーションで以下の課題を感じておりました。
- 事前に開発者同士で相互レビューを行っているが、当該オペレーションは承認や記録が残らないままデータ変更をできてしまうこと
- データ変更する際は開発者がSQLクライアントで直接本番データを変更していたため、手動オペレーションによる誤った本番データ操作の危険性を孕んでいたこと
これらの課題からお客様の重要なデータをより安全に扱うため、新たな基盤を導入していくことに決めました。
どのような状態を目指していたか
本番データベースに対するデータ変更のレビュー及び承認を行える状態にすることと、既存の開発スピードを可能な限り落とさないような運用フローを作ることを目指しました。
比較検討したサービス
- Flyway
- SQLの承認及び実行のシステムを自作する
比較した軸
- 実行予定のSQLはGitHubに置かなくても実行できること
- SQLにはバクラクのお客様情報が入りうるため、GitHubに置いたり、GitHubに置いてローカルへダウンロードするのを防ぐため
- SQLのレビューと実行を1つのシステム上で完結できること
- エンジニアにはデータベースへのWRITE権限を付与していたが、SQLのレビューと実行を一気通貫でできるのであれば、その権限が不要になること
- 1つのシステム上で完結すれば、オペレーション上例外的な操作が発生しにくいこと
選定理由
- SQLのレビューおよび実行をBytebaseで一気通貫で実行できること
- Self-Hostできて、実行するSQLをGitHubに置かなくても良いこと
- AWSマーケットプレイスで提供されており、料金・請求の管理はしやすいこと
導入の成果
改善したかった課題はどれくらい解決されたか
導入前に抱えていた課題は全て解決し、開発者からも安心してオペレーションができるようになったとフィードバックをもらえています。
どのような成果が得られたか
- エンジニアからデータベースへのWRITE権限を外し、データ変更時の承認や承認した記録が残ること
- テスト環境を作ったことで、本番データベースを複製して本番実行予定のSQLを試すだけでなく、データベーススキーママイグレーションの影響確認やパフォーマンス改善の検証ができるようになったこと
- Bytebaseから出力される各種ログを利用者が取得できるため、監査手続を円滑にできていること
- これらのログを証跡として提出し、2025年4月にバクラク事業部ではSOC1 Type2を取得しています。
導入時の苦労・悩み
- 導入検討時Bytebaseの国内事例はなく、本番環境への展開まで入念な検証と動作確認を行いました。
- 開発環境やステージング環境など環境別でシステムデータベースに接続可能なBytebaseを構築し、プロダクトチームに触ってもらい、フィードバックをもらうSlackのチャンネルを用意しました。
- 併せてSlackのキーワードを設定し、Bytebaseに関する疑問や不安なワードを見かけたら可能な限り素早くサポートに入るようにしました。
- 本番展開後はこれまでのオペレーションと異なる新しいオペレーションをプロダクトチームに浸透させるために、ペアオペレーションを行って徐々に展開しました。
- 併せてBytebase専用のドキュメントを集めた、Notionページを用意して情報を一元的に集約しました。
導入に向けた社内への説明
上長・チームへの説明
バクラク事業部では技術的な意思決定時にArchitecture Dicision Record(以降、ADRと呼称します)を運用しており、ADRの記載と検証結果をまとめチームや上長に説明を行いました。Bytebase導入によって抱えていた課題を解決できることや以下の観点の説明を行い、導入への理解を得ることができました。
- SQLのレビューおよび実行をBytebaseで一気通貫で実行できること
- データ変更のSQLにはお客様の情報が含まれているため、自分たちが管理するシステムの外に出したくなかったが、BytebaseはSelf-Hostできて、実行するSQLをGitHubに置く必要がないこと
- 比較したサービスのメリット・デメリット
- Bytebase導入におけるコスト
活用方法
プロダクト開発エンジニア、SRE、QAEが以下の用途でBytebaseを活用しています。
- アドホックなDDLやDML実行
- お客様からの問い合わせ対応時のデータ確認
- パフォーマンス改善検証(ex. 試しにインデックスを貼ってクエリ速度が改善するかの調査)
- データベーススキーママイグレーションの対象テーブルレコード数の確認や実行時間の計測
- バクラク事業部ではデータベースのスキーママイグレーションにおいて一定の条件下でプロダクトチームからSREにレビュー依頼をもらうようにしています。
- 詳細はこちらの記事を参照ください。
- バクラク事業部ではデータベースのスキーママイグレーションにおいて一定の条件下でプロダクトチームからSREにレビュー依頼をもらうようにしています。
よく使う機能
- IssueベースのDDL、DML実行
- 本番環境におけるアドホックなDDLやDML実行で使用しています。
- SQL Editorのデータベースデータ閲覧
- 本番データの閲覧で使用しています。
- Audit Log
- ユーザーに対してどんな権限を付与したかの操作確認で利用しています。
ツールの良い点
- SQLのレビューと実行を一気通貫で実行できること
- DDLやDMLのレビューと実行をロールで制御できること
- SQLの実行は変更申請を上げたメンバーに限定し、承認は特定の権限を持つメンバーしかできないようにすることが可能
- 利用者がAudit Logやデータ変更時の承認記録を取得できるため、監査手続きを円滑に対応するための機能提供がされていること
ツールの課題点
- トランザクションを貼ったアドホックなSQLの実行がサポートされていないこと
- バクラク事業部では実行予定のSQLをテスト環境で試すことができるので、その確認をもって実行をサポートしています。
ツールを検討されている方へ
Bytebaseには無料のプランがあり検証することは容易に始めることができること、Bytebase社に依頼してトライアルを踏まえた検討も可能なので、利用してみたい機能に併せて試してみてもらいたいです。
今後の展望
- SREが手動オペレーションを行っている操作(ex. 新規に追加された論理データベースをプロジェクトにアサインする作業等)が残っているため、その操作を自動化してオペレーション負荷を減らすこと
- 検証を行っているが、Bytebaseのバージョンアップを行ってSCIM連携ができるようになったため、運用に組み込んでユーザー管理を省力化すること
.png)
株式会社LayerX / Sadayoshi Tada
メンバー / SRE
よく見られているレビュー
.png)
株式会社LayerX / Sadayoshi Tada
メンバー / SRE
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法