ビジネスアプリの進化と ITインフラストラクチャー
クラウドネイティブとは?背景・メリット・デメリット・技術要素まで解説
- 連載記事/コラム
ビジネスにおいてクラウドサービスの利用が拡大する中で、使用してきたアプリや新たに開発するサービスをクラウドネイティブで行うと言われる場合も増えているのではないでしょうか。クラウドの利点を活かしてビジネスを成功させるために注目されるクラウドネイティブですが、ビジネスに組み込んで開発運用する場合は、基本からしっかりと抑える必要があります。
本記事ではクラウドネイティブの概要を始め、注目されている背景、メリット・デメリット、構成する技術要素についてわかりやすく解説します。
先輩「うーん、最初のサービスとしてはこんなものかな。」
新人「あれ、新しいサービスの立ち上げですか?」
先輩「ああ、今度立ち上げる自社サービスが、クラウドネイティブで構築することになったから、そのインフラについての最終確認だ。」
新人「クラウドネイティブは、最近色々なところで見るようになりましたけど、これまであったクラウドファーストとは違うんですか?」
先輩「そうだな、これからクラウドネイティブでのサービス構築も増えてくると思うし、いい機会だからクラウドネイティブの概念について改めて確認してみようか。」
クラウドネイティブとは
先輩「まずは、クラウドネイティブの概要について説明していこうか。」
概要
最初にクラウドネイティブを理解するための基本的な知識を解説していこう。
クラウドネイティブとはクラウドの活用を前提とし、技術要素を組み合わせながらクラウドの利点を活かす仕組みのことです。DX(デジタルトランスフォーメーション)を実現するテクノロジーの一つとしても大きく注目されている。
世界の主要IT企業などをはじめとした 600団体以上が参加する CNCF(Cloud Native Computing Foundation)という団体がクラウドネイティブを推進している。CNCF によるクラウドネイティブの定義が業界標準であることが世界的に認められているんだ。
CNCF のクラウドネイティブの定義は、主に以下の3項目になる。
- コンテナ、サービスメッシュ、マイクロサービスなどの技術から構成されていること
- 自動化と組み合わせることで、最小限の労力で大きな変更を行うことが可能であること
- CNCF がパターンを展開することで、誰もがイノベーションを維持できるようになること
参考URL:https://github.com/cncf/toc/blob/main/DEFINITION.md
クラウドネイティブは、単純にオンプレミスの物理サーバーからクラウドサービスを利用するではなく、クラウド前提のアーキテクチャとしてビジネスに役立つために技術要素を組み合わせて徹底的に活用していくことが大きなポイントとなるんだ。
クラウドネイティブとクラウドファーストとの違い
クラウドサービスが登場してまもなく「オンプレミスよりも、クラウドの利用を優先してシステム構築を行うべき」というクラウドファーストの考え方が登場してきた。
物理的なハードウェアを構築してシステムを設計する従来型のオンプレミスサーバーに比べて、クラウドサービスは初期コストが抑えられる、利用状況に合わせてシステムリソースの変更を柔軟に行えるというメリットを得ることができる。
そのためシステムを新たに構築する際や移行時は、オンプレミスよりもまずはクラウド利用を検討するべき、という考え方がクラウドファーストだ。
官公庁のシステムにおいても「クラウド・バイ・デフォルト原則」が提唱されることになった。
一方、クラウドサービスの利用が拡大する中で、サービスをどのように活用していくか、クラウド環境に搭載アプリケーションの最適化を図るためには何を実施していくべきかなど、クラウドファーストの延長線において登場したのがクラウドネイティブという考え方だ。
クラウドネイティブは仮想化環境の利用を前提とし、技術要素となるコンテナやマイクロサービス、サービスメッシュなど、より小さな単位を使ってクラウドサービスを提供する仕組みのことだ。
クラウドネイティブの定義を公開している CNCF では Kubernetes (K8s) といった OSS(オープンソースソフトウェア)を開発・提供しており、クラウド環境に欠かせないコンテナ仮想ソフトウェアの管理・自動化を実現し、多くの利用ユーザーに役立つ情報を展開している。
クラウドネイティブにおいてクラウド環境の利用は当たり前で、さまざまな技術要素を使用して利用ユーザーの全員がメリットを教授しながらイノベーションを維持できることと定義されているんだ。
クラウドネイティブが注目される背景
新人「なるほど、クラウドの使用を最初に考えるクラウドファーストよりも、もう一歩進んだ考え方なんですね。ただ、クラウドの利用は結構進んでいると思うんですが、どうして今、クラウドネイティブが注目されているんでしょうか。」
先輩「そうだな。次は、クラウドネイティブが注目されている背景について考えてみよう。」
クラウドネイティブが注目される背景として大きいのは、現在のビジネスで成功するために必要な、アプリケーションやサービスの開発や運用における、より速い処理スピードと高い柔軟性だ。
クラウドネイティブで開発されたサービスやアプリケーションは、提供側はユーザーに常に最新の機能や使い勝手を提供できるため、業務効率や顧客満足を高めることができる。
さらに、インフラがクラウドであるために、サービスの利用状況に合わせて処理速度を向上させたり、スケールアップを柔軟に行う事が可能で、小規模に立ち上げながら、ビジネス環境や状況に応じてスケールアップやスケールアウトなどを行うなど、柔軟な対応が可能でパフォーマンスやコストを迅速に調整できるため、多くの企業でクラウドネイティブが注目されているんだ。
クラウドネイティブのメリット
新人「確かに、更新が速かったり柔軟性があるサービスやアプリケーションは必要とされていますね。ただ、これまでの仮想化環境でのサーバーを立ち上げたりするのと比較して、クラウドネイティブのメリットって具体的にはどういったものなんでしょうか。」
先輩「それでは、次にクラウドネイティブのメリットをすこし詳しく紹介しよう。クラウドネイティブのメリットは、主に以下の3つだ。」
- アプリケーションとインフラのメンテナンスの切り離し
- 変化に強い
- コストの最適化
アプリケーションとインフラのメンテナンスの切り離し
クラウドネイティブの1点目のメリットは、アプリケーションとインフラのメンテナンス管理が別になることだ。
例えばオンプレミスで稼働させていると、定期的に発生するOSのセキュリティ対策によるアップデート対応などでは、アプリケーションやサービスを停止させるか、稼働していない時にシステム管理者がタイミングを合わせて対応など、アプリケーションやインフラのメンテナンスタイミングを合わせるために、一定の期間にまとめてバージョンアップとなってしまい、顧客満足を犠牲にする必要がどうしても出てしまう。
一方、クラウドネイティブでは、パブリッククラウドのサービスを利用することになるため、物理サーバーやOSの状態とは関係なく、こういった調整から解放されるので、いつでも即座にアプリケーションをリリースすることができる。つまり、よりビジネスに貢献するための業務に集中することができるようになるといえるんだ。
変化に強い
クラウドネイティブの2点目のメリットは、変化に強いことだ。
クラウドネイティブに対応したシステムは、利用規模に合わせたスケールアップ、スケールダウンを容易に行えるなど、より柔軟に環境の変化に対応することができる。アプリケーションの改修や機能改善が必要な時も、サービスを停止することなく実施できるなど、業務への影響を最小限に留めることが可能だ。また災害などでサービスが急に停止した場合も、サービス稼働までのスピードがオンプレミスに比べて向上する場合も多いという利点もある。
大きく変化するビジネス環境に合わせて、提供するサービスやアプリケーションを柔軟に対応させる事ができるのが、クラウドネイティブにおける大きなメリットとなる。
コストの最適化
クラウドネイティブの3点目のメリットはコストの最適化だ。
クラウドネイティブであれば、サービスを開始する際の初期費用において、ハードウェアの購入費用が発生しないことは、大きなコストカットとなる。
また運用費の面でも、従量課金制を採用しているクラウドサービスであれば、新規サービスを立ち上げる時に必要最小構成のシステムリソースで開始することで、利用した分だけの費用を支払うだけで済み、ランニングコストを最適化することができるんだ。
利用人数が増えたり、利用サービスの状況が変化する場合は、適宜スケールアップするなどといった柔軟な対応が行えるだけでなく、サービスやアプリケーションを終了させる場合も、クラウドの契約を終了するだけで済む。さらに、使用しないハードウェアを余剰資産として抱える必要もなくなるわけだ。
クラウドネイティブでサービスやアプリケーションを構築・運用することで、初期費用の大幅カット、スケールアップ・ダウン対応、サービスの終了の面においてコスト最適化を図ることができるんだ。
クラウドネイティブのデメリット
新人「コスト面でも運用面でもメリットは大きそうですが、まだクラウドネイティブが一般的になっていないのはどうしてですか?」
先輩「クラウドネイティブには、メリットだけではなく当然デメリットも存在するからな。次はデメリットについても紹介しようか。」
クラウドネイティブのデメリットは、サービスの構成によっては、システムの障害やボトルネックなどがわかり難くなる場合があることだ。
開発者自身が、テスト環境の延長で手軽にプラットフォームを構築できるが、インフラエンジニアとしては当然とされる「企業として必要なセキュリティや環境設定」が漏れているなど、スキルは人によりバラバラだ。そのため、企業が提供しているサービスにも関わらずシステム管理者が存在や構成を把握できていない「シャドーIT」が生み出されてしまう事もある。
また、既存のシステムをクラウドネイティブへ移行する場合は、現状のシステムを単純にクラウドに移行する、という考え方ではなく全く新しい仕組みで活用していくという意識が必要になるため、インフラのアップデートというだけでなく、全社的な意識改革が必要となる。
さらに、クラウドネイティブの実現には、新しいテクノロジーを活用するための正確な知識の習得や、技術者の確保も必要になるな。
クラウドネイティブを実現させる技術構成
新人「なるほど。まったく新しい環境で構築されるというのがメリットであり、デメリットでもあるという事ですね。クラウドネイティブで必要な技術というのは具体的にはどんなものなのですか?」
先輩「クラウドネイティブを実現させる代表的な技術は、最初に言った CNCF でも言及しているが、大きくは以下の 3つになる。順版に解説していこうか。」
- コンテナ
- マイクロサービス
- サービスメッシュ
コンテナ
クラウドネイティブを実現させる代表的な技術要素の1つ目は「コンテナ」だ。
「コンテナ」とは仮想化技術の一つであり、異なる OS の環境でアプリケーション迅速に起動するための技術です。もともと UNIX に搭載されていたんだ。
「コンテナ」は一つの OS 上で複数の分離された空間を提供できるため、複数のアプリケーションを実行しながら環境のコンポーネントや資源を最小限に抑えることが可能になる。
ストレージ、ネットワークなどのシステムリソースが個別アプリケーションに割り当てられ、完全に切り離された環境の中でアプリケーションを実行できるため起動・処理スピードが一段とアップすることになる。
CNCF が開発・提供する OSS のコンテナオーケストレーションツール「Kubernetes (k8s)」を利用することで、コンテナ仮想ソフトウェアの管理と自動化が可能になるんだ。
マイクロサービス
クラウドネイティブを実現させる代表的な技術要素の2つ目は「マイクロサービス」だ。
「マイクロサービス」とは「コンテナ」をベースとしたアプリケーションを小規模のプログラムに分割し、開発・運用できるようにする手法のことだ。
分割されたサービスを組み合わせて開発することで、多くのサービスをそれぞれ独立して動作することが可能になる。サービスがそれぞれ単一のプロセスとして動作するため、監視時にはサーバー本体の状態を見るのではなく、コンポーネント単位でボトルネックなど細かく見ていく必要があるなど、従来のサービス監視とは少し違った方法が必要になるんだ。
「マイクロサービス」の利用により、各アプリケーションは必要最小限のサービスで稼働できるようになるため、リソースの最適化を図ることが可能だ。
サービスメッシュ
クラウドネイティブを実現させる代表的な技術要素の3つ目は「サービスメッシュ」だ。
「サービスメッシュ」とは主にネットワークのサービス間の通信を管理する仕組みのことで、ネットワーク上のサービスを抽象化することで、利用ユーザーに信頼性と高速な通信を提供する。
「サービスメッシュ」が必要なのは、メモリで処理される従来型のサービスに比べて「マイクロサービス」がパフォーマンス面で遅くなる傾向があるためだ。
さらに「マイクロサービス」では通信の可視化やログ収集が難しいなどの課題があるから、「サービスメッシュ」というネットワークレイヤをたてることで、パフォーマンスや障害の監視を行う必要がある。「サービスメッシュ」を利用することでサービス依存関係やトラフィックを制御することが可能になり、通信の信頼性と高速通信が実現可能になるんだ。
まとめ
新人「コンテナ」は開発の人から聞くこともありますね。「サービスメッシュ」とかはインフラにも関係してくる技術ですよね。」
先輩「その通り、これからは企業がビジネスのためにクラウドネイティブをどんどん取り入れていくようになるから、企業としてのセキュリティ対策や管理のあり方について、IT管理でもこうした技術の習得は必須になってくるだろうな。」
新人「クラウドネイティブを理解しておくだけじゃなくて、どう運用していくかが大事という事ですね。」
先輩「そうだな。クラウドネイティブが導入されることで、システムに関わる業務も役割が変わってくるから、仕組みや技術について一定レベルまで理解しておく必要がでてくるだろうな。」
本記事では、クラウドネイティブについて基本からメリット・デメリット・必要な技術要素を解説していきました。クラウドネイティブを実現するには全社的な意識改革を行うことがとても重要です。IT インフラやシステム管理においても、従来からの大きな進化が求められます。
これからビジネス環境において、益々変化が速く、大きくなることが予測されます。クラウドサービスの利用がこれまで以上に拡大すると予測されるため、これまでのクラウドファーストの考え方から、クラウドネイティブに発展していかなければなりません。
クラウドネイティブを実現させるためのソリューションは既に数多く提供されています。IT 管理者も何をどのように組み合わせれば自社のビジネスを大きく成長させることができるかを考えていく、意識の変革がこれからの時代は求められているのです。
SB C&S では、クラウドネイティブのアプリケーションを開発・運用するためのソリューションを提供しています。モダンアプリの開発や複数のクラウド環境での運用を実現する、Kubernetes (k8s) フレームワークの実行と管理を支援する製品群「VMware Tanzu」は、単一の制御ポイントからセキュリティと信頼性を確保しながら増大するクラスタを管理でき、開発者はセルフサービスで迅速にリソースにアクセスし、アプリケーションの開発と提供に集中することができるようになります。 詳しくは、下記の特集ページまたは製品ページをご確認ください。
【特集】今こそ求められるDevOpsの実現
VMware Tanzuが拓く未来
-
アプリケーションのモダナイズの実現だけでなく、ビジネスを成功に導く上でも重要となる DevOps 環境の構築について、VMwareおよびVMwareパートナーによる講演や特集記事内容を中心に、VMware Tanzuによって拓かれるモダン・アプリケーション開発と次代のビジネスへの可能性をご紹介。
VMware Tanzu
-
モダンアプリの開発や複数のクラウド環境での運用を実現する、Kubernetes (k8s) フレームワークの実行と管理を支援する製品群。