OCIが指し示すクラウドネイティブへの道筋
OCI (Oracle Cloud Infrastructure)には、クラウドネイティブを実現するための数多くのサービスが用意されている。2023年12月11日〜12日に開催された「CloudNative Days Tokyo 2023」のセッションでは、日本オラクル株式会社 ソリューションアーキテクトの市川豊氏が登壇。コンテナアプリケーション開発を主軸に、「IaC(Infrastructure as Code)」、「Kubernetes」「DevOps」「Observability」 といった機能に焦点を当て、 OCI のクラウドネイティブサービスとアーキテクチャの解説が行われた。
クラウドネイティブにも注力するOCI
「OCIは、開発、実行、スケール、モダナイズのためのすべてのサービスを提供しており、インフラ、プラットフォーム、SaaSを単一のクラウドで実現するクラウドサービスです。コンピュートからコンテナといったクラウドネイティブな技術、サーバレス、AIや機械学習、データレイク等、多彩なワークロードを実現する豊富なサービスが用意されています」と強調するのは、日本オラクル ソリューションアーキテクトの市川 豊氏(写真)だ。そうした機能拡充に加え、規模の拡大も継続的に実施しており、現在、OCIは23か国46のパブリックリージョンでサービスを提供、さらに今後は6つのリージョンが新規に追加される計画だ(2024年1月時点では、48のパブリックリージョン、今後4つのリージョンを計画)。
そしてOCIは、昨今の企業・組織におけるクラウドシフト・リフトに対するニーズを捉え、クラウドネイティブなシステム、アプリケーションの構築・運用を支援するサービス群の強化も進めてきた(図1)。セッションでは「IaC」「コンテナ」「DevOps」「オブザーバビリティ」にフォーカスし、そのサービスの特長と優位性が説明された。それぞれについて、見ていこう。
IaCツールのTerraformをOCI上に実装
「IaC」はInfrastructure as Codeと名が示すように、「ITシステムにおけるインフラストラクチャの状態を、人手を介した手順の羅列としてではなく、ソフトウェアによって実行可能なコードの形で記述するもの」といわれる手法である。サーバやネットワーク等のインフラの構成を、プログラムのようなコードで記述することにより、構成の管理、プロビジョンニングを可能とするものだ。
そのメリットには、作業の省人化と効率化によるコスト削減をはじめ、コード化による高度な品質管理、そして、DevOpsとの連携によりソフトウェアとインフラを組み合わせ、開発からテスト、インフラのセットアップに至る一連の工程を自動化し、効率的に管理できるようになることが挙げられる。
このIaCを可能とするものが、HashiCorp 社が開発したオープンソースのインフラ自動構築ツール「Terraform」だ。Terraform の特長は、構築したいインフラの構成をHCL (HashiCorp Configuration Language) という専用の宣言型の設定言語で定義し、ターミナルからコマンドを実行するだけで、自動的にインフラのプロビジョニングや効率的なインフラ構成管理を実現できること。そしてOCIでは、IaC機能を提供するため、Terraformの実行エンジンをOCI上に実装し、OCIに特化したTerraformのマネージドサービスとして、「OCI Resource Manager」を提供(図2)。市川氏はスタンドアロン版Terraformとの比較を行いながら、「同サービスを利用することにより、人手による煩雑なTerraformのStateファイル管理が不要になるほか、リソースの操作権限の管理、そして複数のStateファイルの一括管理も可能となります」と説明する。
コンテナの運用管理を高度化するサービスも拡充
近年、コンテナは、クラウドネイティブなアプリケーションの開発に必要不可欠なものとなっており、そのオーケストレーションツールとしてKubernetesの活用も広がっている。OCIでは、Kubernetesをサービスとして提供する「Oracle Container Engine for Kubernetes(OKE)」 、また、コンテナをサービスとして利用可能とする「OCI Container Instances」を提供している。
OKEの特長は、高性能なインフラによる分散アプリケーション環境や冗長構成の自動化により、エンタープライズ品質の性能と可用性を提供可能であることだ。市川氏は、「OKEは、OCIの高性能なIaaS 上に構築されており、確実な性能を提供しています。例えば、各ホスト間は低遅延かつ広帯域のネットワークで接続されており、ボトルネックの無いインフラを実現。大規模な数のコンテナのデプロイメントにおいても、ネットワークの性能劣化による品質低下を確実に防止することが可能です」と語る。加えて、物理障害に対する耐障害性を高めていることもその優位性の1つだという(図3)。
また、マネージド環境として、コンテナの実行ホストを提供する「ワーカーノード」の柔軟な管理を可能とする「Managed Nodes」や、オプション機能としてワーカーノードの管理さえも不要とする「Virtual Nodes」も用意。
Managed Nodesでは、ワーカーノードの各ノードにSSH ログインして柔軟な管理を可能とするほか、「Cluster Autoscaler」機能を利用することで、自動ノードスケールを行うこともできる。このほか、永続化ではOCI Block Volume、File Storageとの連携も可能であるほか、AMD以外の仮想マシンインスタンスを利用することもできる。
Virtual Nodesでは、ワーカーノードに対するセキュリティパッチやトラブルシューティングなどのメンテナンス負荷をなくして、ステートレスなコンテナアプリケーションをスケーラブルに利用できる(図4)。
OCI Container Instancesは、先に述べたようにコンテナをサービスとして提供する。つまり、コンテナのインフラ管理が不要で、サーバレスによるコンテナ実行環境を実現する。ユーザーによるパッチ適用、トラブルシューティングといったインフラレイヤーの管理を不要とし、コンテナを即座に実行可能、さらにセキュアに分離、最適化されたコンテナ実行環境が提供されていることも大きな特長だ(図5)。
「ユーザーはコンテナイメージを指定するだけでよく、あとはOracle Managedによってコンテナランタイム、仮想マシン、物理マシンが実現されます。一般的に仮想マシンに必要となる、OS管理やアップグレード等の作業を行わずに済むようになることがポイントです」と市川氏は説明する。
DevOpsを加速させるCI/CDにも対応
市川氏は、OCIで実現するDevOpsについても言及する。クラウドネイティブに必要な要素の1つに、ソースコードの変更を契機に、自動的なビルド、テスト、そしてステージング環境、および本番環境へのデプロイといった一連のフローを自動化する「CI(Continuous Integration:継続的インテグレーション )」と「CD(Continuous Delivery:継続的デリバリー)」がある。このCI/CDをOCIで実現するサービスが「OCI DevOps」だ(図6)。
コード管理をはじめ、ビルド・パイプライン、アーティファクト管理、デプロイメント・パイプラインから構成される各機能を用い、エンドツーエンドの開発・運用プロセスを実現する。また、OCIネイティブであることから、コンピュートだけでなく、先述したOKE、そして、FaaS(Function as a Service)のプラットフォームである「OCI Functions」 環境とのスムーズな連携が可能だ。さらに、コンテナイメージであればOCI Registry、jarファイルのようなアーティファクトであればArtifact Registryサービスといったアーティファクト管理の連携も行える。そのほかにも、GitHub、GitLab、Bitbucketといった外部システムのコードリポジトリとシームレスに連携できる点も特徴だ。
OCI DevOps のトリガー機能を利用し、コードリポジトリへのイベントをトリガーにビルド・パイプラインを自動実行する工程がOCI DevOpsにおけるCIであり、デプロイメント・パイプラインと連携して対象となるアプリケーションを自動デプロイする工程がOCI DevOpsにおけるCDである。この一連のパイプライン連携をUIおよびCLIで構築、管理を行える。
オブザーバビリティの実現によりシステムの可観測性と分析を強化
近年、システムの安定的な運用を維持するための考え方として注目を集めているものに、「オブザーバビリティ」(Observability:可観測性)がある。これは、主に「メトリクス」「ログ」「トレース」といったデータを収集、分析を行い、システムに生じている状況をリアルタイムで把握することを可能にするものだ。これらのデータを収集しオブザーバビリティを実現するためのサービス群もOCIでは提供されている(図7)。
メトリクス収集に該当するものは、「OCI Monitoring」だ。メトリックおよびアラーム機能による、OCI リソースをアクティブおよびパッシブに監視。「例えばあらかじめ設定したCPUやメモリの使用量の閾値を超えたらアラートをあげたり、OCI Notifications(OCIにおける通知専用サービス)と連携しメールやSMS、Slackなどのメッセージサービスを使用して関係者に通知させたりすることも可能です」と市川氏は説明する。
ログに該当するものが、「OCI Logging」で、「監査ログ」「サービスログ」「カスタムログ」といった3種類のログ生成と管理を実現。また、拡張性に優れるとともに、完全に管理された一元的なビューを提供することに加え、テナント内の全てのログにアクセスすることも可能だ。
複数のサービスの間でやり取りされる処理を可視化する、「トレース」を実現するものが「OCI Application Performance Monitoring」である。アプリケーションのパフォーマンスを可視化するとともに、サーバおよびユーザー側からの問題の根本的原因を分析することを支援する。「分散トレーシング」をはじめ、「合成モニタリング」「リアル・ユーザー・モニタリング」「サーバー・モニタリング」を用意しており、様々な側面からの可視化を実現する。
「なお、近年では、オブザーバビリティの実現にあたっては、これまで説明してきた3要素だけでは不十分であり、『プロファイル』『例外』『イベントデータ』などについても取得する必要があると言われています。現時点でOCIはこれらのデータを取得するためにオープンソースソフトウェアの利用を検討する必要があります。」と市川氏は補足する。
これまで説明してきたように、OCIはクラウドネイティブを加速させるための様々なサービスを提供する。さらに最近では、フルマネージドのキャッシングサービスである「OCI Cache with Redis」や、高可用性とストレージのオートスケールを兼ね備えたマネージド型のPostgreSQL サービス「OCI Database with PostgreSQL」の提供も開始されている。
最後に市川氏は、「OCIには30日間無料トライアル版が用意されているので、まずはトライアル版を試用して実際の操作を体感してもらえたらと思います。併せて、OCI に関する様々なチュートリアルも用意されているので、ぜひご活用ください」と述べ、セッションを締めくくった。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 企業のクラウドネイティブ化を実現するジールが考える「SRE支援サービス」の必要性
- Oracle Cloud Hangout Cafe Season4 #4「Observability 再入門」(2021年9月8日開催)
- Oracle Cloud Hangout Cafe Season7 #2「IaC のベストプラクティス」(2023年7月5日開催)
- DevOps全体の監視・調査・障害対応を自動化・効率化 「Splunk Observability Cloud」が DXをスピードアップする
- 「Observability Conference 2022」開催レポート
- 開発者主導のセキュリティ対策の強い味方、脆弱性スキャンを随所に組み込む「Snyk」の価値
- 3/11「Observability Conference 2022」開催せまる! 実行委員オススメのみどころを紹介
- CNDT2021、NTTComのアーキテクトがDevOpsに繋がるフィードバックループを解説
- Observability Conference 2022、日本ユニシスのエンジニアが解説するデベロッパーにとってのオブザーバビリティ
- CNDT2021、パブリッククラウドを使ってゼロから勘定系を開発したみんなの銀行のセッションを紹介