公開日:
「クラウドネイティブ」の基礎を知る| クラウドネイティブとは何か?どんなメリットがあるのか?


伊藤忠テクノソリューションズ(CTC)
DXコンサルティング本部
クラウドネイティブ推進部 リードスペシャリスト
杉田 修一郎
1. 「クラウドネイティブ」とは
「クラウドネイティブ」とは果たして何なのか─。実のところ、この点に関して明確で画一的な定義はありません。「そのため、人によってクラウドネイティブに対する解釈が異なることが多く、クラウドネイティブとクラウドとを同義ととらえる人もいます」と、CTCの杉田はいいます。
一方で、クラウドネイティブコンピューティングの普及・発展を目的に組織された非営利団体「Cloud Native Computing Foundation(以下、CNCF *1)」では、クラウドネイティブを明確に定義(*2)しています。
定義の詳細はCNCFのWebサイトでご確認いただくとして、その内容を簡単にいえば、クラウドネイティブは、コンテナやマイクロサービス、宣言型APIなどの手法を使いパブリッククラウドやプライベートクラウド、あるいはハイブリッドクラウドにおけるスケーラブルなアプリケーションを構築・実行するためのアプローチであるといいます。また、クラウドネイティブの手法によって実現された疎結合システムと自動化を組み合わせることでシステム(あるいはアプリケーション)の変更を最小限の労力で高頻度に行うことが可能になるとしています。
こうしたクラウドネイティブの定義について、杉田は「我々のようにクラウドネイティブを専門的に扱っている立場からいえば『クラウドネイティブは、多数のコンテナのオーケストレーション(=デプロイ、スケーリング、ネットワーキングの自動化)を実現するオープンソースソフトウェア(OSS)「Kubernetes」を中心としたエコシステム』と解釈するのが適切であると見ています。その表現のし方を換えたのがCNCFの定義であるといえるでしょう」と説明する。
*1 Cloud Native Computing Foundation (CNCF):「Linux Foundation」のもとで組織されたベンダー中立の非営利団体。「Kubernetes」や「Prometheus」など、クラウドネイティブコンピューティングを支えるオープンソースソフトウェア(OSS)の開発プロジェクトをホストしている。参考URL:https://www.cncf.io/
*2 CNCFによるクラウドネイティブの定義(CNCF Cloud Native Definition)のURL https://www.cncf.io/about/faq/#what-is-cloud-native
https://github.com/cncf/toc/blob/main/DEFINITION.md
2. クラウドネイティブの技術には何があるのか
クラウドネイティブがKubernetesを中心にしたエコシステムであるとして、そのエコシステムを構成する技術には、どのようなものがあるでしょうか。以下、その主要な技術を示します。
■コンテナ:コンテナは、アプリケーションと実行環境(ライブラリや設定ファイルなど)を小さく(軽量に)パッケージングし、OS(ホストOS)から実行環境を分離させる仮想化技術です。その活用によってアプリケーションのデプロイをスピードアップしたり、開発・テスト・本番運用の各環境でアプリケーションの一貫した動作を保証したりすることができます。アプリケーションをコンテナ化し、デプロイ、実行するための標準的なプラットフォームとして、OSSの「Docker」があります。

図1:Dockerによるコンテナ型仮想化のイメージ
なお、先に触れたKubernetesは、ハイパースケールなデータセンターやITインフラを前提として、コンテナの運用を限りなく効率化、自動化するために開発された仕組みです。Dockerなどでは提供されていない複数のコンテナの運用管理と、そのために必要なITインフラ(ネットワークやストレージ)の連携管理機能を備えています。
■CI/CD(継続的インテグレーション/継続的デリバリー):これは、アプリケーションの開発工程(ビルド、テスト、デプロイ)を効率化・自動化する技術です。OSSのCI/CDツールとして「Jenkins」や「GitLab CI」「Tekton」「Argo CD」などがあります。
■オブザーバビリティ(可観測性):オブザーバビリティの技術は、アプリケーションやインフラを含むシステム全体を監視し、状態を可視化する仕組みです。OSSのオブザーバビリティ製品として「Grafana」「Prometheus」などがあります。
■IaC(Infrastructure as Code):ITインフラの構築・管理をコード化する技術です。これまで手作業で行ってきたITインフラの構築・設定を自動化し、構築のスピードアップや人的ミスの削減を実現することができます。代表的なIaCツールとして「Terraform」があります。
■サーバレス:これは、クラウドネイティブの代表的なサービスです。サーバレスのサービスを活用することで、サーバを管理することなく、コードが実行できるようになります。広く普及しているサーバレスの商用サービスとして「AWS Lambda」や「Google Cloud Functions」などがあり、Kubernetes上で動くOSSのサーバレスの仕組みとして、「Knative」や「OpenFaaS」などがあります。
3. クラウドネイティブ技術の導入メリットとは
以上の記述からおわかりいただけると考えますが、クラウドネイティブ技術は基本的にアプリケーションの開発と提供をスピードアップする仕組みです。この点に関して杉田は以下のような説明を加えます。
「クラウドネイティブ技術によってもたらされる最大のメリットは、アプリケーションを提供する(ないしは、変更する)スピードが劇的に高められることです。デジタル時代の今日では、顧客ニーズやビジネスニーズに即したアプリケーション(あるいは、デジタルサービス)をすばやくリリースし、タイムリーに更新をかけていく必要があり、それが市場での企業競争力を左右するようになっています。そうした時代の要請に対応していくための有効な手段がクラウドネイティブ技術の活用であるといえます」

また、近年においては開発と運用を一体化させたDevOpsによってアプリケーションの提供と改善のスピードを増そうとする動きが活発化しています。DevOpsは、クラウドネイティブ技術を使って設計、コーディング、テスト、デプロイ、運用、評価(監視/観測)のサイクルを回す方法論といえます。

図2:DevOpsのプロセス
そうした点を踏まえつつ、杉田は今回「①開発スピードの劇的な向上」「②運用の自動化」の2点にわけて少し詳しく解説しています。そのエッセンスを以下に紹介しておきます。
①開発スピードの劇的な向上
従来のアプリケーション開発では、設計、コーディング、ビルド、テストの工程をすべて手作業で行わなければならず、相当のコストと時間を要していました。それが、クラウドネイティブ技術を使うことで、例えば、作成したコードをリポジトリにアップするだけで、ビルド、テストの処理が自動的に行われるようになります。また、作成したコードは最終的にコンテナ上で動き始めます。これにより、コーディングからデプロイまでに要する時間が劇的に短くなります。
②運用の自動化
杉田によれば、クラウドネイティブ技術には、コードで振舞いを定義し、ソフトウェアが自動的に制御するという考え方が根底に流れているといいます。ゆえに、例えばKubernetesでは、動作中のアプリケーションがダウンした際に自動で立ち上げ直したり、ワークロードが高まったときにITインフラのリソースを自動でスケールしたりする機能を備えています。また、KubernetesとIaC、オブザーバビリティのAPI連携により、アプリケーションのサービスレベル(ユーザー体験)がしきい値を下回ったときに、事前に定義したシナリオに沿ってコンテナ数を増やしたり、インフラを変更したりといった制御をかけることも可能です。
4. AI内製化の促進~クラウドネイティブ技術のもう1つの重要なメリット
もう1つ、杉田が指摘するクラウドネイティブ技術の大きなメリットは、AI、あるいは大規模言語モデル(LLM)の内製化が促進されることです。
「最近になって、OSSのLLMを使って自社でチューニングをかけたいといったニーズや社内のデータを使ってAI を強化したいといった『AI内製化』のニーズが高まっています。ただし、AI の内製化では、GPUとタスクを適切にコントロールする必要があり、その制御を行う手段としてKubernetesが非常に注目を集めています。言い換えれば、Kubernetesは、その機能拡張により、AIのワークロード管理を自動化する標準的なプラットフォームになりつつあるということです」(杉田)
5. クラウドネイティブ技術の課題と課題解決の一手とは
クラウドネイティブ技術には、以上に示したような数々のメリットがある一方で課題もあります。その課題とは、クラウドネイティブ技術のメリットを享受するうえでは、使用するすべての技術を習得しなければならず、エンジニアに相当の学習負荷、あるいは認知負荷がかかることです。
この課題について、杉田は「クラウドネイティブ技術の採用は、開発・運用の在り方を大きく変える取り組みでもあります。とりわけ運用プロセスの変化は激しく、コードによってITインフラの構築、運用を行うことに難しさを感じたり、抵抗感を抱いたりする方が多くいらっしゃいます。加えて、クラウドネイティブ技術はほとんどがOSSの技術なので更新のペースも早く、常に新しい技術を学び続けなければならないという問題もあります」と説明を加えます。
こうした問題を解決する一手として大きなトレンドとなりつつあるのが「Platform Engineering(プラットフォームエンジニアリング)」です。
これは、エンジニア(主として開発エンジニア)のためのポータル環境を構築し、その環境を通じてさまざまなクラウドネイティブ技術、あるいはツールを簡単にコントロールできるようにするアプローチです。
「Platform Engineeringのアプローチをイメージ的にいえば、クラウドネイティブ技術の上位に各種の機能を抽象化したレイヤを築き、エンジニアがツールの細かい操作や設定をすることなく、自分の欲しい機能を使えるようにすることです。これによって、クラウドネイティブ技術の活用におけるエンジニアの認知負荷を大きく引き下げられます」(杉田)
Platform Engineeringは、DevOpsの内製化を促進するものでもあり、自社のビジネスを強化するために、どのようなデジタルサービスを、どういったタイミングで開発・提供すべきなのかは、その会社で働く人が最も深く理解しています。ゆえに、社内で想起したデジタルサービスのアイデアを素早くかたちにし、市場に投入するには、DevOpsの内製化が必要になります。その能力を獲得するうえで、エンジニアによるクラウドネイティブ技術の利用を簡素化するPlatform Engineeringは、非常に有効な手段となりえるのです。
6. クラウドネイティブ技術の威力を最大限に生かすために
CTCでは、Platform Engineeringのデザインと運用の支援など、クラウドネイティブ技術のメリットをお客様に享受いただくための各種サービスを「C-Native」というブランド名のもとで包括的に提供しています。C-Nativeについて、杉田は「このサービスで我々が目指しているのは、レガシーなシステムのアプリケーションとITインフラをクラウドネイティブ技術によってモダナイズし、そのメリットをお客様に享受いただくことです。そのためのコンサルティングからクラウドネイティブ環境の構築・導入・運用・保守、さらには人員教育までを、伴走型で一貫してご支援しています」と説明を加える。
例えば、C-Nativeの「Transformation Service」では、クラウドネイティブ環境の設計・構築支援のほか、エキスパートによるクラウドネイティブ技術の活用支援、人材育成支援などのサービスを提供しています。特色としては、システムのモダナイズ(クラウドシフト)に向けた顧客の状況に合わせたクラウドネイティブ技術の段階的な導入や人材教育のサービスを展開していることです。

図3:「C-Native Transformation Service」のコンテンツ
また、C-Nativeでは「Professional Service」として Kubernetesベースの商用パッケージ「Red Hat OpenShift Container Platform」「Red Hat OpenShift Container Platform Virtualization」を使ったシステムインテグレーションのサービスを提供しています。さらに、「DevOps Service」としてPlatform Engineeringを支援するサービスのほか、開発したアプリケーションの信頼性を、ユーザー体験を指標にしながら担保するSRE(Site Reliability Engineering)の支援も展開しています。さらにC-Nativeでは、コンテナのセキュリティを確保する「C-Native Security Service」を提供しています。
以上、本稿ではクラウドネイティブの本質について見てきました。クラウドネイティブ技術の活用は、DXを加速させるソリューションとして非常に有効です。これら技術の威力を最大限に引き出すことこそが、DXの大きな推進力となるのです。
当サイトに掲載されている情報(記事、資料、動画、テンプレート等)については、その正確性および妥当性の確保に努めておりますが、ご利用に際しては、利用者ご自身の責任においてご判断ください。なお、個別の事情に応じては、専門家へのご相談を含め、適切な対応をご検討いただくことを推奨いたします。






























