Takamol: Oracle Cloudに政府人事プラットフォーム用のKubernetesとマイクロサービスを導入
Riyadhに拠点を置くTakamol Holdingは、労働年齢の市民を政府と民間部門の雇用主にマッチングできるように、ハイブリッド・インフラストラクチャでジョブ・トレーニング、スキルアップ、人材開発サービス・プラットフォームを実行し、クラウド環境ではOCI Kubernetes Engine(OKE)で複数のKubernetesクラスタが実行されます。
2013年にサウジアラビア人事社会開発省の部門として設立されたタカモールは、王国全体で人的資源プログラムの近代化にほぼ10年間費やしてきました。
Takamolのオンプレミス・インフラストラクチャは運用とメンテナンスにコストがかかりすぎることが判明したため、Takamolは、Oracle Cloud Infrastructure (OCI)で実行されているコンテナベースのマイクロサービス・アーキテクチャを使用して、新しい労務および経済開発プラットフォームを立ち上げることにしました。今日、何十万人もの人々がタカモルのプラットフォームを毎日使用し、得意な雇用を探し、適用し、準備することができます。最近、Takamolは、機関と個人の両方の寄付者が使用する寄付プラットフォームを移行しました。
JeddahのOracle Cloudリージョンでは、Takamolのプラットフォームは5000人の同時ユーザーとプロセスを1分当たり最大10,000リクエストまでサポートしています。Takamolは、OCIのマネージド・サービスを使用して、クラウド・ネイティブ・プラットフォームへの更新を迅速かつダウンタイムなしで自動化しています。OCIテナンシでは、Takamolはピーク時に迅速にスケールアップし、オフピーク時にスケールダウンできるため、可能な限り低いコストでジャストインタイムのサポートを提供します。
OCIでのTakamolのクラウド・ネイティブ・デプロイメントのハイライトは次のとおりです。
- OCI Kubernetes Engineを使用したコンテナベースのアーキテクチャ
- ピーク時の高需要を満たす水平ポッド自動スケーリング(HPA)
- ゼロトラスト・ネットワーク・アクセス
- NGINX Webアプリケーション・ファイアウォール
- ステートフル・コンポーネントの場合、TakamolはデータベースにはPostgreSQL、メッセージ・キューイングにはRabbitMQを使用します。
アーキテクチャ
Takamol Holdingのエンジニアは、ゼロトラスト・ネットワーク・アクセス・ツールに接続し、仮想クラウド・ネットワーク(VCN)にアクセスする前に独自のシングル・サインオンを介して認証されます。
プラットフォーム・ユーザーは、3つの異なるフォルト・ドメインにわたってユーザー・リクエストを管理するOracle Cloud Infrastructure Load Balancingを介してルーティングされます。ユーザー・リクエストはOracle Cloud Infrastructure Kubernetes Engine (OKE)イングレス・コントローラに送信され、最終宛先にルーティングされる前に検査されます。
Kubernetesクラスタ内では、Takamolは複数のオープンソース・ツールを使用して、NGINX、リバース・プロキシ・サーバー、ロード・バランサ、APIゲートウェイなどのユーザー・リクエストを処理します。これらのサービスは、ピーク時間帯の高い需要を満たすために、水平ポッド自動スケーリング(HPA)を使用してKubernetesクラスタ全体でスケーリングされます。また、Takamolはレイヤー7アプリを使用してサービス拒否(DoS)アプリを保護し、アプリはF5 NGINXによってWAFを保護します。Takamolのアプリケーションのほとんどは、12のファクタ・モデルに従ってステートレスであるため、アプリケーション内キャッシュやストレージは必要ありません。かわりに、Takamolのアプリケーションは外部ストレージ・サービスを使用して、Kubernetesクラスタ内で簡単にデプロイ、自動スケーリングおよび管理できます。
また、Takamolは、Kubernetes用の宣言的なGitOpsの継続的な配信ツールであるArgo CDを使用しています。Argo CDを使用することで、Takamolはクラスタに直接アクセスすることなく、ワークロードを宣言的にデプロイできるため、クラスタをプライベート・サブネットにデプロイできます。開発者がアプリケーションを更新するのではなく、Argo CDはGitlabリポジトリから読み取り、クラスタを更新するためのGitlab直接アクセスを提供することなく、新しいサービスをデプロイします。ステートフル・コンポーネントの場合、TakamolはそのデータベースにPostgreSQLを使用し、メッセージ・キューイングにRabbitMQを使用します。
ロード・バランサ、Kubernetesクラスタおよびオープンソース・ツールはそれぞれ別々のサブネットにあります。これらは相互に分離されていますが、通信ポートを介して情報を送受信できます。Takamolは、Oracle VCNフロー・ログとSEIMセキュリティ・オペレーション・センター(SOC)を使用して、追加のツールをインストールすることなく、様々なサブネット間の通信を仮想化できます。今後数か月、Takamolは、ネットワーク・ログをSEIMソリューションに配信するために、Oracle Cloud Infrastructure Functionsを通じてVCNフロー・ログを送信する予定です。
- Takamolのアーキテクチャの約90%は、オープンソースのOracle Cloud Infrastructure Terraform ProviderのInfrastructure as Code (IaC)を使用して構築されており、独自の社内組込みモジュールを備えています。このアプローチにより、インフラストラクチャのデプロイと管理に必要な人的労力が軽減され、人的エラーのリスクを大幅に軽減して、より迅速な変更が可能になります。
- Takamolの開発、テストおよび本番前環境のすべてのサービスは、本番環境としてレプリケートされます。これらの環境はいずれも相互接続されていません。これにより、環境間の整合性が確保されます。
- データベースのバックアップは、Oracle Cloud Infrastructure Block Volumesにバックアップをアーカイブおよび格納するpgbackrestを使用して行われます。これにより、Point-in-Time (PIT)リカバリをサポートしながら、データベースの長期記憶域が可能になります。
- Oracle Cloud Infrastructure Object Storageは、マイクロサービス、メトリック、OKEログおよびGitLabランナーによってデータをキャッシュするために使用されます。また、PostgreSQLデータベースの費用対効果の高い長期のデータベース・バックアップも提供します。
- Oracle Cloud Infrastructure RegistryおよびOracle Cloud Infrastructure Identity and Access Managementポリシーは、Takamolがリポジトリへのユーザー・アクセスを制御するのに役立ちます。以前は、OCIほどきめ細かな制御を提供していないDocker Hubを使用していました。さらに、OCIレジストリでは、Takamolは組込みのセキュリティ・スキャン機能を使用します。
- Takamolでは、ログに時系列データベースであるLoki、メトリック収集にPrometheus、トレースにTempo、可視化にGrafanaを使用しています。これらはすべて単一のOKEクラスタに一元化されています。
次の図は、このリファレンス・アーキテクチャを示しています。
将来の状態とロードマップのために、Takamolは、より多くのサービスをマネージド・サービスやクラウドネイティブ・サービスに移行することを目指しています。
- NeomのOracle Cloudリージョンからディザスタ・リカバリ・サイトを実行します。
- OpenSearchを使用してOracle Cloud Infrastructure Searchを利用すると、分散型でフルマネージド型のメンテナンスフリーの全文検索エンジンを使用できます。
- データベース・ワークロードにOracle Autonomous Data Warehouseを活用します。
- Oracle Cloud Infrastructure Vulnerability Scanning Serviceを使用して、特にdockerイメージで脆弱性をスキャンします。
このアーキテクチャには、次のコンポーネントがあります。
- Tenancy
テナンシは、Oracle Cloud Infrastructureのサインアップ時にOracle Cloud内でOracleによって設定される、セキュアで分離されたパーティションです。テナンシ内のOracle Cloudでリソースを作成、編成および管理できます。テナンシは、会社または組織と同義です。通常、会社は1つのテナンシを持ち、そのテナンシ内の組織構造を反映します。通常、1つのテナンシは1つのサブスクリプションに関連付けられ、1つのサブスクリプションには通常、1つのテナンシのみが含まれます。
- リージョン
Oracle Cloud Infrastructureリージョンとは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。リージョンは他のリージョンから独立し、長距離の場合は(複数の国または大陸にまたがって)分離できます。
- コンパートメント
コンパートメントは、Oracle Cloud Infrastructureテナンシ内のリージョン間論理パーティションです。Oracle Cloudリソースの使用割当てを編成、制御および設定するには、コンパートメントを使用します。特定のコンパートメントでは、アクセスを制御し、リソースの権限を設定するポリシーを定義します。
- 可用性ドメイン
可用性ドメインは、リージョン内の独立したスタンドアロン・データ・センターです。各可用性ドメイン内の物理リソースは、他の可用性ドメイン内のリソースから分離されているため、フォルト・トレランスが提供されます。可用性ドメインどうしは、電力や冷却、内部可用性ドメイン・ネットワークなどのインフラを共有しません。そのため、ある可用性ドメインでの障害は、リージョン内の他の可用性ドメインには影響しません。
- フォルト・ドメイン
フォルト・ドメインは、可用性ドメイン内のハードウェアおよびインフラストラクチャのグループです。各アベイラビリティ・ドメインに3つのフォルト・ドメインがあり、電源とハードウェアは独立しています。複数のフォルト・ドメインにリソースを分散する場合、アプリケーションは、物理サーバーの障害、システム・メンテナンスおよびフォルト・ドメイン内の電源障害を許容できます。
- 仮想クラウド・ネットワーク(VCN)およびサブネット
VCNは、Oracle Cloud Infrastructureリージョンで設定する、カスタマイズ可能なソフトウェア定義のネットワークです。従来のデータ・センター・ネットワークと同様に、VCNsではネットワーク環境を制御できます。VCNには重複しない複数のCIDRブロックを含めることができ、VCNの作成後にそれらを変更できます。VCNをサブネットにセグメント化して、そのスコープをリージョンまたは可用性ドメインに設定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックにもプライベートにもできます。
- セキュリティ・リスト
サブネットごとに、サブネット内外で許可する必要があるトラフィックのソース、宛先およびタイプを指定するセキュリティ・ルールを作成できます。
- ルート表
仮想ルート表には、通常ゲートウェイを介して、サブネットからVCN外部の宛先にトラフィックをルーティングするルールが含まれます。
- インターネット・ゲートウェイ
インターネット・ゲートウェイは、VCN内のパブリック・サブネットとパブリック・インターネット間のトラフィックを許可します。
- サービス・ゲートウェイ
サービス・ゲートウェイは、VCNからOracle Cloud Infrastructure Object Storageなどの他のサービスへのアクセスを提供します。The traffic from the VCN to the Oracle service travels over the Oracle network fabric and does not traverse the internet.
- ロード・バランサ
Oracle Cloud Infrastructure Load Balancingサービスは、単一のエントリ・ポイントからバックエンドの複数のサーバーへの自動トラフィック分散を提供します。
- Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes EngineまたはOKE)は、コンテナ化されたアプリケーションをクラウドにデプロイするために使用できる、完全に管理されたスケーラブルで可用性の高いサービスです。アプリケーションで必要なコンピュート・リソースを指定すると、KubernetesエンジンがそれらをOracle Cloud Infrastructureの既存のテナンシにプロビジョニングします。OKEは、Kubernetesを使用して、ホストのクラスタにわたるコンテナ化されたアプリケーションのデプロイメント、スケーリングおよび管理を自動化します。
- コンピュート
Oracle Cloud Infrastructure Computeを使用すると、クラウド内のコンピュート・ホストをプロビジョニングおよび管理できます。CPU、メモリー、ネットワーク帯域幅およびストレージのリソース要件を満たすシェイプを使用してコンピュート・インスタンスを起動できます。コンピュート・インスタンスを作成した後は、セキュアにアクセスし、再起動、ボリュームのアタッチおよびデタッチを行い、不要になったらそれを終了します。
- サービス・コネクタ
Oracle Cloud Infrastructure Service Connector Hubは、OCIのサービス間のデータ移動を調整するクラウド・メッセージ・バス・プラットフォームです。サービス・コネクタを使用して、ソース・サービスからターゲット・サービスにデータを移動できます。サービス・コネクタを使用すると、オプションで、ターゲット・サービスに配信される前にデータに対して実行するタスク(関数など)を指定することもできます。
Oracle Cloud Infrastructure Service Connector Hubを使用すると、セキュリティ情報およびイベント管理(SIEM)システム用のロギング集約フレームワークを迅速に構築できます。
- レジストリ
Oracle Cloud Infrastructure Registryは、本番ワークフローを簡素化できる、Oracle管理のレジストリです。レジストリを使用すると、Dockerイメージなどの開発アーティファクトを簡単に格納、共有および管理できます。Oracle Cloud Infrastructureの高可用性とスケーラビリティのアーキテクチャにより、アプリケーションを確実にデプロイして管理できます。
- アイデンティティおよびアクセス管理(IAM)
Oracle Cloud Infrastructure Identity and Access Management(IAM)は、Oracle Cloud Infrastructure(OCI)およびOracle Cloud Applicationsのアクセス・コントロール・プレーンです。IAM APIおよびユーザー・インタフェースを使用すると、アイデンティティ・ドメインおよびアイデンティティ・ドメイン内のリソースを管理できます。各OCI IAMアイデンティティ・ドメインは、スタンドアロンのアイデンティティおよびアクセス管理ソリューション、または異なるユーザー集団を表します。
- ポリシー
Oracle Cloud Infrastructure Identity and Access Managementポリシーでは、誰がどのリソースにどのようにアクセスできるかを指定します。アクセス権はグループ・レベルおよびコンパートメント・レベルで付与されます。つまり、特定のコンパートメント内またはテナンシへの特定のタイプのアクセス権をグループに付与するポリシーを記述できます。
- Oracle Cloud Infrastructure Vault
Oracle Cloud Infrastructure Vaultでは、データを保護する暗号化キーと、クラウド内のリソースへのアクセスを保護するために使用するシークレット資格証明を集中管理できます。Vaultサービスを使用して、ボールト、キーおよびシークレットを作成および管理できます。
- クラウド・ガード
Oracle Cloud Guardを使用して、Oracle Cloud Infrastructure内のリソースのセキュリティをモニターおよびメンテナンスできます。クラウド・ガードでは、ディテクタ・レシピを使用して、リソースでセキュリティの弱点を調べたり、特定のリスクのあるアクティビティについてオペレータおよびユーザーをモニターしたりするために定義できます。構成の誤りやセキュアでないアクティビティが検出されると、クラウド・ガードは修正アクションを推奨し、ユーザーが定義できるレスポンダ・レシピに基づいてそれらのアクションの実行を支援します。
- ロギングLoggingは、クラウド内のリソースから次のタイプのログへのアクセスを提供する、高度にスケーラブルな完全管理型のサービスです:
- 監査ログ: 監査サービスによって発行されたイベントに関連するログ。
- サービス・ログ: APIゲートウェイ、イベント、ファンクション、ロード・バランシング、オブジェクト・ストレージ、VCNフロー・ログなどの個々のサービスによって発行されるログ。
- カスタム・ログ: カスタム・アプリケーション、他のクラウド・プロバイダまたはオンプレミス環境からの診断情報を含むログ。
- オブジェクト・ストレージ
Oracle Cloud Infrastructure Object Storageでは、データベースのバックアップ、分析データ、イメージやビデオなどのリッチ・コンテンツなど、あらゆるコンテンツ・タイプの構造化データおよび非構造化データにすばやくアクセスできます。インターネットから直接またはクラウド・プラットフォーム内から、安全かつセキュアにデータを格納し、取得できます。パフォーマンスやサービスの信頼性を低下させることなく、ストレージを拡張できます。迅速、即時、頻繁にアクセスする必要があるホット・ストレージには、標準ストレージを使用します。長期間保持し、ほとんどまたはほとんどアクセスしないコールド・ストレージには、アーカイブ・ストレージを使用します。
- 「アナリティクス」
Oracle Analytics Cloudは、スケーラブルでセキュアなパブリック・クラウド・サービスであり、最新のAI駆動のセルフサービス・アナリティクス機能を使用して、データ準備、ビジュアライゼーション、エンタープライズ・レポート、拡張分析および自然言語処理と生成に対応した機能を提供します。Oracle Analytics Cloudには、迅速なセットアップ、簡単なスケーリングとパッチ適用、自動ライフサイクル管理など、柔軟なサービス管理機能も用意されています。