ソリューション領域 01 / 06

アーキテクチャと設計

アーキテクチャ

モダンな抽象化設計パターンとマイクロサービス・アーキテクチャを活用した統合管理アーキテクチャ。データサービスを稼働・管理するための、最も柔軟で堅牢な基盤を提供します。

UPM for Enterpriseアーキテクチャ
セクション3
分で読めます~9

アーキテクチャの概要

UPM は、古典的な「ハブ・エージェント」アーキテクチャパターンを採用しており、管理プラットフォーム層と実行エンジン層という 2 つの主要なレイヤーで構成されています。このアーキテクチャは、強力でモジュール化された拡張性の高いプラットフォームを維持しながら、Kubernetes のマルチクラスタ・オーケストレーションを効果的にサポートします。UPM は分散型の設計や命令型のアーキテクチャから脱却し、Kubernetes ネイティブの「ハブ・kubelet」アーキテクチャと整合する「ハブ・エージェント」パターンを採用しています。この設計では、管理プラットフォーム層が「ハブ」として機能し、管理対象の各クラスタが「エージェント」として動作します。UPM の 2 つのコアコンポーネントを見ていきましょう:

  • UPM Platform:中央のコントロールプラットフォームとして機能し、外部 API インターフェースを提供するとともに、ワークフローを通じて Kubernetes API リソースオブジェクト(CR)を管理します。マイクロサービス・アーキテクチャ上に構築されており、さまざまなデータベースやミドルウェアの運用要件に合わせて効率的にスケールします。

  • UPM Engine:実行エンジンとして機能し、Kubernetes Operator フレームワークを用いて構築されています。この Kubernetes ベースの拡張スイートは、主にステートフルサービスの自動化と、データアプリケーションの高度な運用自動化に焦点を当てています。独自開発の 2 つの Operator で構成され、多様なデータベースの種類やマルチデータベース・クラスタ構成に対応できる汎用的なワークロード設計を備えています。

UPM アーキテクチャ図

このアーキテクチャの利点により、マルチクラスタの運用を次の 2 つの側面に切り分けることができます:

  1. 計算/意思決定
  2. 実行

この分離により、UPM Engine が実際のクラスタでの実行タスクを担い、UPM Platform はワークフローを通じたタスクのオーケストレーションとインターフェース管理に専念できます。UPM Engine は直接実行するのではなく、CRD を通じてクラスタの状態を宣言的に維持します。UPM Platform は Kubernetes から CRD のステータスを能動的に監視し、それに応じて後続のタスクをオーケストレーションします。

この設計により、UPM Platform の運用負荷は次の点で大幅に軽減されます:

  • Kubernetes クラスタからのイベントの洪水を処理する必要がなくなる
  • 個々の Kubernetes クラスタへの直接リクエスト量が減る

たとえるなら、kubelet なしで 5,000 ノードの Kubernetes クラスタを管理し、コントロールプレーンがコンテナデーモンを直接操作する状況を想像してください。そのような集中制御は極めて困難です。UPM は実行を個々のエージェントに分散させることでこのスケーラビリティの課題を解決し、UPM Platform が複数のクラスタを効率的に管理できるようにしています。


UPM Platform のアーキテクチャ

UPM Platform は中核となるコントロールセンターとして、外部 API インターフェースの提供と実行ワークフローの管理を担います。マイクロサービス・アーキテクチャ上に構築され、卓越したスケーラビリティと柔軟性を備えています。

アーキテクチャ

UPM Platform アーキテクチャ図

UPM Platform の概要

UPM Platform は中核となるコントロールセンターとして、外部 API インターフェースの提供と実行ワークフローの管理を担います。マイクロサービス・アーキテクチャ上に構築され、卓越したスケーラビリティと柔軟性を備えています。

コアコンポーネント

UPM Platform は、次の 3 つの主要コンポーネントで構成されています:

  • UPM UI:直感的な Web ベースのダッシュボードを通じて、管理者に包括的な制御・監視機能を提供する統合管理インターフェース。

  • UPM API-Server:SpringCloud マイクロサービス・フレームワーク上に構築された管理の中核。次の機能を提供します:

    • 管理操作のための RESTful API エンドポイント
    • MySQL ベースのデータ永続化
    • クエリ性能を最適化する Redis によるキャッシュ
  • Helix:データベースやミドルウェアサービスの機能を拡張する、拡張可能なプラットフォームコンポーネント。現在は MySQL のユーザー管理とデータベース管理機能をサポートしています。

マイクロサービス・アーキテクチャ

UPM API-Server は、管理の中核として極めて重要な役割を担っています。そのマイクロサービス・アーキテクチャは、現在の運用要件と、オープンソースコミュニティから生まれる新たなサービス管理ニーズの両方を満たすよう設計されています。

アーキテクチャ上の主なメリット:

  • 機能を、焦点の明確な凝集度の高いサービスに分割
  • サービス間の疎結合
  • サービスごとに独立したデータベース
  • API ベースの通信
  • サービス単位でのスケーラビリティ
  • 開発、デプロイ、テスト、スケーリングをそれぞれ独立して実施可能

マイクロサービス・モジュール一覧

項番名称説明
1Gateway API外部からのリクエストを受け付け、対応するマイクロサービス・モジュールへルーティングします
2Authユーザー認証と権限管理を担います
3Resourceプロジェクト、Kubernetes クラスタ、ノード、ストレージクラス、ソフトウェアなどのシステムリソースを管理します
4Userユーザー情報の管理と操作を担います。
5OperatorLogシステムの操作ログを記録し、システム操作を追跡できるようにします。
6MySQL serviceMySQL データベースの運用・保守ワークフローの制御と管理機能を包括的に提供します。
7Redis serviceRedis キャッシュの運用・保守ワークフローの制御と管理機能を包括的に提供します。
Redis-Cluster serviceRedis クラスタキャッシュの運用・保守ワークフローの制御と管理機能を包括的に提供します。
8Kafka serviceKafka イベントストリームの運用・保守ワークフローの制御と管理機能を包括的に提供します。
9Zookeeper serviceZookeeper サービスディスカバリの運用・保守ワークフローの制御と管理機能を包括的に提供します。
10Elasticsearch serviceElasticsearch 検索エンジンの運用ワークフローの制御と管理機能を包括的に提供します。

UPM Engine の概要

UPM Engine は実行層として機能し、Kubernetes Operator フレームワークを用いて構築されています。この Kubernetes ベースの拡張スイートは、ステートフルサービスの自動化と、データアプリケーションの高度な運用自動化に特化しています。

アーキテクチャ

UPM Engine アーキテクチャ図

コアコンポーネント

UPM Engine は、次の 2 つの主要コンポーネントで構成されています:

  • Unit Operator(コードネーム:Tesseract Cube):データベースやミドルウェアのステートフルサービスを次の点で強化する汎用ワークロード Operator:

    • 統合されたワークロード管理(Unit と UnitSet)
    • テンプレートベースのサービス定義
    • 特定のサービス種別やバージョンに合わせた拡張可能な構成
  • Compose Operator(コードネーム:Kauntlet):カスタムリソース定義(CRD)を通じて複雑な運用機能を拡張する、高度な運用のための Operator。

Operator の設計思想

私たちの Operator 設計は、ロボティクスやオートメーションにおける制御ループの概念に基づいています。Kubernetes 環境では:

  • コントローラーがクラスタの状態を継続的に監視する
  • システムは絶え間ない変化をスムーズに処理する
  • 複数のコントローラーが、クラスタ状態の特定の側面をそれぞれ管理する
  • 複雑に相互接続されたコントローラーよりも、シンプルで役割の明確なコントローラーのほうが高い信頼性をもたらす

Unit Operator の詳細

Unit Operator(コードネーム:Tesseract Cube)は、次の仕組みによってデータベースとミドルウェアのワークロード管理を統合します:

Unit の管理

Unit は完全なサービスインスタンスを表し、次の要素を含みます:

  • Pod の定義
  • Service の構成
  • 永続ストレージ
  • ライフサイクル管理
Unit 管理アーキテクチャ

UnitSet の運用

UnitSet はステートフルなデータベースインスタンスの集合を管理し、次の機能を提供します:

  • デプロイとスケーリング
  • 永続ストレージの管理
  • 構成のテンプレート化
  • セキュリティ機能(暗号化、認証)
  • ローリングアップデートのポリシー
UnitSet 管理アーキテクチャ

Compose Operator の機能

Compose Operator(コードネーム:Kauntlet)は、専用の CRD を通じて Kubernetes のデータベース管理機能を拡張します:

サポートする機能

  1. MySQL レプリケーション管理

    • リーダー/フォロワー・トポロジーの管理
    • 自動フェイルオーバー
    • 読み書き分離
    • レプリケーションの監視
  2. Redis レプリケーション管理

    • リーダー/フォロワー構成
    • Sentinel アーキテクチャのサポート
    • 自動フェイルオーバー
    • 状態の監視
  3. Redis Cluster 管理

    • クラスタ構成の自動化
    • 動的なスロット割り当て
    • 高可用性機能
    • パフォーマンスの最適化
  4. ProxySQL の同期

    • トポロジーの監視
    • MySQL サーバーの構成
    • ユーザーの同期
    • ロードバランシング
    • フェイルオーバー管理

Compose Operator は、高可用性と運用効率を確保しながら、データベースクラスタの管理を大幅に簡素化します。拡張可能な設計により、特定の運用要件に合わせた独自の機能を追加することもできます。