先日、Microsoft Build Japanをオンラインで聴講しました。
そこで、クラウドネイティブという言葉を初めて聞いたので、これについて調べてみましたので紹介いたします。
"クラウドネイティブ"とは、最初からクラウド上で動くことを前提として、クラウドならではの利点ををより活かせるよう設計されたシステムや
アーキテクチャのこと。似た言葉として、"クラウドファースト"があります。
"クラウドファースト"は、クラウドの利用を第一に検討すべきとする考え方。一方、クラウドネイティブは単にクラウドを採用したシステムではなく、
クラウドならではの特性を活かせるように設計されたシステムです。
クラウドに移行するだけではなく、クラウドを前提にシステムを構築することで、クラウドの持つメリットを最大化させるわけですね。
では、クラウドの持つメリットとは何なのでしょうか。
Cloud Native Computing Fundation(toc/DEFINITION.md at main · cncf/toc · GitHub)の定義によると、
クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、
スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、
マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。
これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、
エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。
とあります。
つまりクラウドのメリットは、回復性、管理力、可観測性の3つであるといえます。
回復性とは、基盤の障害時やリソース枯渇時に自動的に復旧・拡張が行われること。
管理力とは、基盤を構成する要素の起動・停止・変更などを一括して管理し、それらの申請やテスト承認を含めた業務プロセスまで効率的に行えること。
可観測性とは、どこで、いつ、何のシステム要素が連携しているかを把握できること。
あらかじめクラウドを使うことを前提にシステムを構築することで、これらのメリットを最大限に享受できるシステムとすることができます。
今回調べたことで、世の中の流れは「オンプレミス環境をクラウドに移行する」ことから「初めからクラウド前提でシステムを構築する」ことに
シフトし始めていると感じました。この流れがわかるまで、イメージが掴めず悩みましたが、流れさえわかれば難しい話ではなかったですね。