クラウドへの迅速でクリーンな移行を実現する方法 

ビジネスによってニーズは異なりますが、どのようなニーズであっても、ACKは**アリババクラウド**が提供するすべてのメリットを利用して、シームレスにクラウドネイティブ化するお手伝いをします。

劉生（Liu Sheng）著。

クラウドネイティブの時代が到来し、クラウドアプリケーションのライフサイクル全体の形を変えつつあります。

Alibaba Cloudの[コンテナサービス](https://www.alibabacloud.com/product/container-service?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)チームは、クラウドネイティブ技術にいち早く投資し、何千もの顧客のサービスのコンテナ化とクラウドへの移行を支援してきました。Container Serviceの顧客は、Alibaba Cloudの上位10社の顧客、中国での事業拡大を目指す海外企業、他のクラウドベンダーから移行した顧客など、多様な企業グループに分かれています。一部の顧客は、オンプレミスのデータセンターを残し、すべてのサービスをアリババクラウドに移行しました。そして現在、同じように移行を希望する新規顧客が増えています。顧客のビジネス要件はそれぞれ異なり、その結果、コンテナ・プラットフォームに異なるカスタマイズを必要とするようになっています。しかし、あらゆるユースケースの中で、当社のすべてのお客様に共通していることがあります。私たちは、すべてのお客様がクラウドへの移行を迅速かつシームレスに行うためのベストプラクティス、ツール、およびソリューションと考えています。この記事の主な目的は、これらのベストプラクティス、ツール、ソリューションを共有することです。

それぞれの移行が始まる前に、私たちが答えなければならない3つの質問があります。1つ目の質問は、[Alibaba Cloud Container Service for Kubernetes](https://www.alibabacloud.com/product/kubernetes?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)（ACK）を使用して、お客様のサービスの信頼性、安定性、セキュリティ、柔軟性をどのように確保するかということです。2つ目の質問は、スムーズでシームレスな移行を実現するために、移行プロセスをどのように設計するかということです。3つ目の質問は、ACKでより高いスケーラビリティを提供するために、どのようにさらなる改善を行うかということです。

#Container Service for Kubernetesでお客様により良いサービスを確保する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/f84a20a2-cf17-92ee-fb61-64630f57ff67.png)


ACKは、Alibaba CloudのIaaS（Infrastructure-as-a-Service）プラットフォームの安定した基盤の上に構築されており、低コスト、最大のスケーラビリティ、Alibaba Cloudの他のサービスとのグローバルな統合などの利点を提供します。さらに、ACKはAlibaba Cloudのセキュリティの傘の下で動作し、インフラストラクチャからコンテナまで、そしてサービスレイヤーのボトムからトップまでをカバーしています。ACKは長年にわたり、何千もの顧客がサービスをスムーズに実行できるようにサポートし、ユーザー体験に関する膨大なデータを蓄積し、アリババの毎年恒例の「[ダブルイレブンショッピングフェスティバル](https://www.alibabacloud.com/customers/double-11?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)」を主催してきました。ACKはKubernetesの標準に基づいて構築されており、お客様とユーザーから最も要求される機能を大幅に改善しています。そのため、我々のユーザーは、我々が提供するすべての利点を考えると、ベンダーロックインを心配する必要はありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/0a6ab578-cc52-4e6c-802f-24d2a06ea03a.png)

当社のお客様のほとんどは、ACKに移行する前に、セルフホスティングされたKubernetesクラスタでサービスをホストしています。ACKのサービスへの移行を納得させたのは、低コスト、スケーラビリティ、アリババクラウドの完全なインフラストラクチャとの統合、優れたパフォーマンス、優れたセキュリティ、そしてACKが標準的なKubernetesに勝る総合的な顧客体験の利点でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/b08e84d2-d957-e575-5e81-c731701f7a4e.png)

これに加えて、アリババクラウドがクラウドサービスを展開しているすべての地域でACKを利用することができます。

#クラウド移行ソリューション設計
完全なサービス移行には、クラスタ計画、データ移行、監視切り替え、ログ切り替え、そして最後のステップである本番トラフィックの切り替えが含まれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/87396897-eaa0-30d7-d6ee-dad781a186db.png)

したがって、ユーザーは、ACKへの移行に関わるコンポーネント、データ、およびサービスを明確に理解していなければなりません。まずはクラスタとその多くの側面を計画することから始めましょう。まずはサーバーモデルです。CPU負荷の高いサーバーが必要なのか、GPU負荷の高いサーバーが必要なのか。[Elastic Container Service](https://www.alibabacloud.com/products/elastic-container-instance?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)や[X-Dragon Bare Metal Server](https://www.alibabacloud.com/product/ebm?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)の方がサービスに適しているのか？次にネットワークリソースです。[VPC プライベートネットワーク](https://www.alibabacloud.com/product/vpc?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)と[従来のネットワーク](https://www.alibabacloud.com/help/doc-detail/61651.htm?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)のどちらがいいですか？クラスタ内のポッドは通信に[Flannel](https://coreos.com/flannel/docs/latest/?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)や[Terway](https://www.alibabacloud.com/help/doc-detail/97467.htm?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)を使用していますか？次に、必要なストレージの量です。ほとんどのユーザーは、サービスを立ち上げて稼働させ、動的スケーリングを設定するために必要なストレージの量から始めることをお勧めします。

セキュリティも非常に重要です。インフラストラクチャのセキュリティには、よく設定されたルールが必要であり、コンテナイメージのセキュリティには、プライベートレジストリと定期的なセキュリティスキャンが必要になるかもしれません。様々なサービス間の通信を保護するネットワークセキュリティポリシーを含むアプリケーションセキュリティは不可欠です。セキュリティの次は監視です。ACKは、インフラストラクチャ全体から個々のコンテナまで、自己ホスト型クラスタよりも包括的な監視を提供します。また、さまざまな閾値を使ってアラートを設定することもできます。このために、Alibaba Cloud Log Serviceは、ログデータのためのオールインワンの完全なサービスです。ほとんどのお客様は、ACKに移行する際に[ログサービス](https://www.alibabacloud.com/product/log-service?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)の使用を選択しています。

データの移行は、全体の作業の中で最も重要な部分であると言って間違いありません。これには、データベース、ストレージデータ、コンテナイメージの移行が含まれます。データの移行は非常に重要な部分です。データには、データベースデータ、ストレージデータ、コンテナイメージが含まれます。プロセスをスムーズかつ安全に行うために、アリババクラウドでは、エンタープライズグレードの製品と移行ツールのセットを提供しています。また、お客様がACKを最大限に活用できるように、お客様のサービスを改善するためのアプリケーション変換サービスも提供しています。これには、コンテナイメージアドレスの更新、サービスの公開方法の最適化、ストレージドライブのマウント方法などが含まれますが、これに限定されません。

最後になりましたが、お客様にはCIまたはCDソリューションを提供し、迅速なサービスのイテレーションを実現しています。前述のステップが実装され、テストされた後、本番トラフィックは徐々に切り替えられていきます。クラスタ計画からトラフィックの切り替えまで、これらのステップを経て、ACKへの移行を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/8e18a730-73a2-39f5-818a-55546d9b6df4.png)



前の表は、エンタープライズコンテナ化されたアプリケーションのライフサイクルモデルです。このモデルは、アプリケーションの側面と役割に基づいています。例えば、ビジネスアーキテクトは、クラウドへの移行が企業にどのような価値をもたらすのか、総所有コスト（または TCO）やさまざまなビジネスシナリオにどのようなメリットをもたらすのか、クラウド・プラットフォームがセキュリティ、コンピューティング、ストレージ、ネットワーク機能の面で現在のビジネス・ニーズを満たしているかどうかに焦点を当てる必要があります。そして、ネットワーク管理者は、現在のビジネスやネットワークの選択によって必要とされるクラスターの容量や規模を計画することに注力する必要があります。あとはシステム管理者とアプリケーション管理者次第です。このモデルでは、サービスをクラウドに移行した後に、より安定的に、より費用対効果の高い、効率的にサービスを利用できるようにすることを主眼としています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/8a096ffa-9e0f-c917-7f9c-a8f314e0f43a.png)


フルスタッククラウドのマイグレーションには、ワンタイムマイグレーションと段階的マイグレーションの2種類があります。ご想像の通り、ワンタイムマイグレーションとは、一気に移行を行うことを意味します。この場合、すべてのコンポーネントを移行してテストを行い、本番トラフィックをACKに切り替えます。そして、一定期間サービスが安定した状態を維持した後、元の本番環境をオフラインにします。段階的マイグレーションとは、当然ながら徐々に移行を行うことを意味します。サービスの一部を引き継ぐために、ACKクラスタを設置します。これを元の本番環境と連携してサービスを提供します。そして、元の本番環境が不要になりオフラインになるまで、残りのコンポーネントを徐々にクラウドに移行していきます。ワンタイムマイグレーションは実行は簡単ですが、ビジネスへの影響が大きいのに対し、段階的なマイグレーションはより複雑ですが、業務への影響は小さくなります。ニーズに最も適した方法を選びましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/32f53cb5-dbb3-2def-00ff-c3951018f3b7.png)


ワンタイムマイグレーションは、さらに2つのシナリオに分けることができます。1つ目は、顧客がセルフホスト型のKubernetesクラスタからACKに移行する場合です。この場合、顧客はすでにクラウドネイティブの変換プロセスの大部分を完了しているため、このステップ以降の移行は比較的簡単です。2つ目のシナリオでは、顧客は仮想マシンやベアメタルサーバ上で動作する従来のアプリケーションを使用してサービスを提供しています。このシナリオでは、より多くの作業が必要となるため、このプロセスを支援するためのツールセットを提供しています。1つの例としては、ソースコードを自動的に検査し、アプリケーションのデプロイに使用される[Docker](https://www.docker.com/?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)ファイルとYAMLファイルを生成することができる[derrick](https://github.com/alibaba/derrick?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)があります。もう一つは、ECS SMCと協力して、ECS SMCのソフトウェアを使用して仮想マシンをコンテナイメージに変換し、それをACKクラスタ上で実行できるようにしていることです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/6f6f8270-f782-aab3-f2fa-8391b696c848.png)

[ack-image-builder](https://yq.aliyun.com/go/articleRenderRedirect?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0&url=https%3A%2F%2Fgithub.com%2FAliyunContainerService%2Fack-image-builder)は、ACKクラスタ用のカスタムイメージを作成するためのテンプレートを生成し、検証モジュールを通じてカスタムイメージがACKクラスタの要件を満たしているかどうかをチェックします。[sync-repo](https://yq.aliyun.com/go/articleRenderRedirect?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0&url=https%3A%2F%2Fgithub.com%2FAliyunContainerService%2Fsync-repo)は、ユーザーがコンテナイメージをAlibaba Cloud [Container Registry](https://www.alibabacloud.com/product/container-registry?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)にバッチ移行するのに役立ちます。[Velero](https://yq.aliyun.com/go/articleRenderRedirect?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0&url=https%3A%2F%2Fgithub.com%2FAliyunContainerService%2Fvelero-plugin)は、ユーザーが自作のKubernetesクラスタや他のクラウドプラットフォームにあるすべてのアプリケーションを、迅速にACKクラスタに移行するのに役立ちます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/cb32b41a-e50f-6bde-5cb7-f29ca3ceb9d0.png)

データの完全性は、データ移行にとって非常に重要です。データの種類ごとに、Data Online Migration Service (DOMS) など、データの整合性を確保するためのエンタープライズレベルのツールを用意しています。データ移行の一部として、信頼性の高い移行が非常に重要です。異なるユーザーデータタイプに基づいて、オンラインデータ移行サービスのDOMS、[オブジェクトストレージサービス](https://www.alibabacloud.com/product/oss?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)（OSS）、PBレベルのポイントツーポイント、オフラインデータ移行サービスのData Transportなど、一致するエンタープライズレベルの移行ツールを使用します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/70be4225-65e7-9d48-024d-6583e9358962.png)

データやアプリケーションをクラウドに移行した後、監視やロギングなどの残りのコンポーネントを設定してテストする必要があります。すべてが設定されている場合は、Alibaba Cloud [Domain Name Service](https://www.alibabacloud.com/product/dns?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0)（DNS）を使用して、本番トラフィックを切り替えます。

#アプリケーションの改善と最適化

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/7b276a62-3fd8-d94f-3207-51ce089a2911.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/d4805804-bb98-34da-87fb-fca0c667c0ff.png)


自己ホスト型の Kubernetes クラスタから ACK への移行には、自動ストレージスケーリングなどの機能のサポートも必要です。従来のアプリケーションをACKに移行するのは、より複雑です。そこで、必要な作業を減らすために、いくつかのソリューションを思いつきました。例えば、リモートのアクティブアクティブ環境を設定し、通常は仮想マシンやベアメタルサーバーでホストされている従来のアプリケーションを、ACK上に配置されたIstioグリッドに統合し、すべてのサービスを徐々にACKクラスタに移行していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/bced0b9f-bc73-dac1-6097-9af470426cb7.png)

アプリケーションを少しずつ改良していく過程で、アプリケーションをどうやってコンテナ化するか、ネットワーク環境のデータをどうやって移行するかといった問題がよく出てきます。仮想マシンをコンテナイメージに変換するために、通常はSMC([Server Migration Center](https://www.alibabacloud.com/help/doc-detail/121581.htm?spm=a2c65.11461447.0.0.1b8b5fc1GZNpw0))を利用します。ネットワークの問題は、iptables、External、CoreDNS、PrivateZoneを利用して、元の内部IPアドレスやドメイン名を保持したままIPアドレスやDNSの変更に対応することで解決します。仮想ルーティングと可視性管理の実装にはIstioを使用しています。

#導入事例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/abe3a645-9c65-3b73-0f38-a96c7776efed.png)

上の図に示したクラウド移行の事例の中から、高性能なネットワークを探しているお客様、ディープラーニングのために大規模なGPUリソースを必要としているお客様、ベアメタルサーバになってしまったお客様など、いくつかの事例を見てみましょう。

#まとめ
ユーザーごとに異なるビジネスニーズがあり、その結果、クラウドネイティブ移行ソリューションの設計や実装が異なってきます。ACKチームは、長年培ってきた経験と開発したツールでこれらの課題に対応しています。クラウドへの迅速でクリーンな移行をお探しであれば私たちにお任せください。

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

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