• クラウドネイティブ
  • コンテナ
  • マイクロサービス

クラウドネイティブとは? 導入のメリットや実例などをわかりやすく解説!


                                                                        cloudnative_article.webp

クラウドネイティブとは、システムやアプリケーションをクラウドの利点を最大限に活かして設計・開発・運用するアプローチのことを言います。企業のデジタルトランスフォーメーション(DX)の実現には、あらゆるインフラ環境に応じて、クラウドネイティブの技術や考え方を活用したアプリケーション開発を取り入れることが重要だと言われています。

本記事では、クラウドファーストやクラウド・バイ・デフォルトとの違いや関連技術、メリット・デメリット、失敗しない導入方法まで、クラウドネイティブについてITの知識がない方にも、わかりやすく解説します。

【監修者】奥 浩史(おく ひろふみ)

【監修者】奥 浩史(おく ひろふみ)

SCSK株式会社 ITインフラ・ソフトウェア事業本部
技術第二課 課長 兼 全社クラウドネイティブCoEメンバー
【経歴】
SCSKにおけるNebulaShiftビジネス、RedHatビジネス立上げやSysdigビジネス立上げを担当。現在クラウドネイティブ領域で活動中

企業のクラウドネイティブ化を支援するサービス「NebulaShift」|SCSK

(出典)企業のクラウドネイティブ化を支援するサービス「NebulaShift」|SCSK

クラウドネイティブとは

はじめに、クラウドネイティブの概念について説明します。

クラウドネイティブの定義

クラウドネイティブとは、クラウドの利点を最大限に活用するためのシステム・アプリケーション設計のあり方を指します。単純にオンプレミスのシステムをクラウドに移行しただけでは、クラウドネイティブとは言えません。クラウドネイティブのアプローチは(パブリック)クラウドにとどまらず、ハイブリッドクラウドやプライベートクラウド(オンプレミス)などのあらゆる環境にも適用できます。重要なのは、企業のインフラ環境に応じたクラウドネイティブを採用することで、柔軟なシステムの拡張や低コストといったクラウドのメリットを得られるということです。

CNCF(Cloud Native Computing Foundation:2015年に設立されたクラウドネイティブ推進のための非営利団体)は、クラウドネイティブについて次のように定義しています。

クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。

CNCF Cloud Native Definition v1.1

クラウドファーストやクラウド・バイ・デフォルトとの違い

クラウドネイティブに似た用語として、クラウドファーストやクラウド・バイ・デフォルトが存在します。以下に、それぞれの概念とクラウドネイティブとの違いについて解説します。

クラウドファースト

クラウドファーストとは、システムを構築する際にクラウドの活用を優先する考え方です。オンプレミスより低コストかつ早期の導入・運用が可能といったクラウドのメリットを享受するため、 クラウドサービスの利用やクラウドによるシステム構築を優先します。ただし、必要に応じてクラウド以外のサービスも検討することもあります。

クラウドファーストが単に「クラウドの活用を優先する」という考え方やアプローチであるのに対し、クラウドネイティブは「クラウドの特性を最大限に活用する」ことに焦点にあてたシステム・アプリケーション設計のあり方を指します。

クラウド・バイ・デフォルト

クラウド・バイ・デフォルト(クラウド・バイ・デフォルト原則)とは、日本政府が発表した、政府の情報システムを構築する際に、クラウドの利用を第1候補(デフォルト)として検討するという方針です。

クラウド・バイ・デフォルトは、クラウドファーストと同様にクラウドを優先候補とし、クラウド利用が困難、またはそのメリットが十分に得られない場合にのみオンプレミスを検討します。一方クラウドネイティブは、クラウドの特性を活かせることが重要であり、システム・アプリケーションをどこで動かすか(クラウドやオンプレミスか)については、特段の決まりや優先順位はありません。(従来、クラウドネイティブというと、クラウドの利点を活かすということはつまりクラウド環境が前提と解釈されていました。しかし技術の発展などによってクラウド以外の環境でも適用可能なアプローチとなったことで、クラウドを「前提」あるいは「優先」する必要がなくなってきています。)

【クラウドネイティブとクラウドファースト/クラウド・バイ・デフォルトの定義の違い】

クラウドネイティブ クラウドファースト クラウド・バイ・デフォルト
定義 クラウドの利点を活かすためのシステム設計のあり方 システム構築時にクラウドを優先する考え方やアプローチ 政府のシステム構築時にクラウド利用を第一候補とする、政府の方針

クラウドネイティブが求められている背景・理由

クラウドネイティブが注目されている背景には、近年のビジネス環境の変化があります。デジタル化やグローバル化の進展により、顧客のニーズに対して迅速に対応することが求められるようになり、競争が激化しています。コスト削減や効率化も要求される中で、これらを満たすのが迅速な開発を可能にするアジャイルや、開発と運用が緊密に連携するDevOpsであり、クラウドネイティブアーキテクチャです。

さらに、ITシステムのニーズも変化しています。クラウドは需要に応じたリソースの確保ができるため、柔軟なシステムの拡張が可能というメリットがあります。既存のアプリケーションを単純にオンプレミスからクラウドに移行するだけでも一定のメリットは得られますが、それだけではクラウドの利点を十分に活かすことはできません。従来のオンプレミス中心の考え方や開発手法を見直し、クラウドの利点を最大限に得られるような開発体制づくりを進める必要があります。

クラウドネイティブを実現する技術

クラウドネイティブを推進する団体「CNCF」(Cloud Native Computing Foundation)では、クラウドネイティブを代表する技術について、以下の5つを挙げています。では、どのような技術・ツールなのか、一つずつ解説していきます。

コンテナ

コンテナとは、アプリケーションの開発・管理を効率的に行うための仮想化技術の一つです。コンテナ内にアプリケーション本体やその実行に必要な環境がまとめられているため、環境移動が容易であり、新しい環境でも同じように動作させることができます。

また、コンテナは従来の仮想技術より、設定ファイルが軽量で立ち上げも高速です。少ないリソースで動作可能なため、一つのサーバーでより多くのアプリケーションを実行できます。

コンテナに何か問題が起きた場合でも、個々が独立した環境で動作しているため、サーバー全体に不具合が生じることはありません。そのため、障害復旧の時間も短縮できます。

【図】仮想マシンとコンテナの比較イメージ

【図】仮想マシンとコンテナの比較イメージ

(出典)コンテナとは|IT用語辞典|SCSK IT Platform Navigator

SCSKでは、クラウドネイティブな開発を効率化するコンテナプラットフォーム「OpenShift」と、コンテナ環境向けセキュリティプラットフォーム「Sysdig」を提供しています。詳細は下記のページをご覧ください。

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

マイクロサービス(マイクロサービスアーキテクチャ)とは、大規模なアプリケーションを小さな独立したサービスに分割し、開発の柔軟性とスケーラビリティを向上させるソフトウェア開発手法を指します。この独立した複数のマイクロサービス間をAPIで接続、連携させることで、一つのシステムとして機能します。

従来の開発手法はモノリシックアーキテクチャと呼ばれ、全ての機能(サービス)を一つのアプリケーションにまとめて設計します。しかし、一つのサービス内で各々の機能が依存しあうなど複雑化し、拡張性が低くなり、メンテナンスもしづらくなる傾向があります。

マイクロサービスでは、各サービスが一つの機能を担うため、一部で障害が発生しても該当のサービスの修正で済みます。

【図】マイクロサービスアーキテクチャとモノリシックアーキテクチャのイメージ

【図】マイクロサービスアーキテクチャとモノリシックアーキテクチャのイメージ

(出典)マイクロサービスとは|IT用語辞典|SCSK IT Platform Navigator

マイクロサービスとは?については、こちらの記事でわかりやすく解説しています。

マイクロサービスとは?概要やメリット、必要な技術などをわかりやすく解説|SCSK IT Platform Navigator

宣言型API

宣言型APIとは、サービスのあるべき状態=最終的に得たい結果を指示するAPIです。

マイクロサービス同士を連携し一つのサービスとして動かすには、前述のとおりAPIが仲介に使われます。従来のものは命令型APIと呼ばれ、「初めにAを実行し、次にB、Cを行う」といった具体的な実行コマンド(手順)を指示します。これに対し宣言型APIは、「コンテナを3つ起動する」など最終的な目標のみを伝えることで、システム側が自律的にそのサービスの「あるべき状態(上記の場合、コンテナが3つ起動している状態)」を実現する仕組みです。

イミュータブルインフラストラクチャ

イミュータブルインフラストラクチャ(Immutable Infrastructure)とは、直訳すると「不変のインフラストラクチャ」を意味し、一度構築したら変更をせずに稼働させるインフラ環境、または本番環境には変更を行わず運用する考え方を指します。

システム運用を長く続けていると、ソフトウェアをバージョンアップしたり、セキュリティパッチを適用したりする必要性が出てきます。しかし本番環境への修正や更新が重なっていくと、やがてシステムが複雑化して、障害の起こる可能性やセキュリティ上のリスクなどが問題となります。

イミュータブルインフラストラクチャでは、アップデートやバージョンアップが必要になった場合、既存の本番環境に変更を加えません。代わりに、変更は新しいインフラ環境を構築して置き換えることで行われます。新しい環境で運用を始めたものの、上手く動作しない場合は、すぐに古い環境に戻すことができるため、リスクを抑えられます。

イミュータブルインフラストラクチャ

(出典)クラウドネイティブとは|IT用語辞典|SCSK IT Platform Navigator

サービスメッシュ

サービスメッシュとは、コンテナ化したマイクロサービス間の通信を管理するための仕組みを指します。マイクロサービスには上記で挙げたようにさまざまなメリットがありますが、サービスが増えるとどうしても通信が複雑になってしまいます。サービスメッシュは、このような場合に通信の負荷を分散させ、最適化する役割を果たします。また、通信の安全性確保のために、暗号化や認証などの機能も持っています。

クラウドネイティブのメリット

クラウドネイティブを導入することで、さまざまなメリットが期待できます。以下に、クラウドネイティブの主なメリットについてご紹介します。

コストを抑えられる

クラウドネイティブを効果的に活用することで、従来のレガシー環境よりもコストを抑えられる場合があります。一般的にクラウドサービスはメンテナンスや障害発生時の対応を事業者に任せることができるため、インフラの運用やセキュリティ対策を行うための社内の人件費を減らすことができます。さらに、利用した分だけを支払う従量課金制のサービスを使い、利用量を適切に管理して必要な分だけ使用すれば、固定料金で支払うよりも安くなります。

予算が少ない企業でも、クラウドネイティブのプラットフォームを上手く利用すればシステムの開発や導入をしやすいでしょう。

迅速なアップデートや修正が可能

従来のレガシー環境と比べると、アップデートや修正が容易です。通常は、ユーザーへの影響が少ない夜中などの時間帯にサービスを停止してアップデートや修正を行います。一方で、マイクロサービスの技術を活用したクラウドネイティブでは、サービスを停止しないでアップデートや修正が可能です。システムの可用性を維持でき、サービスを利用するユーザーに不便をかけることもありません。

障害時に影響を受けにくい

クラウドネイティブには、障害時に影響を受けにくいというメリットがあります。従来の環境では、アプリケーションが大きな一塊になっているため、障害の原因を見つけるためには全ての動作を止める必要があります。しかし、クラウドネイティブでは、アプリケーションはマイクロサービスという単位で機能が小さく分割されているため、原因となっている部分だけを確認することができ、さらに不具合を解消している間もソフトウェアを稼働し続けられます。

また、クラウドの冗長性と分散性を活かし、障害に強いシステムを構築でき、ダウンタイムを最小限に抑えられます。

柔軟なシステム開発ができる

クラウドネイティブのプラットフォームは、変化の激しい現代社会のニーズにもリアルタイムに応えられます。細かい機能を一つずつ独立して開発できるため、システム開発の大幅な効率化が実現します。例えば、新しい追加の開発、利用ユーザーが増えたことによる性能の拡張、各環境へリリース、運用時に問題が発生した際のシステムの切り戻しなどの対応をスムーズに行うことができます。

柔軟性の高いシステム開発ができることは、大きなメリットです。DX推進の過程においては、システムの要件の変更が頻繁に発生するため、局所的な機能の追加改修や切り戻しなどを行いやすいプラットフォームは理想的な仕組みと言えます。

クラウドネイティブのデメリット

クラウドネイティブもメリットばかりではありません。どのようなデメリットがあるのでしょうか。

構築するエンジニアの不足

クラウドネイティブは、迅速なシステム構築・開発などさまざまなメリットがありますが、専門知識が不可欠で、高度なスキルを持つエンジニアの確保が大きな課題となっています。また、クラウドネイティブは可変性があるという前提で開発される特性上、変化が著しいのも大きな特徴です。そのため対応するエンジニアは、より柔軟な考え方で変化に適応する能力が求められます。

セキュリティや環境設定の行うべき範囲が分かりにくい

クラウドネイティブのアプリケーションやシステムは、従来の環境と比べると、セキュリティや環境設定の対策をどこまで行うべきか分かりにくいことも懸念の一つです。利用するクラウドサービスによって顧客側で対応すべきセキュリティ範囲が異なるため、必要なセキュリティ対策を不要と考えて行わず、不具合や脆弱性が生じてしまう場合があります。

クラウドネイティブでDX推進の課題を解決した活用事例

冒頭でもお話しした通り、クラウドネイティブを活用することでDXを推進することが期待できます。ここではDXを阻む課題と、それを打破したクラウドネイティブの活用事例についてご紹介します。

企業がDX推進で抱える課題

クラウドネイティブには多くのメリットがありますが、導入には高いハードルが存在します。多くの企業は既存のITシステムを維持することに追われ、新たなDX環境の構築には手が回っていないのが現状です。

また、コンピュータの能力が向上するにつれ、できること、やりたいことも増えていきます。一方で、管理すべきコンピューティングリソースも増加し、将来的には数倍になるかもしれません。そうすると、それらを活用する人間の能力が限界を迎える可能性もあります。

DX推進の課題を解決するクラウドネイティブの例

以下の画像は、企業が「利用状況を確認しながらリソースを増強する」方法を示したものです。

【図1】利用状況を見たうえで、必要に応じてリソースを増強していくのにかかる時間(イメージ)

【図1】利用状況を見たうえで、必要に応じてリソースを増強していくのにかかる時間(イメージ)

(出典)クラウドネイティブ化の具体的手法を解説!企業のアフタークラウドを支援するNebulaShift【イベントレポート前編】|SCSK IT Platform Navigator

図に示されているように、システムが整備されている部分(青字)は数秒~長くても数分で完了するものがほとんどです。一方、人が関与する部分(赤字)では、数日~数カ月かかります。人の判断を必要とするプロセスにはどうしても時間がかかってしまうのです。しかしクラウドネイティブなシステムであれば、これらを短縮することができます。

例えば、データをAPIで可視化する仕組みを取り入れることができれば、判断のスピードを上げられます。他の改善案としては、「インフラの担当者に相談する」箇所に、アプリケーションのリリースや修正などを自動化するCI/CD(継続的インテグレーション/継続的デリバリー)を取り入れ、パイプラインを構築し、開発と運用をつなぐ手法があります。アプリケーションの仕組みとしても、マイクロサービスアーキテクチャ化して、そのサービスを活用するためにAPIで連携、再利用することで、アプリケーションの改修スピードを向上させることも可能です。

また、画像の下にある「アプリケーションの起動デプロイ」は、クラウドネイティブにおいて中核となる技術で、コンテナアーキテクチャを採用することでデプロイ時間の短縮や復旧速度の向上が可能です。このような仕組みを作り、全体的な速度を速めていく技術こそがクラウドネイティブであると言えます。

クラウドネイティブを導入する際の注意点

クラウドネイティブを導入することで、企業はより柔軟な対応や市場変化への迅速な適応が可能になりますが、導入の際にはいくつかの注意点があります。

組織改革・意識改革

クラウドネイティブを導入する際には、従来の開発体制(開発手法)から、アジャイル開発やコンテナ、DevOpsといった新しい技術に対応できる体制を構築することが求められます。ニーズの変化や新技術に素早く応えるためには、技術力だけでなく意識づくりも重要です。クラウドネイティブの文化醸成のためには、開発メンバーだけでなく、場合によっては組織体制や経営層まで考え方を変える必要があります。

コンテナやKubernetesに精通したエンジニアの確保

クラウドネイティブ化を進める上では、コンテナを用いたアプリケーション開発や運用ができる技術者が不可欠です。特にコンテナを運用・管理するツールとしてKubernetesを採用することが一般的になっていますが、この分野に精通した技術者は限られているため、注意しなければなりません。

クラウド環境の整備

クラウドネイティブと聞くと、パブリッククラウドを思い浮かべるかもしれません。しかし、パブリッククラウド側に起因するシステムダウンの問題、そもそも外部に持っていくべきではないシステムなど、オンプレミス型のプライベートクラウドを構築したほうが良いケースもあります。各企業に応じた最適なクラウド環境の構築が必要です。

社内にクラウドネイティブについて詳しい担当者がいない、または導入にお困りの場合は、導入支援を行っている専門業者に相談してみるのも一つの方法です。見切り発車でクラウドネイティブ化を進めてしまうと、上手くいかずに余計なコストや時間が発生してしまう可能性が高いため、注意しましょう。

SCSKでは、クラウドネイティブの導入に関する各種支援サービスを提供しております。お気軽にご相談ください。

クラウドネイティブを丸ごと支援する「NebulaShift」

NebulaShiftは、SCSKのクラウドネイティブに関するテクノロジーと専門知識を結集したサービスです。豊富な経験と実績をもつ専門家がお客様のビジョンや事業構造に合わせたアプリケーション基盤の構築や既存環境の最適化、技術者育成、アジャイル開発の導入・内製化支援を通じて、企業のクラウドネイティブ化を幅広く支援します。クラウドネイティブ化についてお悩みの方は、ぜひご相談ください。

企業のクラウドネイティブ化を支援するサービス「NebulaShift」|についてはこちら

企業のクラウドネイティブ化を支援するサービス「NebulaShift」|についてはこちら

NebulaShiftについては、下記の記事もぜひご覧ください。

まとめ

今回は、クラウドネイティブのメリット・デメリットや導入の注意点、活用事例についてご紹介しました。クラウドネイティブの導入は企業にとってDX推進や競争力を高める重要な要素です。クラウドネイティブの導入を進めるには、従来の開発手法から脱却し、コンテナ基盤の構築やマイクロサービス化など、クラウドを前提とした開発体制を整える必要があります。

また、アプリケーションの開発基盤だけでなく、アジャイル開発やDevOpsといった新たな考え方を積極的に取り入れることができる組織文化の醸成や意識改革も重要です。クラウドネイティブの導入に関して課題を感じている方は、ぜひSCSKにご相談ください。

クラウドネイティブ導入にお困りならご相談ください

企業のクラウドネイティブ化を支援するサービス「NebulaShift」|についてはこちら

企業のクラウドネイティブ化を支援するサービス「NebulaShift」|についてはこちら

最新情報などをメールでお届けします。
メールマガジン登録