まる見え!クラウドネイティブ(1):歴史と定義

2024.04.08
マルチクラウド 基礎 クラウド活用 クラウドネイティブ
まる見え!クラウドネイティブ(1):歴史と定義

はじめに

日鉄ソリューションズ株式会社のシステム研究開発センター(シス研)に所属する原です。普段はクラウドネイティブにおける開発・運用技術の研究開発をしています。今回から複数回にわたり、クラウドネイティブの基礎や、クラウドネイティブを推進する上で重要な機能であるオブザーバビリティという概念について幅広く発信していきたいと思います。まずは初心者向けの内容からスタートしていきますので、これを機会に徐々に理解を深めてもらえると嬉しいです。

さて、第1回目はクラウドネイティブが生まれた背景およびクラウドネイティブとは何か?について解説をしていきます

クラウドネイティブの歴史

まずは、クラウドコンピューティングの誕生から歴史を振り返ってみましょう。諸説ありますが、商業的にクラウドコンピューティングという言葉が初めて登場したのは、2006年に当時GoogleのCEOであったエリック・シュミットがとある会議の中で発言したことが由来とされています。以来クラウドがバズワード化し、2011年米国国立標準技術研究所(NIST)がクラウドコンピューティングの定義※1を発表して以降、日本でも同年AWSが東京リージョンを開設し、クラウドコンピューティングが利用されるようになりました。2018年には日本政府がクラウド・バイ・デフォルト原則※2という方針を打ち出すなど、現在ではシステム構築の第一選択肢として考えられるほど広く普及が進んでいます。

一方、コンテナ技術というものが2013年のDockerの登場によって本格的に普及しはじめ、アプリケーション開発に革命をもたらします。コンテナとは、アプリケーションを実行するための環境をパッケージ化した技術で、可搬性やスケーラビリティに優れた特徴を持っています。ちなみに、可搬性とは他の環境に移植して動作させることが容易なことを示す指標です。2015年にはGoogleにより長らく社内で使ってきたBorg※3というツールをもとに開発されてきたコンテナオーケストレーターであるKubernetesが発表されます。同時にLinux Foundation傘下のプロジェクトとしてCloud Native Computing Foundation(CNCF)の設立が発表され、Kubernetesの開発がGoogleからCNCFへ寄贈されました。その後2年ほど複数のコンテナオーケストレーターツールが乱立していましたが、2017年頃にはKubernetesが事実上のデファクトスタンダードになってきたと記憶しています。

クラウドネイティブはこのようにクラウドコンピューティングとコンテナ技術の発展の中で、それらを活用したアプリケーション開発を推進する動きのもと誕生してきた概念であることを覚えておきましょう。

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

クラウドネイティブが誕生した当初、しばらくの間は明確な定義が存在しておらず、各ベンダーが各々の定義を市場に発信していました。しかし2018年にCNCFがクラウドネイティブの定義※4を発表して以降、今日に至るまで以下の内容(一部抜粋)が引用されることが多いです。

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

これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。

一読するとややわかりづらく感じますが、大きく以下の4つのポイントに集約できます。

  • クラウドネイティブの目的は、クラウド上において、スケーラブルなアプリケーションを構築すること
  • このアプローチとして、コンテナ、サービスメッシュ、マイクロサービスなどの技術を用いる
  • 結果として、回復性、管理力、可観測性のある疎結合なシステムが実現する(信頼性のあるシステムの実現)
  • 堅牢な自動化と組み合わせることで、エンジニアがシステムの変更を最小限の労力で、予測通り実現する(アジリティの高いシステムの実現)

つまり、クラウドネイティブとは、単にクラウドを利用するだけではなく、コンテナやサービスメッシュなどの技術を活用することで信頼性とアジリティを両立させ、結果としてスケーラブルなアプリケーションを実現しようとするシステム構築手法、もしくはそのアーキテクチャ、考え方を意味すると言えるでしょう。別の言い方をするとクラウドの持つメリットを最大化するための考え方とも言えることができます。

おわりに

今回はクラウドネイティブの歴史とその定義に関して解説しました。クラウドネイティブは信頼性とアジリティを両立する革命的なシステム構築手法であることがわかったと思います。NSSOLでは、2014年頃からDockerコンテナに注目し、2016年からはKubernetesを実業務において活用しています。クラウドネイティブを語るうえでは、クラウドコンピューティングと、このコンテナ技術を組み合わせて使うところが最初のポイントになります。

しかし、クラウドネイティブなシステムは簡単に構築できるのでしょうか?次回はクラウドネイティブ化を実装する上で、難しいポイントについて解説しますので、実務に活かせるヒントをお探しの方は、ぜひ楽しみにしていてください。

関連ページ

おすすめブログ

AWSコンテナ入門(1):Amazon ECSとAmazon EKSの役割と概要
AWSコンテナ入門(1):Amazon ECSとAmazon EKSの役割と概要
「Amazon ECS」と「Amazon EKS」というサービスをご存じでしょうか?どちらも、AWSが提供するコンテナ関連のサービスなのですが、名前も似ており使い分けがいまいちピンと来ていない方も多くいらっしゃることと思います。これを機に、ECSとEKSの役割や特長について学んでみませんか?