クラウドネイティブ：主要テクノロジーと実装の考え方

このブログでは、キーテクノロジーや実装のアイデアなど、専門家によるクラウドネイティブテクノロジーの解釈をご紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/3939ba0c-c229-95d8-cf67-165e948b08ab.png)


著者： Youjing

クラウドネイティブとは？この言葉の解釈は人それぞれです。この記事では、さまざまなプロジェクトでの豊富な議論と実践的な経験をもとに、クラウドネイティブ技術に関するアリババの配信専門家の解釈を紹介します。クラウドネイティブなアプリケーションを構築する方法、主要なクラウドネイティブ技術、クラウドネイティブな実装に関する考え方について説明します。

#はじめに
インターネットは、人々の生活、仕事、勉強、娯楽の方法を変えてきました。テクノロジーの急速な発展により、クラウドコンピューティング市場は、初期の物理マシンから仮想マシン（[Bare Metal Instance](https://www.alibabacloud.com/product/ebm?spm=a2c65.11461447.0.0.7b761530ZN4gxL)）、そして[コンテナ](https://www.alibabacloud.com/product/kubernetes?spm=a2c65.11461447.0.0.7b761530ZN4gxL)へと進化し、インターネットアーキテクチャは、集中型アーキテクチャから分散型アーキテクチャ、さらにはクラウドネイティブアーキテクチャへと進化しました。現在では、「クラウドネイティブ」という言葉は、企業や開発者の間で業界標準の地位を確立し、クラウドコンピューティングの未来を担うものとなっています。

クラウドネイティブテクノロジー（アーキテクチャ）の人気は急上昇していますが、オンラインコミュニティやアリババ社内では、このトピックに関する幅広い記事や議論が行われているにもかかわらず、このコンセプトは人によって異なる解釈がなされています。そのため、明確で包括的な標準的定義はまだありません。

最近、私が参加したクラウド移行プロジェクトでは、多くのクラウドネイティブ技術が使われていました。この機会に、プロジェクトでの議論や実務経験を踏まえながら、私の考えをお伝えしたいと思います。

#原点に立ち返る
本題に入る前に、業界で影響力のあるPivotal SoftwareとCNCFが「クラウドネイティブ」をどのように定義しているかを見てみましょう。

###Pivotal Software
Pivotal Softwareは、アジャイル開発の分野におけるリーダーであり（以前はGoogleと契約していた）、素晴らしい経歴を持っています（EMCとVMwareによって設立された）。Pivotal Cloud Foundry（2011年から2013年にかけてPaaSの分野で大ヒット）やSpring Frameworkを発表し、クラウドネイティブ技術のパイオニアでもあります。次の図は、Pivotalが「クラウドネイティブ」をどのように定義しているかを示したものです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/58fb9c86-3dcb-f344-1a0e-f917c0be283e.png)



Pivotal SoftwareのMatt Stine氏がクラウドネイティブの概念を初めて提唱したのは2013年のことです。2015年、マット・スタイン氏は著書「Migrating to Cloud-Native Application Architectures」の中で、クラウドネイティブアプリケーションアーキテクチャの主な特徴として、12因子アプリケーション、マイクロサービスアーキテクチャ、セルフサービスアジャイルインフラストラクチャ、APIベースのコラボレーション、アンチフラジリティなどを定義しました。Matt Stine氏は2017年にその定義を修正し、クラウドネイティブアーキテクチャの6つの特徴である「モジュール化」「観察可能性」「展開可能性」「テスト可能性」「処理可能性」「交換可能性」を示しました。Pivotal Softwareの公式サイトで公開された最新のものでは、クラウドネイティブなアプリケーションやサービスは、DevOps、継続的デリバリ、マイクロサービス、コンテナのコンセプトの統合であると特徴づけています。

###CNCF
CNCF（Cloud Native Computing Foundation）は、業界では有名な組織です。GoogleやRedHatなど、オープンソースのインフラを代表する企業が共同で主催する財団です。CNCFのミッションは、当時主流であったプラットフォーム「Docker」が支配するコンテナ市場に対抗することでした。CNCFは、[Kubernetes](https://www.alibabacloud.com/product/kubernetes?spm=a2c65.11461447.0.0.7b761530ZN4gxL)プロジェクトを通じて、オープンソースコミュニティにおけるオーケストレーションの分野で誰もが認めるリーダーシップを維持しており、クラウドネイティブアーキテクチャの定義と普及の第一人者です。ここでは、CNCFが「クラウドネイティブ」をどのように定義しているかを紹介します。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/48baa0af-0ab4-73cc-addc-55f4823bd8a9.png)


2015年、CNCFは当初、クラウド・ネイティブ・アーキテクチャの3つの特徴である「コンテナによるカプセル化」「自動化された管理」「マイクロサービス」を定義しました。2018年、CNCFはクラウドネイティブアーキテクチャーの定義を更新し、宣言型APIとサービスメッシュ（2017年にオープンソースコミュニティで登場した新技術で、マイクロサービスと並行する技術）という2つの新機能を追加しました。これらの技術は、耐障害性が高く、管理や観察が容易な疎結合のシステムを構築するために用いられます。

###コンセンサスを得るために
コミュニティがエコシステムを発展させ、クラウドネイティブアーキテクチャの境界を押し広げていく中で、クラウドネイティブの定義は常に変化しています。企業（PivotalやCNCFなど）はこの概念を異なる形で定義しており、1つの企業が異なる時期に異なる定義を使用することもあります。ムーアの法則に従って、クラウドネイティブの定義は今後も変化していくことが予想されます。

PivotalとCNCFの2つの異なる定義については、業界に影響力を持つ2つの企業が採用している組織構造と視点の違いに起因していると考えています。

- Pivotal Softwareは、PaaS（Platform as a Service）レイヤーにおけるエンドツーエンドのソリューションとデジタルトランスフォーメーションの実現を目指し、カルチャー、プロセス、メソドロジー、ブループリントプランニング、ソフトウェア開発のための包括的なモデルセットを提供しています。そのソリューションは、トップダウンのアプローチをとる伝統的な大企業および中堅企業のCIO向けに設計されています。
- CNCFは、クラウド・ネイティブ・エコシステムとテクノロジーの革新者、改革者としての地位を確立しており、テクノロジー、ツールチェーン、基盤となるインフラを重視し、オープンソース・コミュニティの開発者、インターネット企業、新興企業からなるターゲット・オーディエンスに大きな影響力を持っています。ボトムアップ型のアプローチを採用しています。
Pivotal Softwareはクラウドネイティブアーキテクチャの概念や方法論のパイオニアであり、CNCFはベストプラクティスに貢献しています。

しかし、Pivotal Softwareはコンテナ技術のコンセプトを提唱し、CNCFはマイクロサービスというコンテンツを通じて技術を実装しているようです。では、この2つは本当にそんなに違うのでしょうか？

#クラウドネイティブに対する私見
###クラウドネイティブな思考からクラウドネイティブなアプリケーションへ
インターネットが誕生してから現在に至るまで、私たちはインターネット思考、そしてインターネット+思考（本質的にはインターネットネイティブ）を採用してきました。企業がある段階に達すると、価値思考（あるいは、価値ネイティブ思考）を身につける必要があります。したがって、クラウドコンピューティングの実務者は、クラウドネイティブな思考を身につける必要があるのです。技術改革や新しい方法の広範な採用では、常に抽象的なパラダイムが目に見える解決策よりも優先されます。

Pivotal Software社とCNCF社の定義を参考にして、私はクラウドネイティブであることの意味を以下のように理解しました。


>クラウドネイティブとは、Pivotal Software社のような方法論とCNCF社のような技術フレームワークの両方を用いて、クラウド上で動作するアプリケーションシステムを構築することを意味します。このようなアプリケーションシステムは、従来のシステム構築手法から脱却し、クラウドの持つネイティブな機能を最大限に活用することで、その価値を高めます。クラウドネイティブアーキテクチャの特徴を取り入れ、ビジネスを迅速に強化することができます。

この抽象的な解釈は、4つの質問に分解することができます。

- 活用すべきクラウドの機能とは何か？
- 従来の方法とは異なる方法でクラウドネイティブアプリケーションを構築するにはどうすればよいか？
- クラウドネイティブアプリケーションの主な特徴は何か？
- クラウドネイティブテクノロジーのフレームワークで採用されている主要なテクノロジーは何か？

###クラウドの能力
クラウドコンピューティングの登場は、仮想化技術の発展・成熟と密接に関係しています。クラウドは、仮想化技術を利用して、ITハードウェアリソースやソフトウェアコンポーネントを標準化、抽象化、拡張し、製品のようなサービスにして、ユーザーが「使った分だけ支払う」ことを可能にする、新しいITインフラストラクチャ提供方法です。ある意味、IT業界のサプライチェーンを再構築するものです。サービス提供のモデルとしては、IaaS（Infrastructure as a Service）、PaaS（Platform as a Service）、FaaS（Function as a Service）、DaaS（Data as a Service）などがあります。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/4e4aab54-2ce3-b7b1-cdcc-20cdcc627362.png)


**IaaS**

IaaSとは、コンピューティング、ストレージ、ネットワーク、セキュリティなど、クラウドコンピューティングの基本となる機能を指します。

**PaaS**

クラウドデータベース、クラウドオブジェクトストレージ、ミドルウェア（キャッシュ、メッセージキュー、ロードバランシング、サービスメッシュ、コンテナプラットフォームなど）、アプリケーションサービスなど、クラウドの基本機能の上に構築されるハイレベルなドメインまたはシナリオ指向のサービスを指します。

**サーバーレス**

ユーザーがインフラを購入したり気にしたりすることなくアプリケーションを実行し、従量課金方式でサービスを弾力的に拡張することができるサーバーレス・コンピューティング・アーキテクチャです。PaaSからの進化の極致ともいえます。現在、このアーキテクチャには3つのタイプのソリューションがあります。

- 機能指向のソリューション：開発者は機能のみを提供し、対応する機能はイベントやHTTPリクエストによって実現されます。「[Alibaba Cloud Function Compute](https://www.alibabacloud.com/product/function-compute?spm=a2c65.11461447.0.0.7b761530ZN4gxL)」や「AWS Lambda」などがその例です。

- アプリケーション指向のソリューション：開発者は、サーバーリソースを購入することなく、ビジネスアプリケーションのみを提供します。このようなソリューションの例としては、Google Cloud Runや[Alibaba Cloud EDAS Serverless](https://www.alibabacloud.com/product/edas?spm=a2c65.11461447.0.0.7b761530ZN4gxL)などがあります。

- コンテナ型ソリューション：アプリケーション向けソリューションを改良したもので、コンテナイメージを利用して環境の違いを遮蔽し、柔軟性を高めます。[Alibaba Cloud Serverless Kubernetes](https://www.alibabacloud.com/product/kubernetes?spm=a2c65.11461447.0.0.7b761530ZN4gxL)やAWS Fargateなどが挙げられます。

**DaaS**

データをサービスとして利用することで、上位層のアプリケーションにまでアーキテクチャが拡張され、AIやクラウドサービスと併用することで、様々な高付加価値サービスを提供することができます。これらのサービスには、ビッグデータに基づく意思決定、映像や顔の認識、ディープラーニング、シナリオに基づく意味理解などが含まれます。これは、未来のクラウドのコアな強みでもあります。

テクノロジーやオープンソースのソリューションが発展を続け、クラウドサービスプロバイダーがより多くの製品や機能を提供するにつれ、物理マシン、仮想マシン、コンテナ、ミドルウェア、さらにはサーバーレスアーキテクチャに至るまで、今日のテクノロジーアーキテクチャのあらゆるレイヤーが徐々に標準化されてきました。レイヤーが標準化されればされるほど、そのレイヤーが貢献できる付加価値は大きくなります。また、ビジネスとは直接関係のない比較的一般的な技術（サービスメッシュなど）も標準化され、基盤となるインフラに組み込まれています。テクノロジー・アーキテクチャのレイヤーが標準化されるたびに、非効率で面倒な作業の一部が解消されます。また、アプリケーション層では、AIなどの新技術が提供されており、企業が適切なソリューションを探索する際に発生するコストを削減し、新技術の検証と提供を迅速化し、ビジネスを真に強化するのに役立ちます。

一方、ユーザーは、レゴブロックで建物を作るように、自分のニーズに最も適したクラウド製品を選択し、すぐに利用できるリソースを使用して、反復的な作業を避けることができます。これにより、ソフトウェアやサービスの開発の各段階における効率が大幅に改善され、様々なアプリケーションやアーキテクチャの導入が加速されます。すでにクラウドを利用しているユーザーは、必要に応じてリソースを消費し、いつでもスケールアウトできるため、大幅なコスト削減を実現できます。

###クラウドネイティブなアプリケーションの構築
前節では、クラウドの強力な機能について説明しました。従来のアプリケーションと比較して、新しいクラウドアプリケーションは、アプリケーションのライフサイクル全体の各段階で、これらの能力に適応する必要があります。これには、ソフトウェア・アーキテクチャの設計、開発、構築、展開、配信、監視、O&Mなどの段階での適応が含まれます。このプロセスを、ユーザーが直面しなければならないさまざまな問題の観点から説明します。

###クラウドネイティブなアーキテクチャを設計するには
優れたアーキテクチャーは、時間をかけて進化・進歩した後に誕生します。一度に作られるものではありません。そのため、アーキテクチャの設計を語ることには意味がありません。アーキテクチャの進化の目的は、ある問題を解決することでなければなりません。クラウドネイティブ・アーキテクチャの設計をよりよく理解するために、以下に挙げる問題に対処することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/4892a319-471f-b9ed-0067-13bb7f9461f4.png)

- マイクロサービス・アーキテクチャを使用して、モノリシック・アーキテクチャにおける複雑さの問題を解決する。
- ガバナンスフレームワークとモニタリングソリューションを使用して、マイクロサービス間の通信問題を解決する。
- コンテナサービスを使用して、マイクロサービスフレームワークに多数のアプリケーションを展開する問題を解決する。
- コンテナサービスのオーケストレーションとスケジューリングの問題を解決するために、Kubernetesを使用する。
- マイクロサービスフレームワークへの侵入の問題を解決するために、サービスメッシュを使用する。
- サービスメッシュをKubernetes上で実行することで、より優れた基礎的サポートを提供する。

単一のマイクロサービス・アプリケーションは、複雑性が低く、モニタリング、ガバナンス、デプロイメント、スケジューリングのための包括的な機能セットが強力な基盤システムによってサポートされているため、クラウド・ネイティブ・アーキテクチャに適応しています。しかし、システム全体から見ると、複雑さは減少しません。むしろ企業は、強力なアーキテクチャとO&M機能を備えた堅牢な基盤システムを構築するための高いコストを負担しなければなりません。

また、企業がこれらの機能を実現するために使用するテクノロジースタックやミドルウェアシステムは、クローズドでプライベート性が高いため、すべてのビジネスニーズを満たすことは困難です（アリババの場合も同様）。クラウドホスティングは、このようなプロジェクトの全体的な複雑さを軽減することができます。クラウドサービスプロバイダーは、複雑な基盤システムを引き継ぎ、きめ細やかなサービスを提供することができます。プロジェクトは最終的にインフラフリーのデザインに進化し、YAMLやJSONの宣言型コードを使って基盤となるインフラ、ミドルウェア、その他のリソースを編成します。このようにして、クラウドはアプリケーションのあらゆるニーズを満たすことができます。最終的には、企業はオープンで標準的なクラウドテクノロジーシステムを採用することになるでしょう。

###クラウドネイティブなアプリケーションを実現するには
アプリケーションを継続的に提供するという問題に対処するために、DevOpsを導入しました。

DevOpsは誰もが知っている概念です。私は、高速配信と継続的な最適化を実現するために設計された一連の価値観、原則、方法、実践、ツールであると考えています。その主な利点は、R&DとO&Mの間のギャップを解消し、ソフトウェア・デリバリー・プロセスを迅速化し、ソフトウェアの品質を向上させることです。下図は、DevOpsのパイプラインを示したものです。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/20e406c2-aab7-ee0a-6aee-c8deac513f4f.png)


このプロセスに関わるプラットフォームは以下の通りです。GitHub、Travis、Artifactory、Spinnaker、FIAAS、Kubernetes、Prometheus、Datadog、Sumology、ELKなどがあります。

DevOpsを真に導入・実践するための鍵は、以下の質問に対する答えにあります。

- 方法：開発者が書いたコードを、O&Mのサポートなしにテスト環境や本番環境にプッシュできるか？
- ツール：成熟したO&Mツールのプラットフォームや監視システムがあり、開発チームがオンライン上の様々な問題、障害、ロールバックを容易に処理できるか？
- カルチャー：開発者は、コードの欠陥、O&Mの失敗、または開発者が行ったコードの変更に起因する問題の責任を負い、オンラインのユーザーエクスペリエンスに直接オーナーシップを持っているか？
- デリバリーの測定：デプロイメント頻度、変更リードタイム、サービス回復時間、変更失敗率などのKPIは、業界のユーザー要求に沿っているか？

要するに、DevOpsはO&Mサービスをサポートします。新技術や開発のための一連の自動化ツールをO&Mに導入することで、開発を本番環境に近づけ、開発とO&Mのプロセス全体を管理することで、自由度と革新性を確保します。モニタリングツールや故障防止・制御ツールをファンクションスイッチと併用することで、ユーザーエクスペリエンスと短納期のバランスを取ることができます。

今後、技術者がビジネスソリューションやビジネスコードだけを考えていればいいのであれば、すでに市場に豊富にある技術製品やクラウドベンダープラットフォームを速やかに統合する必要があるでしょう。そうすれば、技術者は、多様化・複雑化するビジネスニーズを満たすために、ソリューションを見つけ、ビジネスとテクノロジーを結びつけることに集中できるようになります。O&Mの面では、クラウドはインフラの複雑さを隠し、ツールチェーン開発のためのO&Mのミッドエンドと大規模なO&Mにシフトします。これにより、実務担当者は、アプリケーション開発の着実な進行を確保しながら、コスト、効率、安定性に注力することができます。

###クラウド・ネイティブ・アプリケーションの主な特徴
- 弾力的なスケーラビリティ：弾力的な課金ポリシーを使用することで、アプリケーションは数秒でオートスケーリングを完了し、ビジネスのワークロードに応じて動的にリソースを割り当てたり解放したりすることができます。これにより、ユーザーは経費を大幅に削減することができます。キーテクノロジーは、サービスの軽量コンテナ化と、コンテナサービスによって実現される不変のインフラストラクチャです。

- フォールトトレランス：ロードバランシング、自動トラフィックシェーピング、デグラデーション、サーキットブレーキング、異常トラフィックの自動スケジューリング、フォールトアイソレーション、自動フェイルオーバーなどをサポートしています。

- 観測性 ：リアルタイムメトリクス、トレース分析、ログなど、きめ細かな監視指標を提供し、自動アラートトリガーや秒単位の持続的なクエリによる監視をサポートしています。

- リリースの安定性：頻繁な変更による安定性のリスクに対処するため、アプリケーションは完全に自動化された変更リリースシステムを備えています。このシステムは、グレーおよびブルーグリーンの自動リリースポリシーをサポートしており、変更前、変更中、変更後のモニタリングベースラインの確立に使用できます。また、異常な変更があった場合には、サーキットブレーキングや自動ロールバックが可能です。

- 管理のしやすさ：手動メンテナンスから自動メンテナンスに移行するために、アプリケーションはサーバーにログオンする必要のない自動例外分析と診断をサポートします。

- 究極のユーザーエクスペリエンス：アプリケーションの割り当てと作成、リソースの適用、環境設定、開発とテスト、リリース、監視とアラーム、トラブルシューティングなど、スムーズで使いやすい機能を提供することで、オールインワンの体験を提供します。また、これらの機能を積み木のように組み合わせることで、複雑な操作を回避することができます。

- 柔軟な課金体系：アプリケーションは、従量制（トラフィック、ストレージ、通話、時間による）、加入制（日、月、年による）、予約制、先取り課金制など、さまざまな価格戦略をサポートしています。実際の状況に応じて、最適な課金方法に動的に切り替えることができます。


#クラウドネイティブ・アーキテクチャーの主要技術
###コンテナ
Chroot Jailと呼ばれる最古のコンテナは1979年に開発された。2008年にLXC（Linux Container）として再定義され、cgroupsによるリソース管理とnamespaceによるビューの分離を組み合わせて、プロセスレベルの分離を実現した。しかし、コンテナ技術における最大の革新は、コンテナイメージ（またはDockerコンテナ）です。このコンテナには、アプリケーションの実行に必要な完全な環境（OS全体のファイルシステム）が含まれていました。さらに、一貫性があり、軽量で、ポータブルで、言語に依存しないものでした。これにより、ユーザーは「build once, run anywhere」（つまり、開発環境、テスト環境、本番環境）を実現し、構築・配布・配信活動を完全に標準化することができました。また、不変的なインフラの基盤を提供しています。

###Kubernetes
[Kubernetes](https://www.alibabacloud.com/product/kubernetes?spm=a2c65.11461447.0.0.7b761530ZN4gxL)は、クラウドコンピューティングとクラウドネイティブ・アーキテクチャのためのLinuxシステムです。

GoogleがBorgをベースに開発したオープンソースのコンテナオーケストレーション・スケジューリングシステムであり、大規模な産業生産環境でのコンテナアプリケーションの使用を可能にしています。

宣言型API、CRDとコントローラによるスケーラブルなプログラミングインターフェイス、そして先進的な設計思想に基づき、Kubernetesはコンテナオーケストレーションの分野で（Docker SwarmやApache Mesosを抑えて）一世を風靡し、コンテナオーケストレーションシステムのデファクトスタンダードとなっています。

Kubernetesプラットフォームは、ユーザーをリソース管理から解放し、インフラをさらに標準化し、複雑さを軽減し、リソース利用率を向上させます。さらに、Kubernetesは、ハイブリッドクラウド、マルチクラウド、エッジクラウドなどのデータセンターをまたいだ展開のコストを削減します。

###サービスメッシュ
[サービスメッシュ](https://www.alibabacloud.com/product/servicemesh?spm=a2c65.11461447.0.0.7b761530ZN4gxL)は、ビジネスロジックを非ビジネスロジックから切り離し、開発者がビジネスロジックのみに集中できるようにすることを目的としています。このソリューションでは、ビジネスロジック（サービスディスカバリー、ルーティング、ロードバランシング、トラフィックシェーピングとデグラデーションなど）とは無関係な多数のクライアントSDKをビジネスアプリケーションから分離し、インフラストラクチャミドルウェアメッシュにプッシュダウンされる別のプロキシ（Sidecar）プロセスに入れます（TDDLからDRDSへの移行に似ています）。このソリューションにより、アプリケーションは、システムフレームワークの変更によるリスクが軽減され、合理化・軽量化され、起動速度も速くなります。これにより、アプリケーションのサーバーレスアーキテクチャへの移行が容易になります。メッシュは、それぞれのニーズに応じて自動でイテレーションやアップグレードを実施することができます。これにより、グローバルなサービスガバナンス、段階的なリリース、およびモニタリングが容易になります。さらに、メッシュの境界を、データベースメッシュ、キャッシュメッシュ、メッセージメッシュに拡張することができます。このようにして、サービス間通信にTCP/IPプロトコルを採用することで、サービス通信を真に標準化することができます。



###コードとしてのインフラ（IaC)
インフラストラクチャとその完全なライフサイクル（作成、破壊、スケーリング、交換）をコードで記述し、terraform、ROS、CloudFormationなどの適切なツールでオーケストレーション、実行、管理します。例えば、ユーザーはコードを定義するだけで、アプリケーションが必要とするすべての基本リソース([ECS](https://www.alibabacloud.com/product/ecs?spm=a2c65.11461447.0.0.7b761530ZN4gxL)（Elastic Compute Service）、[VPC](https://www.alibabacloud.com/product/vpc?spm=a2c65.11461447.0.0.7b761530ZN4gxL)（Virtual Private Cloud）、[ApsaraDB for RDS](https://www.alibabacloud.com/product/apsaradb-for-rds-mysql?spm=a2c65.11461447.0.0.7b761530ZN4gxL)、[SLB](https://www.alibabacloud.com/product/server-load-balancer?spm=a2c65.11461447.0.0.7b761530ZN4gxL)（Server Load Balancer）、[ApsaraDB for Redis](https://www.alibabacloud.com/product/apsaradb-for-redis?spm=a2c65.11461447.0.0.7b761530ZN4gxL)など）を簡単に作成することができ、リソースの申請や購入のためにコンソールのページを頻繁に切り替える必要がありません。このアプローチでは、インフラストラクチャのコードはバージョン管理され、レビュー可能、テスト可能、追跡可能であり、ロールバックして一貫性を維持し、コンフィギュレーションドリフトを防ぐことができます。また、インフラストラクチャのコードを共有したり、テンプレートを作成したり、拡張したりすることも容易です。IaCは、全体的なO&Mの効率と品質の向上に加えて、ユーザーがインフラの全体像を容易に把握できるようにします。

###クラウドIDE
クラウドベースのIDE研究のライフサイクル全体で、開発、デバッグ、プレリリース、本番環境、CI/CDリリースを統合した完全な体験を提供します。また、クラウドプラットフォームでは、様々なコードライブラリテンプレートを提供し、分散コンピューティングによるコンパイル速度の向上や、コードの推奨・最適化、自動バグスキャン、論理的・システム的リスクの特定などをインテリジェントに実現します。ローカルな開発環境とは全く異なる、クラウド時代の開発モデルは、より高い開発効率、より速いイテレーションスピード、より優れた品質管理を特徴とすることが考えられています。

#クラウドネイティブなアーキテクチャの実現
私は、企業のデジタルトランスフォーメーションを成功させることを使命とするGTSデリバリーチームのメンバーとして、インターネット業界の経験を活かして、伝統的な企業のトランスフォーメーションを支援し、クラウド・ネイティブ・アーキテクチャを採用する方法について考えてきました。ここでは、クラウドネイティブ・アーキテクチャーを導入するためのロードマップをご紹介します。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/30342687-4c48-b665-fdc9-7a03cbae43a8.png)


この図のY軸は、ビジネスアジリティを示しています。クラウドネイティブなビジネスアジリティを実現するためには、以下のことが必要です。

- ステップ1：クラウドへの移行による基礎固め。
- ステップ2：PaaSプラットフォームを構築する。Alibaba Cloud [Container Service for Kubernetes](https://www.alibabacloud.com/product/kubernetes?spm=a2c65.11461447.0.0.7b761530LrlsKM)（ACK）は、O&M担当者を基盤となるリソースやO&Mの複雑さから守り、高性能でスケーラブルなコンテナアプリケーション管理機能を提供します。また、開発者がアプリケーションを構築できる環境を提供することで、アプリケーション開発の高速化、PaaSの実現、ビジネスの俊敏性、弾力性、耐障害性、観測性を実現します。
- ステップ3： PaaSを活用したDevOpsの実現 PaaSプラットフォームは、インフラの俊敏性を高めることでビジネスの俊敏性を高め、DevOpsはプロセスの提供によって俊敏性を高めます。DevOps（Alibaba CloudのApsara DevOps）は、アプリケーションの継続的な統合と提供を可能にし、バリューストリームの作成を加速し、ビジネスの迅速な反復を実現します。
- ステップ4：マイクロサービスのガバナンスを確立する。マイクロサービスベースの変革では、複雑なサービスを、互いに疎結合で独立した小さなユニットに分割し、独立したデプロイメントとアップデートをサポートします。これにより、ビジネスレイヤーのアジリティが真に向上します。ユーザーは、SpringCloudやDubboなどのサービスをサポートするAlibaba Cloud EDASを使用して、マイクロサービスを実装することができます。しかし、テクノロジーの発展に伴い、マイクロサービスガバナンスの最適なソリューションは、現在ではサービスメッシュになっています（ASMとIstioの互換性のため）。
- ステップ5：マイクロサービスの高度な管理を実装する。マイクロサービスアーキテクチャは、API管理、マイクロサービスの分散統合、およびマイクロサービスプロセスの自動化を実装します。API管理は、企業がマルチチャネルのエコシステム（自社チャネル、WeChat、Tmallなど）を確立し、最終的にAPIエコノミーを構築するのに役立ちます。マイクロサービスの分散統合とプロセスの自動化により、企業は統一されたビジネス・ミッドエンドを構築することができます。

図のX軸は、ビジネスの堅牢性を示しています。ビジネスの堅牢性を実現するためには、以下のことが必要です。

- ステップ1：単一のデータセンターを構築する。金融、通信、エネルギーなどの業界に属する企業のお客様の多くは、データセンター内のプライベート・クラウド上でビジネス・システムを運用しています。企業は通常、開発の初期段階でまず単一のデータセンターを構築することを選択します。
- ステップ2： 複数のデータセンターを設置する。ビジネスが成長し、データセンターの重要性が高まると、企業はディザスタリカバリセンターやアクティブ・アクティブ・データセンターのアーキテクチャを構築し、データセンターの1つが完全に故障してもサービスが利用できるようにします。
- ステップ3：ハイブリッドクラウドの構築 パブリック・クラウドの普及に伴い、多くの企業のお客様は、フロントエンドのビジネス・システムをパブリック・クラウドに移行したり、複数のクラウド・サービス・プロバイダーのクラウド・サービスを利用したりしています。このようにして、基盤となるITインフラストラクチャは、最終的にはハイブリッドクラウドまたはマルチクラウドの実装になります。

クラウドネイティブ・アーキテクチャは非常に魅力的に見えますが、導入の段階で深く踏み込んでいくと、非常に複雑であることがわかります。その複雑さは、新しいコンセプトや技術的な機能の幅広さだけでなく、お客様の期待とクラウドネイティブテクノロジーが生み出す価値との間の大きなギャップや、将来への不安感にも反映されています。今後は、私の考え、経験、実践を共有し、議論していきたいと思います。これは連載記事の第1回目です。私の文章が、企業のデジタルトランスフォーメーションに貢献できることを願っています。

#あとがき
クラウド時代には、"クラウドネイティブとは何か "という問いに正しく答えるために、アプリケーション・アーキテクチャやITインフラを正しく理解するための斬新な考え方やコンセプトが必要になります。これからの時代は間違いなくクラウドネイティブです。そのため、変革を目指す企業には、ツールだけでなく、概念から方法論、そしてツールへと進む完全な哲学が必要です。このようにして初めて、クラウド時代の到来を受け入れ、クラウドネイティブ・アーキテクチャの価値を最大限に高めることができるのです。

これは開発者にとって最高の時代です。クラウドベンダーにとっても最高の時代です。さらに、クラウドサービスの提供を専門とするプロフェッショナルにとっても、今が最高の時代です。

未来はここにありますが、一様ではありません。クラウドネイティブを理解し、受け入れ、提供するために協力していきましょう。

免責事項：ここに記載されている見解は参考情報であり、必ずしもAlibaba Cloudの公式見解を示すものではありません。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/cloud-native-is-here-but-not-evenly-distributed_597096)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*


*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*