情シスのかたち

powered by gin

クラウドネイティブとは?クラウドファーストとの違いや構成要素を解説!

クラウドネイティブとは?

ソフトウェアからインフラ環境までクラウドサービスを利用してシステムを構築し、クラウド上での運用・管理を行っていくことです。オンプレミスで運用・管理を行っていた設備をそのままクラウド上に移行しても、クラウドネイティブとは呼ばれません。あくまで最初からクラウド上での運用を想定し、クラウドの特性を活かすためにシステムの設計・構築を行っていくことをクラウドネイティブと呼びます。

クラウドネイティブの定義を提唱したのは、2015年に発足されたCNCF(Cloud Native Computing Foundation)と呼ばれるプロジェクトになります。 CNCFの創立メンバーにはGoogleTwitterCiscoなどの企業が名を連ねており、2019年には前年比150%増となる会員数を獲得しました。

CNCFはアプリケーションを起動させるために必要な本体・ミドルウェア・OSなどを一括で搭載したコンテナ技術とテクノロジーを連携させ、最小限の労力で運用・管理を行っていくことを目的としています。 クラウド上で業務に必要なデジタルツールの活用やデータ共有を行なえるようにすることで、クラウドの強みを活かした多様な働き方の実現、ユーザーの増減や機能拡張に対して柔軟に対応可能なスケーラビリティに優れたシステムの構築が可能です。

例えば、IaaS(Infrastructure as a Service)を利用して仮想サーバー・ストレージ・ネットワークなどを入手して既存システムの改修を行い、PaaS(Platform as as Service)のアプリケーションサーバー・データベースを活用してソフトウェアが稼働する状態を整えます。 そして、SaaS(Software as a Service)の活用でGsuite ・Salesforceなど、利用したいソフトウェアを全てサービスとして利用することができるため、コストの見える化・余分なコストの削減が可能です。

クラウド化がもたらす4つのメリットをおさらい

オンプレミスからクラウドに移行した場合のメリットを振り返っておきます。

低コストでの導入・運用が可能

ネットインフラやソフトウェアは全てベンダーが提供しているサービスを利用するため、オンプレミスと比べて低コストでの導入・運用が可能です。 専用ハードウェアの構築や特別な作業は必要としないため、初期費用のコストカットとスムーズな導入を実現します。 また、使用した分の料金を支払うサブスクリプション制を導入している企業が多く、余分なコスト発生を防ぎます。

管理者の業務負担を軽減

ハードウェアやサーバーは自社で管理する必要が無いため、更新やメンテナンス作業はベンダーに一任可能です。 また、通信障害やサーバートラブルに見舞われた場合もベンダー側が基本的に全て対応するため、管理者への業務負担増大を回避します。 そして、定期的にバックアップデータを取っておけばトラブルがあった場合でも、業務の停滞や取引先への影響を最小限に抑えられます。

柔軟な対応が可能

ユーザーの増減や機能の拡張に柔軟に対処できます。 社内で利用ユーザーが増えた場合も人数分の料金を支払えば利用することができ、機能を拡張する場合でもWeb上での設定変更やサーバー台数の増加により、業務の停滞を回避します。 サイジングを自由に調整できるため、スケーラビリティに優れたシステムを構築することが可能です。

セキュリティレベルが高い

多くの顧客を抱えるベンダーは自社が提供するサービスを安定的に運用していくために様々な角度から安全対策を考えています。 日々変化するサイバー攻撃マルウェア感染に対応するために、強固なセキュリティレベルを維持する必要があるからです。

簡単にサイバー攻撃を受けて停止するサービスであれば、多くのユーザーを獲得できません。 そのため、オンプレミスで管理するよりも高いレベルでの安全性が期待できます。

クラウドネイティブはクラウドファーストやクラウド・バイ・デフォルトと違うの?

クラウドファーストは企業や組織でのシステム構築を行う場合、SaaSやIaaSなどのクラウドサービスを優先的に使用していくとの考えです。 一方、日本政府が打ち出したクラウド・バイ・デフォルトは政府の情報システム導入・構築に関してはクラウドを最優先に利用していき、少子高齢化や地方過疎化などの社会的問題の解決に役立てようとするのが狙いです。

政府がクラウドサービスを優先して利用していく方針を示したことで、企業のビジネスや自社への取り組みにも影響を与えることが期待されています。

比較表

クラウドネイティブクラウドファーストクラウド・バイ・デフォルト
コンセプト
  • クラウドでの利用を想定して一から設計を実施
  • スケーラビリティに優れたアプリケーションの構築・実行
  • 企業・組織がシステムの新規導入や構築するの場合、ベンダーが提供するサービスの利用を優先
  • 政府の情報システム導入時にクラウドサービスの利用を最優先
発信元
  • CNCF
  • 日本政府
目的
  • クラウドの特性を最大限活かし、最小限で効率的な運用・管理を実行
  • オンプレミスよりも低コストで効率的な運用・管理を実現
  • 経済発展と社会的問題の解決の両立した社会の形成
  • 少子高齢化による労働人口不足への一つの解決策
  • 過疎化した地方での利便性向上
構成要素・活用技術
  • コンテナ
  • マイクロサービス
  • サービスメッシュ
  • イミュータブルインフラストラクチャ
  • 宣言型API

クラウドネイティブの構成要素とは?

コンテナ、マイクロサービス、サービスメッシュ、イミューダブル・インフラストラクチャー、宣言型APIの機能・特徴を紹介します。

コンテナ

コンテナを稼働させるホストOS上にミドルウェア・設定ファイル・本体アプリケーションなどを一括で搭載し、アプリケーションを稼働させていくことです。 コンテナエンジン内のカーネルと呼ばれるソフトウェアがリソースの配分やアプリケーション起動など多岐に渡る処理を担当しており、CPUリソースへの負荷の最小化と高速動作を実現します。

カーネルが従来の仮想空間で必要だったハイパーバイザーの役目を果たしており、コンテナではゲストOSの起動をしなくてもアプリケーションの稼働を実行可能です。 そのため、アプリケーションを動かすまでの時間短縮とリソースの効率的な運用を実現します。

コンテナ導入によるメリット

  • 必要最小限のCPU・メモリー使用の実現
  • 高速動作によるパフォーマンス向上
  • 作業時間の短縮
  • 通信障害時にバックアップ環境への素早い切替

マイクロサービス

個別に開発された小さな規模のサービスを複数組み合わせることで、一つのソフトウェアを構成していく開発技法の一つです。 様々な目的ごとにサービスの開発を進めることで、ユーザーの要望に柔軟に対応可能なサービスを構築できます。 AmazonNetFlix・LINEなど、ユーザーに人気のサービスを提供している企業で導入されています。

全ての機能を単一のアプリケーションに集約し、機能改善や新機能の追加が難しかったモノリシックアーキテクチャに比べ、一つ一つ個別のサービスとして機能するマイクロサービスは柔軟でスピーディーなアプリケーション開発を実現します。

マイクロサービスがもたらすメリット

  • 開発サイクルの短縮
  • 高度なスケーラビリティを搭載
  • 失敗時のコスト発生を最小化
  • コード更新・コード再利用の円滑化
  • スピーディーな新機能追加や機能改善を実施

サービスメッシュ

アプリケーション間のデータ通信を最適化し、サービス間の連携強化と利便性向上を図る仕組みです。 マイクロサービスと並行して存在するサイドカープロキシがデータ内容を他のプロキシに送り、網目状のネットワークを形成します。 全てのデータ通信はプロキシを経由して他のサービスと連携させることで、相互運用性やアプリケーションの潜在的機能を引き出すことが可能です。

また、独立した個別の機能を保有して一つのアプリケーションを構成するマイクロサービスの機能を成立させています。 サービスメッシュが多数のマイクロサービスを結び付けることで、クラウド上でのシステム構築・運用を自動化したSDN(Software Defined Network)の構築を実現させます。SDNはゼロトラストと合わせて昨今注目を集めています。

サービスメッシュがもたらすメリット

  • マイクロサービス同士の相互連携レベルの強化
  • アプリケーションの潜在的機能の向上
  • データ通信の自動化・最適化を実現
  • アプリケーション拡張時のタイムロス削減
  • SDNの実現

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

インフラ管理の方法の一つでミドルウェアやアプリケーションのバージョンアップ、バグ修正などの管理をせず、イミューダブル(不変)で運用・管理をしていく考え方です。 通常は本番環境に更新作業やバグ修正などを行いますが、イミューダブル・インフラストラクチャーでは本番環境と開発環境で同じ構成・能力のインフラを用意し、ロードバランサ―やルーターで切り替えられるような体制を整えておきます。

既存の本番環境はそのまま稼働させ、開発環境でOS・ミドルウェア・アプリケーション更新作業やテストを実証し、実用性に問題ないと判断した場合はロードバランサールーターで開発環境に切り替えます。 システムの安定化に加え、更新作業で多大な業務負担が掛かっていた管理者の作業負担の軽減を実現します。

導入メリット

  • システムの安定稼働を実現
  • 複雑性を最小限に抑えた一貫性のあるシステム
  • 管理者の業務負担軽減

宣言型API

結果や目的を宣言することでアプリケーションの効果的な動作を実現させる方法です。 結果に沿った状態でソフトウェアは動作を行い、アクシデントで結果から外れた状態になった場合でも自律的に目的の状態になるよう動きます。 例えば、ロボットにリモコンを掴ませようと思った場合、手続き型APIの場合は「目的地までどの程度進み、左右の位置を細かく指示して、どの位先まで手を伸ばすべきか」細かい指示が必要でした。

ですが、宣言型APIの場合はリモコンを掴むといった指示だけを与え、細かい動きはロボットに任せる形を取っています。 宣言型APIの活用でシステム管理者は常時監視の必要性が無くなり、細かい調整や指令も不要となります。

宣言型APIのメリット

  • 管理者の業務負担軽減
  • アプリケーションの複雑さを軽減
  • AI・ロボットを運用した自動運用が可能

クラウドネイティブに期待される事とは?

アジャイル開発でユーザーのニーズに応えながらも、仕様変更による時間ロスやコストの膨張を最小限に留めることが可能になりました。 そのため、組織の協力体制を一層高めることが期待されています。

アジャイル開発

アジャイル開発は仕様や設計変更があることを前提に大まかな仕様と要求を決め、イテレーションと呼ばれる短期サイクルを繰り返して開発を進める手法です。 開発途中で設計変更があった場合でも該当箇所のイテレーションに戻って再度検証を進めていくため、コストや時間のロスを防ぎます。 また、ユーザーとコミュニケーションを取りながら柔軟に対応できるため、様々な顧客ニーズに応えられ満足度の高いシステムを提供可能です。

イテレーションの流れ

  1. 計画
  2. 設計
  3. 実装
  4. テスト

アジャイル開発のメリット

  • 開発期間の短縮
  • ユーザー満足度の高いシステムを提供可能
  • 途中の仕様変更要請にも柔軟に対応可能
  • 仕様変更やトラブルによる業務負担を最小化

DevOps

開発チーム(Development)と運用チーム(Operations)が協力しながら、システムの開発を進めていく概念を指します。 新たなサービスや製品を生み出したい開発チームと安定稼働を目的とする運用チームでは目標が異なり、対立関係になることも少なくありません。 ですが、クラウドネイティブやアジャイル開発を利用することで、安定性を保ちながらスピーディーにシステムを市場に投入できる環境が整いつつあります。

そのため、共に本来の目的として掲げていた「ソフトウェア・システムの利便性向上や自社ビジネスの価値を高める」ことを実現するために、互いに協力する重要性をDevOpsで説いています。

まとめ

クラウドネイティブの考えを採り入れることで、効率的な運用や短期間の開発サイクルで新サービスを提供することが可能になりました。 ただし、クラウドネイティブは全く新しい発想でもなく、実践すれば全てが解決するわけではありません。 これまでのクラウドサービスの使い方を見直し、自社にとってどんな技術・セキュリティソリューションが必要なのか考え続けることが重要です。