ソフトウェア開発の現場に定着しつつある開発手法のひとつに「クラウドネイティブ」があります。
本記事では、クラウドネイティブの概要やデメリット、構成する技術要素まで幅広く解説し、Webサービス向上に役立つ知識を提供します。
Web開発者やシステム管理者、ITコンサルタントの方に向けて、クラウドネイティブの概要を紹介しますので、ぜひ参考にしてみてください。

クラウドネイティブとは

クラウドネイティブとは、クラウドの活用を前提として、ソフトウェアの開発やアプリケーションの実行をおこなう仕組みを指します。

クラウドネイティブコンピューティング技術を推進する団体であるCNCF(Cloud Native Computing Foundation)が、クラウドネイティブについて以下のように定義しています。

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

これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。
これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。

【引用】CNCF Cloud Native Definition v1.1 日本語版

CNCFは、世界的なIT企業をはじめとする600団体以上が参加している、国際的にも影響力のあるクラウドネイティブの推進団体です。CNCFによるクラウドネイティブの定義は業界基準であると世界的に認められているといえるでしょう。

クラウドファーストとの違い

クラウドネイティブと似た言葉に「クラウドファースト」があります。クラウドファーストとは「システム構築をおこなう際に、クラウドの利用を優先して検討する」という考え方です。すべてをクラウド上でおこなうのではなく、状況に応じて、クラウド以外のサービスを利用する場合があります。

これに対して、クラウドネイティブは「クラウドの利点を徹底的に活用する」といった考え方であり、最初からクラウド上で動くことを前提に、クラウドの特性を活かせるよう設計されたシステムのこと指します。

以下が両者の最大の違いと理解しておきましょう。

  • クラウドファースト:「クラウドの利用を優先して検討する」
  • クラウドネイティブ:「最初の段階からクラウドの活用を前提とする」

企業における活用場面

企業におけるクラウドネイティブの活用場面は、以下のとおりです。

  • 社内の基幹システムを運用する
  • 自社サービスの開発や提供をする
  • 自社サービスの修正や機能追加をする

具体的な企業での活用事例は、Netflixの例があげられます。Netflixは2008年のデータベース障害をきっかけに、モノリシックなシステムからクラウドを利用した分散システムへの移行を決定しました。

2016年に移行が完了し、増大し続けるデータ容量への対応が可能となり、より快適なストリーミング視聴の提供やサービスの可用性向上を実現しました。

この活用事例からも、クラウドネイティブ技術が企業のIT基盤を支え、ビジネスの成長と競争力強化に貢献していることがわかります。

【参考】Netflixのクラウド移行が完了

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

クラウドネイティブのメリットは以下のとおりです。

  • IT環境の構築を迅速化できる
  • リソースの拡張や縮小を柔軟にできる
  • サービスを停止させずにメンテナンスできる

それぞれ解説します。

IT環境の構築を迅速化できる

クラウドネイティブでは、IT環境の構築が迅速におこなえます。クラウドを活用すると、ハードウェアの準備が不要なため、ソフトウェアによる環境構築が容易かつ速やかに対応が可能です。

以下で解説するコンテナ技術を用いれば、アプリケーションとその依存関係をひとつのパッケージにまとめられるため、異なる環境でも一貫した動作を実現できます。クラウドネイティブを活用すれば、従来の物理サーバーを使用する場合と比較して、大幅に環境構築の時間を短縮できます。

リソースの拡張や縮小を柔軟にできる

クラウドネイティブの環境では、需要に応じてリソースを柔軟に拡張・縮小できます。必要なときに必要な分だけ、リソースを調整できる点は、コストの最適化とパフォーマンスの向上の面でもメリットといえるでしょう。

サービスを停止させずにメンテナンスできる

以下で解説するマイクロサービスの技術を使えば、サービスを停止させずに継続的なアップデートと機能改善が可能です。オンプレミス環境では、ユーザーに与える影響が少ないタイミング(深夜など)にサービスを停止してメンテナンスをおこないます。クラウドネイティブ環境では、サービスを停止せずにメンテナンスができるため、ユーザーへ迷惑をかける心配もありません。

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

クラウドネイティブには多くのメリットがありますが、いくつかのデメリットもあります。

  • セキュリティの対象範囲が曖昧になる
  • 専門知識やスキルを持つエンジニアが不足している

それぞれ解説します。

セキュリティの対象範囲が曖昧になる

クラウドネイティブでは、セキュリティや環境設定の加減がわかりづらいため、必要なセキュリティの対象範囲が曖昧になってしまう可能性があります。

クラウドサービス提供者と利用企業間のセキュリティ責任分界点の曖昧さにより、外部流出厳禁の情報が漏れてしまったり、必要なセキュリティ対策をおこなわず不具合が生じてしまったりする場合があるのです。

専門知識やスキルを持つエンジニアが不足している

クラウドネイティブでは、従来のITインフラとは異なる専門知識やスキルが必要となりますが、そうした人材の不足が課題となっています。

専門知識やスキル持つエンジニアの不足は、クラウドネイティブ環境の構築や運用、セキュリティ対策の実施に遅れが生じる可能性があります。

また、社内に対応できるエンジニアがいないために、外注せざるを得ずコストが余分にかかる場合も少なくありません。エンジニア不足は、業務面や費用面で複数のデメリットが生じる点を理解しておきましょう。

さくらのパートナーネットワーク(テクニカルパートナー)

さくらのパートナーネットワーク(テクニカルパートナー)は「さくらのクラウド」にパートナー企業さまの製品・サービスを組み合わせて提供することで、新たなビジネスの好循環の創出を実現します。当社からパートナー企業さまには「さくらのクラウド」に関する「技術支援」などのプログラムを提供いたします。テクニカルパートナーはソフトウェア開発やアプリケーション実行のクラウド活用を推進し、お客さまのさまざまな課題に対して専門分野で技術的なご支援をさせていただきます。

クラウドネイティブを構成する技術要素

CNCFによるクラウドネイティブの定義では、代表する技術について、以下の5つがあげられています。

  • コンテナオーケストレーション (Kubernetesなど)
  • マイクロサービス
  • サービスメッシュ
  • 宣言型API
  • イミュータブルインフラストラクチャ

それぞれ解説します。

コンテナオーケストレーション (Kubernetesなど)

コンテナオーケストレーション

コンテナオーケストーションとは、情報システムの基盤技術として注目されている「コンテナ」を管理する仕組みです。コンテナは、ホストOSの環境を使って、アプリケーションの動作環境をひとつのパッケージに仮想的にまとめる手法です。従来の仮想技術と比較して、環境整備が迅速におこなえ、少ないリソースで動作するのが特徴といえるでしょう。

CNCFが提供しているコンテナオーケストレーションツール「Kubernetes」を利用すれば、コンテナ仮想ソフトウェアの管理と自動化、障害が発生した際の自動的な再起動などが実現できます。コンテナ技術を用いるサーバー仮想化については以下の記事でくわしく解説していますので、ぜひご覧ください。

マイクロサービス

マイクロサービス

マイクロサービスは、ひとつのアプリケーションを小規模で独立したサービスに分割してシステムを構築する設計手法です。各アプリケーションが特定の機能に特化したかたちとなっており、独立した開発やスケーリングが可能です。

従来のモノリシックなアプリケーションは、サービスの機能追加やテストが複雑になりがちですが、アプリケーションを小さな単位で分割できれば、各サービスの開発やテスト、リリースがおこないやすくなります。

万が一、あるサービスに障害が発生した場合でも影響を局所化できるため、システム全体の安定性が保たれます。

サービスメッシュ

サービスメッシュ

サービスメッシュは、マイクロサービス間の通信制御と監視をおこなう機能です。通信の可視化やトラフィック管理、セキュリティ強化を提供するソフトウェアであり、各サービスに依存しないかたちで運用されます。

異なるマイクロサービス同時がシームレスに通信でき、機能の追加や変更する際の複雑さが軽減され、全体の開発プロセスが向上します。サービスメッシュを活用すれば、複雑なマイクロサービス環境における運用効率と信頼性が向上するといえるでしょう。

宣言型API

宣言型APIは、目的とする状態を宣言するようなかたちで指定し、システムが自律的に制御をおこなう仕組みです。ユーザーは最終的な状態のみを指定し、実現方法は委ねられます。

従来の「命令型API」と比較し、ユーザーは複雑なコマンド操作をシステム自体に任せられる点がメリットとなります。宣言型APIを活用すれば、ユーザーは必要なすべての工程を段取りする必要がなくなり、運用負荷も軽減するでしょう。

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

イミュータブルインフラストラクチャは、既存の環境を変更せず、新しい環境の作成と切り替えによって更新をおこなう手法です。一度作成されたインフラの状態は不変(状態を持たない)とされ、新しいバージョンの環境が必要な場合には完全に新しいインスタンスとして構築されます。

インフラの状態を不変とすることで、環境間の一貫性が確保されるとともに、不具合が発生した際には迅速に元の状態へロールバックすることが可能です。変更履歴の複雑な管理や面倒な設定などをする必要がなくなるので、手間が省けます。

クラウドネイティブ化の進め方10ステップ

CNCFが提示するクラウドネイティブ化の手順は、以下の10ステップです。

クラウドネイティブ化の手順

  1. コンテナ化
  2. CI/CD構築
  3. オーケストレーション&アプリケーション定義
  4. 可観測性と分析
  5. サービスプロキシ、ディスカバリ&メッシュ
  6. ネットワーク&ポリシー
  7. 分散データベース/分散ストレージ
  8. ストリーミング&メッセージング
  9. コンテナレジストリ&ランタイム
  10. ソフトウェアディストリビューション

【参照】CNCF|Trail Map

上記の10ステップは、必ずしもすべてを実行しなければいけないというわけではありません。
今回は、そのなかから、1〜3について解説します。

1.コンテナ化

まず、アプリケーションはコンテナ化することが推奨されています。コンテナとは先述したとおり、仮想環境を生み出すひとつの手法であり、複数の実行環境を作り出せる利点があります。コンテナ化にあわせてマイクロサービスとして、コンポーネントやサービス群の複合構成でアプリケーションを作りましょう。

2.CI/CD構築

CI/CDを取り入れ、テストによりバグを素早く発見したり、変更箇所を自動的に適用したりする仕組みを構築します。CI/CDとは、ひとつの技術を指すのではなく、ソフトウェアの変更を常にテストでき、自動で本番環境にリリースできる状態にしておく手法です。

3.オーケストレーション&アプリケーション定義

オーケストレーションとは、アプリケーションやコンピュータリソース、サービスの運用管理などをソフトウェアにより自動化する機能です。クラウドネイティブでは、コンテナを実行単位としているため、実行状況や各種設定といった部分を自動的に管理するソフトウェアとして、オーケストレーションが活用されます。

コンテナのオーケストレーションツールとしてはCNCFが提供している「Kubernetes」の活用が業界ではスタンダードとされています。

まとめ

本記事では、クラウドネイティブについて概要やメリット・デメリット、関連技術などについて解説しました。クラウドネイティブは、Webサイトやアプリケーションのパフォーマンス向上に貢献する手法です。説明したとおり、クラウドネイティブは、IT環境の迅速な構築やコストの削減、柔軟なリソースの調整など、多くのメリットをもたらします。

当社は、日本のインターネット黎明期からデータセンター事業を展開し、「さくらのレンタルサーバ」「さくらのクラウド」など、コストパフォーマンスに優れたインターネットインフラサービスを提供してまいりました。

時代のニーズに目を向け、次世代の技術として注目されているコンテナ関連の最新技術を取り入れたサービスも取り扱っております。ぜひ、クラウドネイティブの導入についてお悩みの方は、お気軽にご相談ください。

構成・執筆・編集

さくらのクラウドチーム

コラムでは、さくらのクラウドに関連するビジネス向けの内容や、ITインフラ技術の説明などを掲載しています。

2024年12月26日公開