クラウドネイティブとコンテナ


クラウドネイティブって何だろう

定義を確認して意識を合わせることは大事だろう、もしかしたら『クラウド』AWSやGCPを使えばクラウドネイティブと考えているのではないだろうか?

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

簡易に言うと、
疎結合なシステムで、自動化と組み合わており、変更を最小限の労力で頻繁に行うことができる状態

CNCFの定義

日本語版:

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

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

Cloud Native Computing Foundationは、オープンソースでベンダー中立プロジェクトのエコシステムを育成・維持して、このパラダイムの採用を促進したいと考えてます。 私たちは最先端のパターンを民主化し、これらのイノベーションを誰もが利用できるようにします。

類似語の種類

  • クラウドファースト
    • 一般的なシステム構築のトレンドを指す言葉
    • クラウドサービスの導入を前提とし、IaasやPaasなどのクラウドサービスを利用して構築
  • クラウドバイデフォルト
    • 「政府情報システムの構築・整備に関しては、クラウドサービスの利用を第1候補(デフォルト)として考える」という方針

クラウドネイティブとクラウドファーストとクラウドバイデフォルトでは全然違うことがわかる、定義を考えない人はクラウドファーストとクラウドネイティブを一緒に考えている可能性があるので注意しよう

クラウドネイティブを進める方法

しかし、一番の問題はそんなクラウドネイティブをつくれと言われても、どうしたらいいかわからない。

そこでこれもCNCFの情報でありクラウドネイティブを進める方法として下記進め方をおすすめされている。

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

参照元CNCFのクラウドネイティブの進め方

ここでいう1のコンテナ化がマイクロサービス化を目指したかきかたというわけではなく、コンテナを使えばいいということだ。

終わりに

クラウドネイティブ化したら、いい影響は受けるだろう。
しかし既存システムをクラウドネイティブ化するにはどのようにすればいいかは、この考え方だけでは足りない。
新規システムはクラウドネイティブ化に乗ったアプローチが優先されていくだろう。そのためコンテナに関する知識は必須になってくるだろう。

最後に一言だけ言いたい。
経験重視の日本はついていけるのか?