【くらうどねいてぃぶ】

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

最終更新:
💡 クラウド前提で生まれた「クラウド育ちのアプリ」

クラウドの特性(必要に応じた拡張、自動化、障害からの回復)を活かすことを前提に、アプリを設計・構築・運用する考え方。コンテナ・マイクロサービス・宣言的APIなどの技術が代表例。

📌 このページのポイント
クラウドネイティブを代表する技術の例 コンテナ Docker Kubernetes 軽量な実行環境 マイクロ サービス 小さく独立した機能 宣言的API 望む状態 あるべき状態を書くと システムが近づける サービスメッシュ A B サービス間の通信を まとめて管理 (暗号化・経路制御) 疎結合で、回復しやすく、観測しやすいシステムを目指す CNCFの定義(v1.1)が挙げる例の一部。ほかにイミュータブルインフラなど
クラウドネイティブを代表する技術の例(CNCFの定義 v1.1 より一部)
ひよこ ひよこ
クラウドネイティブって「クラウドを使う」こととどう違うの?
ペンギン先生 ペンギン先生
オンプレのシステムを作りを変えずにクラウドへ移す方法は「リフト&シフト」と呼ばれて、ふつうクラウドネイティブとは言わないんだ。クラウドネイティブは、負荷に合わせて台数を増減する、サーバーが1台止まっても作り直して動き続ける、といった動きを最初から設計に入れておく考え方だよ。ただし自動復旧や自動スケールは、そう動くように設計・設定してはじめて得られるものだね。
ひよこ ひよこ
具体的にはどんな技術を使うの?
ペンギン先生 ペンギン先生
CNCFの定義(v1.1)は、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラ、宣言的APIなどを代表例に挙げているよ。宣言的APIは、Kubernetesのように「あるべき状態」を書いておくと、システムがその状態に近づけてくれる仕組みのこと。定義には、しっかりした自動化と組み合わせて、影響の大きい変更を頻繁に、予測どおりに行えるようにするとも書かれていて、CI/CDはそのためによく使われる手段なんだ。
ひよこ ひよこ
CNCFってたくさんプロジェクトがあるけど、全部使わないといけないの?
ペンギン先生 ペンギン先生
全部使う必要はないよ。CNCFの定義も、挙げた技術は例であって全部ではないとしている。たとえばコンテナの管理にKubernetesを選んだとしても、監視や通信の道具は、自分たちの課題に合わせて必要なものだけ選べばいいんだ。
ひよこ ひよこ
既存のシステムをクラウドネイティブに作り替えるのって簡単にできるの?
ペンギン先生 ペンギン先生
簡単ではないことが多いよ。大きな1つのアプリ(モノリス)をマイクロサービスに分ける方法がよく使われるけど、どこで分けるかの判断が難しいんだ。境界を間違えると、サービス同士の通信が増えるのに別々にはデプロイできない「分散モノリス」と呼ばれる状態になりやすい。マーティン・ファウラーは2015年の記事で、成功したマイクロサービスの事例のほとんどはモノリスから始めて大きくなってから分割したものだと書いていて、この進め方は「モノリスファースト」と呼ばれているよ。
もっと詳しく知りたい人へ

オンプレミスやプライベートクラウドでも「クラウドネイティブ」と言えるの?

言えます。CNCFの定義(v1.1)は、対象の環境としてパブリッククラウドだけでなく、プライベートクラウドとハイブリッドクラウドも挙げています。決め手は「どこで動かすか」ではなく、疎結合な構成と自動化によって、変更や障害に強いシステムを繰り返し同じ手順で作れるかどうかです。たとえば自社データセンターでKubernetesを使い、宣言的な設定と自動化で運用している場合もクラウドネイティブな作り方に当たります。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「クラウドネイティブ」って出てきたら「クラウドの特性を活かす前提で作られたアプリや設計思想のことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Cloud Native」 = クラウド生まれの
💬 Cloud(クラウド)+ Native(生まれの・土着の)。クラウドが母国語のように自然に使えるアプリ、というニュアンスだよ

参考資料

← 用語集にもどる