最近「クラウドネイティブ」という言葉を聞くよね。
様々なカンファレンスやセミナー、WEBページでも紹介されているけどイマイチ理解ができなくて…
The Linux Foundation の派生プロジェクトであるCloud Native Computing Foundation (CNCF) は、クラウドネイティブ(技術)を次のように定義しているよ。
“クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどのモダンでダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。
これらの手法により、耐久性があり、管理および監視しやすい疎結合システムを実現できます。これらを堅牢な自動化と組み合わせることで、エンジニアは影響力の大きい変更を最小限の労力で頻繁かつ予測どおりに行うことができます。(※)”
これではたしかに理解し難しいよね。関連して言及される、他の概念と一緒に掘り下げていこう!
クラウドファーストという言葉は聞いたことある?
あるよ!「クラウドネイティブ」で検索したら、クラウドファーストとの違いを説明したページもたくさん出てきた。でも大きな違いはないように感じられたんだけど。
一言で言うと、クラウドネイティブは技術的なアプローチのことで、クラウドファーストは企画的なアプローチのことなんだ。
二つとも技術的な言葉だと思っていたけど違うの?!
クラウドネイティブは「こういう技術を利活用していこうぜ!」という具体的な技術、例えばコンテナやサービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、宣言型APIを採用・促進すること。
対してクラウドファーストは、クラウド・バイ・デフォルト原則とも呼ばれ、企業や官庁などの組織が情報システムを整備する際に「クラウドサービスの利用を第一候補として、その検討を行うこと(※)」、つまり考え方のことを指すよ。
クラウドファーストで検索してみると政府に関連した情報がヒットするんじゃないかな。デジタル化戦略のキーワードでもあるね。
なるほど、二つを並べて比較するものではないんだね。
DX、DevOpsの関連キーワードとしても、クラウドネイティブはよく出てくるよね。これらの実現には、クラウドネイティブが関わってくるの?
それについては、この図を基に説明するね。
まずDXについては、経済産業省のDXレポートをはじめ様々なところで定義されているよね。
「ITの浸透が、人々の生活をあらゆる面でより良い方向に変化させる(※1)」という概念であったり、「仮想世界と物理的世界が融合され、モノのインターネット(IoT)を通じてプロセスや業界の動きを変革する新しいビジネスデザインへの改革プロセス(※2)」であったり、「企業が…第3のプラットフォーム(クラウド、モビリティ、ビッグデータ/アナリティクス、ソーシャル技術)を利用して、新しい製品やサービス、新しいビジネス・モデルを通して、ネットとリアルの両面での顧客エクスペリエンスの変革を図ることで価値を創出し、競争上の優位性を確立すること(※3)」であったり。
学問、社会、ビジネスのスコープでそれぞれに語られているけど、共通しているのは、デジタル技術/IT技術を活用しながら「より良い方向に変化させましょう」というモチベーションだね。
ふむふむ。
DevOpsは、開発部門、IT運用部門、あるいは品質保証(QA)部門が協力するプロセスと方法を推進するものだよね。
その通り!CI/CD が自動テストや頻繁な統合などソフトウェア開発そのものに着目するのに対して、DevOps はCI/CD のような技術的な側面に加えて、開発や運用といった組織的・文化的な側面をも内包するんだ。また、高い品質を確保しつつ、システムへの変更をコミットしてから通常の運用に移るまでの時間を短縮することを目的とした一連のプラクティスとすることを提案しているよ(※)。
つまり図の通り、DevOpsにおける開発と運用を技術的な側面から支えるのがクラウドネイティブで、組織的・文化的な側面から支えるのがDXなんだ。
クラウドネイティブは、DXに必要不可欠と言われることもあるよね。それは「システムをドラスティックに変えていく上で、開発スピードを上げるモダンなシステム開発や環境構築に活かされるコンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、宣言型APIなどといった技術がたくさん集まっている」という考えから出てきていると予想されるよ。
ありがとう!やっとクラウドネイティブが何なのか、理解できたよ。
それにしても、実際にいざ活用しようとすると、何から手を付ければ良いか戸惑いそうだね。クラウドサービスを利用すれば、クラウドネイティブを活用してると言えるのかな?
確かにクラウドサービスは、クラウドネイティブの利活用に打って付けのサービスと言えるね。
実際、複数のツールの組合せで実現するような仕組みを、クラウドサービスはマネージドサービスとして、ハードウェア調達から必要なソフトウェアのインストール・設定、そしてそれらの運用までを代行して、すぐ使える形で提供してくれてるしね。
一方でクラウドネイティブで扱われるツールや技術の多くは、必ずしもクラウドサービスが前提になっている訳でもないんだ。
自分でハードウェアを調達して、そこに必要なソフトウェアのインストール・設定を行い、自分で運用する事もできるんだよ。
結局、クラウドネイティブはモダンなシステム環境構築とその運用、それからモダンなアプリケーション開発を実践していくためのツールを含めた技術体系の総称であって、クラウドサービスはその実現手段の選択肢になってくるんじゃないかな。
なるほど…
でも、クラウドネイティブってこの前ちょっと調べて、CNCF(CloudNativeComputingFoundation)のランドスケープの絵とかも見たけど、ビックリするくらいたくさんツールあるし、1つ1つも情報いっぱいあって、連携させるとなると組合せは無限大、グループ分けされた技術の名前を見ててもピンとこないものばかり…
ちょっと敷居が高すぎる印象で、どこから手をつけて、どう学んでいけば良いのかも、全く想像つかないな。
まずは体験してみることが一番だよ!とはいえ、クラウドネイティブを取り巻く技術やツールは膨大だから、ゼロベースから始めるのは厳しい・・
そこでカサレアルが提供するトレーニング「クラウドネイティブ道場」をお勧めするよ!
技術・ツール群の中から代表的なモデルケースを通じて、クラウドネイティブの全体像を掴むことができるから、これからクラウドネイティブな開発に適応していきたい人、クラウド環境に移行できる知識とスキルを身に着けたい人に向いてるんだ。
目的に合わせたトレーニングのカスタマイズの相談や、各技術・ツールをより深く学ぶコースの選択もできるんだね。
さっそくトレーニングを受けてみるよ!