Database governance tools
背景:
分散システムアーキテクチャでは、ビジネストラフィックはエンドツーエンドで流れます。各リクエストは、ポータルゲートウェイから Web サーバーを経て、サービス間の呼び出し、さらにサービスのキャッシュや DB などのストレージへのアクセスに至るまで、多くのレイヤーの処理を経ます。
データベースはシステムにおいて非常に重要な要素です。そのため、安定性ガバナンスや開発・効率向上のシナリオにおいて、データベース関連のガバナンス機能はシステムに必要な能力です。以下では、マイクロサービスがデータベース層にアクセスする際の、データベースガバナンスにおける一般的なシナリオと機能をまとめます。
OpenSergo におけるデータベースガバナンスの概要:
この記事では、MSE サービスガバナンスが新たにリリースしたデータベースガバナンスツール、すなわち非侵入型のデータベースアクセスによる読み書き分離の実現について紹介します。
読み書き分離とは:
読み書き分離とは、データベースをマスターデータベースとスレーブデータベースに分割するアーキテクチャです。マスターデータベースがトランザクション系の追加、削除、更新操作を担当し、スレーブデータベースがクエリ操作を担当します。
なぜ読み書き分離が必要なのか:
安定性
ある大手顧客からのデータベースクエリリクエストで、数万行、数百 MB のデータが返され、データベースの CPU が一気に上限に達したことがあります。同様の問題に直面したことがある方もいらっしゃるのではないでしょうか。
パフォーマンス
ビジネス処理において、データベースへの読み取り操作が書き込み操作よりはるかに多く、データクエリ結果のリアルタイム性がビジネス上それほど高くない場合(たとえば、1 秒程度の遅延は許容できる場合)、システムパフォーマンスを最適化する際に読み書き分離の方式を検討できます。読み取り専用データベースがメインデータベースの負荷を肩代わりし、マイクロサービスアプリケーションのパフォーマンスを効果的に向上させます。
スケール成長
ビジネスの成長に伴い、一定規模に達すると拡張が必要になりますが、多くの場合、拡張の段階で行き詰まり、市場の変化に対応するスピードが大きく制限されます。データベースの拡張は最も困難です。現在、一般的なデータベース拡張方法は以下の通りです。
・垂直スケールアップ
・データベース・テーブルシャーディング
・読み書き分離
垂直スケールアップはサービスの中断が必要で、高可用性は他の方法に劣ります。データベース・テーブルシャーディングではパーティションキーの選定が難題となり、SQL の使用に多くの制約が生じます。同時に、ビジネス側の変換作業も非常に大きなワークロードとなります。比較的、読み書き分離はビジネスへの影響が最も小さく、拡張を実現する最も容易なソリューションです。経験上、ほとんどのアプリケーションの読み書き比率は 5:1 以上で、一部のシナリオでは 10:1 を超えることもあります。データベースへの書き込みリクエストが少数ながら、大量の読み取りリクエストがあるアプリケーションシナリオでは、単一のインスタンスでは読み取り負荷に耐えきれず、ビジネスに影響を及ぼす可能性があります。
以上より、データベースの読み書き分離方式は、Alibaba Cloud 上のほとんどの企業において、安定性ガバナンス、パフォーマンス向上、およびデータベース拡張のニーズを満たすことができます。
読み書き分離の一般的なソリューション:
現在、業界で普及している読み書き分離方式は、通常、前述のマスター・スレーブデータベースアーキテクチャに基づいています。読み書き分離の実装は、主に odp や mycat などのデータアクセスエージェント製品の導入により行われ、その読み書き分離機能を通じて読み書き分離を実現します。データアクセスエージェントを導入する利点は、ソースプログラムに変更を加えずに読み書き分離を実現できることです。欠点は、転送エージェントとしてミドルウェアの層が追加されるためパフォーマンスが低下することです。また、データアクセスエージェント自体がパフォーマンスボトルネックになりやすくなります。
ShardingSphere の読み書き分離方式 [1](ShardingSphere 公式ウェブサイトより):
ShardingSphere [2] の読み書き分離は、主にカーネルの関連機能に依存しています。これには解析エンジンとルーティングエンジンが含まれます。解析エンジンはユーザーの SQL を ShardingSphere が認識できる Statement 情報に変換します。ルーティングエンジンは SQL の読み書きタイプとトランザクションの状態に基づいて SQL をルーティングします。下図に示すように、ShardingSphere は読み取り操作と書き込み操作を識別し、異なるデータベースインスタンスにルーティングします。
MSE のデータベース読み書き分離機能:
MSE は動的なデータフローガバナンス方式を提供します。ビジネスコードを変更することなく、データベースの読み書き分離を実現できます。以下では、MySQL データストレージに基づく MSE の読み書き分離機能について説明します。
前提条件:
・アプリケーションが MSE に接続されていること
・デモアプリケーションのデプロイ
Alibaba Cloud のコンテナサービスにアプリケーション A、B、C の 3 つをデプロイし、MSE サービスガバナンス [3] に接続して、データベースガバナンス機能を備えたエージェントを追加します。
・RDS 読み取り専用インスタンスの作成 [4]
RDS の読み取り専用インスタンスを作成し、読み取り専用インスタンスを使用して大量のデータベース読み取り需要に対応し、アプリケーションのスループットを向上させます。
読み書き分離ルールの設定:
・データベースの読み書き分離機能を追加で有効化または設定するために、以下の環境変数を設定する必要があります。
・コンソールを通じて弱読み取りリクエストのルールを設定するか、特定のインターフェイスを弱読み取りリクエストとして指定できます。
上記の OpenSergo 標準ルールは、/getLocation インターフェイスのリクエストが弱読み取りリクエストであることを示しています。
データ量が大きく、遅延に対してそれほど敏感でないビジネスリクエストを弱タイプとして設定できます。
SQL インサイト:
前述の通り、わずか 2 ステップでデータベースの読み書き分離機能を実現できます。MSE データベースガバナンスのデータベース読み書き分離機能と SQL インサイトを組み合わせることで、RT が過度に高いクエリリクエストを素早く特定し、SQL がデータベースの安定性に与える影響をさらに分析するのに役立ちます。
アプリケーションとリソース API 次元で SQL リクエストのリアルタイムデータ(秒レベルまで詳細)を観察できます。同時に、MSE は SQL の TopN リストも提供しており、RT が高くクエリ結果のデータ量が大きい SQL 文を一目で確認できます。
まとめ:
この記事では、MSE が提供するデータベースガバナンス機能マトリックスにおける動的読み書き分離機能の導入について詳しく説明しました。MSE が提供する SQL インサイトとビジネスへの理解を組み合わせることで、インターフェイスリクエストを弱リクエストとして素早く特定し、分類できます。メインデータベースのパフォーマンスと安定性に大きな影響を与える読み取り操作を RDS の読み取り専用データベースに再割り当てすることで、メインデータベースの読み書き負荷を効果的に軽減し、マイクロサービスアプリケーションの安定性をさらに向上させられます。
アプリケーションの観点から、データベースへのアクセス・利用時における一般的なシナリオと対応するガバナンス機能を抽象化し、安定性ガバナンス、パフォーマンス最適化、効率向上に関する実践経験を整理しました。すべてのバックエンドアプリケーションにとって、データベースは最優先事項です。データベースガバナンス機能が、データベースサービスのより良い活用にお役立ていただければ幸いです。
最後に、サービスガバナンスの標準である OpenSergo について触れます。
Q:OpenSergo [5] とは
A:OpenSergo は、オープンで汎用的な、分散サービスアーキテクチャ向けのサービスガバナンス標準セットであり、フルリンクおよびヘテロジニアスエコシステムをカバーします。業界のサービスガバナンスシナリオと実践に基づき、サービスガバナンスの共通標準を形成しています。OpenSergo の最大の特徴は、統一された設定 / DSL / プロトコルでサービスガバナンスルールを定義し、多言語ヘテロジニアスアーキテクチャに対応してフルリンクのエコシステムカバレッジを実現することです。マイクロサービスの言語が Java、Go、Node.js のいずれであっても、標準マイクロサービスかメッシュアクセスかに関わらず、ゲートウェイからマイクロサービス、データベースからキャッシュ、サービス登録・発見から設定に至るまで、開発者は同じ OpenSergo CRD 標準設定を通じて各層を統一的にガバナンスおよびコントロールできます。さまざまなフレームワークと言語の差異を気にする必要がなく、ヘテロジニアスかつフルリンクのサービスガバナンスとコントロールの複雑さを軽減します。
分散システムアーキテクチャでは、ビジネストラフィックはエンドツーエンドで流れます。各リクエストは、ポータルゲートウェイから Web サーバーを経て、サービス間の呼び出し、さらにサービスのキャッシュや DB などのストレージへのアクセスに至るまで、多くのレイヤーの処理を経ます。
データベースはシステムにおいて非常に重要な要素です。そのため、安定性ガバナンスや開発・効率向上のシナリオにおいて、データベース関連のガバナンス機能はシステムに必要な能力です。以下では、マイクロサービスがデータベース層にアクセスする際の、データベースガバナンスにおける一般的なシナリオと機能をまとめます。
OpenSergo におけるデータベースガバナンスの概要:
この記事では、MSE サービスガバナンスが新たにリリースしたデータベースガバナンスツール、すなわち非侵入型のデータベースアクセスによる読み書き分離の実現について紹介します。
読み書き分離とは:
読み書き分離とは、データベースをマスターデータベースとスレーブデータベースに分割するアーキテクチャです。マスターデータベースがトランザクション系の追加、削除、更新操作を担当し、スレーブデータベースがクエリ操作を担当します。
なぜ読み書き分離が必要なのか:
安定性
ある大手顧客からのデータベースクエリリクエストで、数万行、数百 MB のデータが返され、データベースの CPU が一気に上限に達したことがあります。同様の問題に直面したことがある方もいらっしゃるのではないでしょうか。
パフォーマンス
ビジネス処理において、データベースへの読み取り操作が書き込み操作よりはるかに多く、データクエリ結果のリアルタイム性がビジネス上それほど高くない場合(たとえば、1 秒程度の遅延は許容できる場合)、システムパフォーマンスを最適化する際に読み書き分離の方式を検討できます。読み取り専用データベースがメインデータベースの負荷を肩代わりし、マイクロサービスアプリケーションのパフォーマンスを効果的に向上させます。
スケール成長
ビジネスの成長に伴い、一定規模に達すると拡張が必要になりますが、多くの場合、拡張の段階で行き詰まり、市場の変化に対応するスピードが大きく制限されます。データベースの拡張は最も困難です。現在、一般的なデータベース拡張方法は以下の通りです。
・垂直スケールアップ
・データベース・テーブルシャーディング
・読み書き分離
垂直スケールアップはサービスの中断が必要で、高可用性は他の方法に劣ります。データベース・テーブルシャーディングではパーティションキーの選定が難題となり、SQL の使用に多くの制約が生じます。同時に、ビジネス側の変換作業も非常に大きなワークロードとなります。比較的、読み書き分離はビジネスへの影響が最も小さく、拡張を実現する最も容易なソリューションです。経験上、ほとんどのアプリケーションの読み書き比率は 5:1 以上で、一部のシナリオでは 10:1 を超えることもあります。データベースへの書き込みリクエストが少数ながら、大量の読み取りリクエストがあるアプリケーションシナリオでは、単一のインスタンスでは読み取り負荷に耐えきれず、ビジネスに影響を及ぼす可能性があります。
以上より、データベースの読み書き分離方式は、Alibaba Cloud 上のほとんどの企業において、安定性ガバナンス、パフォーマンス向上、およびデータベース拡張のニーズを満たすことができます。
読み書き分離の一般的なソリューション:
現在、業界で普及している読み書き分離方式は、通常、前述のマスター・スレーブデータベースアーキテクチャに基づいています。読み書き分離の実装は、主に odp や mycat などのデータアクセスエージェント製品の導入により行われ、その読み書き分離機能を通じて読み書き分離を実現します。データアクセスエージェントを導入する利点は、ソースプログラムに変更を加えずに読み書き分離を実現できることです。欠点は、転送エージェントとしてミドルウェアの層が追加されるためパフォーマンスが低下することです。また、データアクセスエージェント自体がパフォーマンスボトルネックになりやすくなります。
ShardingSphere の読み書き分離方式 [1](ShardingSphere 公式ウェブサイトより):
ShardingSphere [2] の読み書き分離は、主にカーネルの関連機能に依存しています。これには解析エンジンとルーティングエンジンが含まれます。解析エンジンはユーザーの SQL を ShardingSphere が認識できる Statement 情報に変換します。ルーティングエンジンは SQL の読み書きタイプとトランザクションの状態に基づいて SQL をルーティングします。下図に示すように、ShardingSphere は読み取り操作と書き込み操作を識別し、異なるデータベースインスタンスにルーティングします。
MSE のデータベース読み書き分離機能:
MSE は動的なデータフローガバナンス方式を提供します。ビジネスコードを変更することなく、データベースの読み書き分離を実現できます。以下では、MySQL データストレージに基づく MSE の読み書き分離機能について説明します。
前提条件:
・アプリケーションが MSE に接続されていること
・デモアプリケーションのデプロイ
Alibaba Cloud のコンテナサービスにアプリケーション A、B、C の 3 つをデプロイし、MSE サービスガバナンス [3] に接続して、データベースガバナンス機能を備えたエージェントを追加します。
・RDS 読み取り専用インスタンスの作成 [4]
RDS の読み取り専用インスタンスを作成し、読み取り専用インスタンスを使用して大量のデータベース読み取り需要に対応し、アプリケーションのスループットを向上させます。
読み書き分離ルールの設定:
・データベースの読み書き分離機能を追加で有効化または設定するために、以下の環境変数を設定する必要があります。
・コンソールを通じて弱読み取りリクエストのルールを設定するか、特定のインターフェイスを弱読み取りリクエストとして指定できます。
上記の OpenSergo 標準ルールは、/getLocation インターフェイスのリクエストが弱読み取りリクエストであることを示しています。
データ量が大きく、遅延に対してそれほど敏感でないビジネスリクエストを弱タイプとして設定できます。
SQL インサイト:
前述の通り、わずか 2 ステップでデータベースの読み書き分離機能を実現できます。MSE データベースガバナンスのデータベース読み書き分離機能と SQL インサイトを組み合わせることで、RT が過度に高いクエリリクエストを素早く特定し、SQL がデータベースの安定性に与える影響をさらに分析するのに役立ちます。
アプリケーションとリソース API 次元で SQL リクエストのリアルタイムデータ(秒レベルまで詳細)を観察できます。同時に、MSE は SQL の TopN リストも提供しており、RT が高くクエリ結果のデータ量が大きい SQL 文を一目で確認できます。
まとめ:
この記事では、MSE が提供するデータベースガバナンス機能マトリックスにおける動的読み書き分離機能の導入について詳しく説明しました。MSE が提供する SQL インサイトとビジネスへの理解を組み合わせることで、インターフェイスリクエストを弱リクエストとして素早く特定し、分類できます。メインデータベースのパフォーマンスと安定性に大きな影響を与える読み取り操作を RDS の読み取り専用データベースに再割り当てすることで、メインデータベースの読み書き負荷を効果的に軽減し、マイクロサービスアプリケーションの安定性をさらに向上させられます。
アプリケーションの観点から、データベースへのアクセス・利用時における一般的なシナリオと対応するガバナンス機能を抽象化し、安定性ガバナンス、パフォーマンス最適化、効率向上に関する実践経験を整理しました。すべてのバックエンドアプリケーションにとって、データベースは最優先事項です。データベースガバナンス機能が、データベースサービスのより良い活用にお役立ていただければ幸いです。
最後に、サービスガバナンスの標準である OpenSergo について触れます。
Q:OpenSergo [5] とは
A:OpenSergo は、オープンで汎用的な、分散サービスアーキテクチャ向けのサービスガバナンス標準セットであり、フルリンクおよびヘテロジニアスエコシステムをカバーします。業界のサービスガバナンスシナリオと実践に基づき、サービスガバナンスの共通標準を形成しています。OpenSergo の最大の特徴は、統一された設定 / DSL / プロトコルでサービスガバナンスルールを定義し、多言語ヘテロジニアスアーキテクチャに対応してフルリンクのエコシステムカバレッジを実現することです。マイクロサービスの言語が Java、Go、Node.js のいずれであっても、標準マイクロサービスかメッシュアクセスかに関わらず、ゲートウェイからマイクロサービス、データベースからキャッシュ、サービス登録・発見から設定に至るまで、開発者は同じ OpenSergo CRD 標準設定を通じて各層を統一的にガバナンスおよびコントロールできます。さまざまなフレームワークと言語の差異を気にする必要がなく、ヘテロジニアスかつフルリンクのサービスガバナンスとコントロールの複雑さを軽減します。
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
Short Message Service(SMS) & Mail Service
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00
