新型コロナで3億人ユーザーが爆誕したDingTalk。2時間で1万台のインスタンスを立ち上げるアリババのROSとは？

DingTalkは、アリババグループが発売したエンタープライズ向けインスタントメッセージングソフトウェアで、オンライン組織、オンラインコミュニケーション、オンラインコラボレーション、オンラインビジネス、オンラインエコシステムなどの機能をエンタープライズユーザーに提供しています。DingTalkは、1000万人以上の企業顧客にサービスを提供しており、最近では教育市場にも進出し、豊富な遠隔教室ソリューションを提供しています。これまでのところ、DingTalkのユーザー数は2億人を超え、中国最大のワークオンザゴーアプリケーションとなっています。2020年2月5日、DingTalkはAppleのApp Storeで無料アプリ第1位にランクインしました。その基礎となるコンピューティングリソースは、アリババクラウドコンピューティングによって提供されています。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-does-dingtalk-cope-with-traffic-spikes-during-the-covid-19-outbreak-using-ros_595963)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです*


![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/9419bc3d-79fd-7ad9-fbf4-6d93bc39e561.png)

# 感染の流行が生んだ新たな課題
最近のコロナウイルスの流行による渡航制限により、世界中、特に中国本土でオンライン教育とオンラインオフィスアプリケーションの需要が高まっています。多くの企業に好まれているオンラインオフィスソフトウェアであるDingTalkは、ユーザーのトラフィックが急増しており、特にビデオ会議やライブストリーミングの需要を持つユーザーが急増しています。物理的な教室の外での学習を維持するようにとの中国教育部の呼びかけに応えて、DingTalkは教師のためにオンラインクラスの無料トライアルを提供しています。

DingTalkの急増するトラフィックは、リソースのスケールアップという技術的な課題をもたらしました。DingTalkに5つ星評価のうち、一度に1つの星を与えることを冗談にしながら、小中学生がDingTalkのパフォーマンスについてオンラインで怒りを爆発させたとき、DingTalkは窮地に追い込まれました。ネット上ではネチズンの否定的な意見の中に、示唆に富むコメントが飛び出した。
> 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/d8304a27-c541-70c0-8371-f7671eeef3a5.png)
他のサービスは止まっているのに、なぜDingTalkは動いているの？

1月28日以降、DingTalkはビデオ会議やライブストリーミングからのアクセストラフィックが何倍にも増加している。クラウド上で開発されたDingTalkは、アリババクラウドが最初に取り組んだリソースのスケールアップの対象となっており、自宅で仕事や学習をするユーザーのニーズを優れた体験で満たしています。では、DingTalkはどのようにしてこれを実現したのでしょうか？

#大規模スケールアップの2つの課題。効率性とリソース供給
**効率の低いマニュアルスケールアップへの挑戦**
急なデッドライン！！
DingTalk技術チームは、わずか数日でトラフィック急増の問題を解決しなければなりませんでした。DingTalkチームは、1月29日から24時間体制でアリババクラウドのスケールアップに完全に専念している。2月2日の時点では、リソースのスケールアップは当初の2万vCPUから3万vCPUへと数倍にしかならず、ビジネス需要を大きく下回っていた。

購入や設定の手順が複雑 DingTalkのシステムアーキテクチャには、単一クラスタのECS（Elastic Compute Service）とは異なり、SLB（Server Load Balancer）、MongoDB用のApsaraDB、Redis用のApsaraDB、EIP（Elastic IP）など、さまざまなリソースが含まれています。これらのリソースは個別に購入する必要があり、その関係を手動で設定する必要があります。

エラー率の高い非効率な手作業による導入。
DingTalkはユーザー数が多い。手動でのデプロイには約1時間かかり、一度に同時に運用できるのは3～4台のクラスタのみです。デプロイには多くの設定ステップが必要で、ミスが発生しやすい。

複雑なデプロイ。
クラスタのサービス機能は自己閉鎖型であり、無制限にスケールアップできるが、その分、デプロイの複雑さが増す。DingTalkのスケールアッププロジェクトには、8つのリージョンと16のゾーンが含まれています。従来の展開アプローチでは、スケールアップの効率が低下し、大規模なクラスタ管理の複雑さが増す可能性があります。何億人もの労働者や学生が自宅で仕事をしたり学習したりできるようにするためには、DingTalkチームは短期間で1,000近くのクラスタをスケールアップする必要があります。100万以上の場合はおろか、1,000個のリソースの関係を管理するのは困難です。

手動展開モードでのフォールトトレランスが悪く、トラブルシューティングが難しい。クラスタごとに構成の違いが発生することが多い。たとえば、あるクラスタではポート300をSLBのリッスンポートとして使用していますが、別のクラスタではポート3000を同じ目的で使用しています。このため、トラブルシューティングが困難になります。

また、DingTalkチームは、大規模なクラスタの作成と運用から大きな技術的課題に直面しています。

**ROSを利用した高速な自動デプロイ**
2月2日にトラフィックが急増する前に、DingTalkはAlibaba Cloud Resource Orchestration Service (ROS)を使用して、クラスタ展開の効率を改善し、迅速なクラスタスケールアップを実施しました。ROSにより、DingTalkはわずか2時間で10,000以上のECSインスタンスを展開し、アリババクラウドの迅速なスケールアップの新記録を樹立しました。

**ROSとは？**
[Alibaba Cloud ROS](https://www.alibabacloud.com/ja/product/ros)は、クラウドリソースの自動作成、更新、削除を支援するオーケストレーションサービスです。ROSは、スタック（論理的なコレクションの一種）を使用して、グループ化されたクラウドリソースを一元的に管理します。Alibaba Cloudの場合、スタックとはAlibaba Cloudのリソースのグループのことです。ROSを利用することで、リソーススタックという形でクラウドリソースの作成、削除、クローンを行うことができます。DevOpsの実践でROSを活用することで、開発環境、テスト環境、本番環境を簡単にクローン化し、アプリケーション全体の移行やスケールアップを行うことができます。

**インフラとしてのコード**
ROSは、DevOpsの重要な要素であるIaCを迅速に導入するために、Alibaba Cloudが提供するIaC（Infrastructure as code）ソリューションです。

**フルマネージドオートメーションサービス**
ROSは完全マネージドサービスであり、ROSを利用するためのリソースを購入する必要がないため、リソーステンプレートで定義されたビジネス向けのクラウドリソースに集中することができます。マネージドオートメーションにより、複数のスタックに対応した複数のプロジェクトを作成するプロセスを高速化します。

**再現性のあるデプロイ**
同じテンプレートを使用して、開発環境、テスト環境、および本番環境にリソースをデプロイすることができます。環境ごとにパラメータを異なる値に設定することができます。例えば、テスト環境のECSインスタンス数を2に、本番環境のECSインスタンス数を20に設定することができます。また、同じテンプレートを使用して複数のリージョンにリソースをデプロイすることもできます。これにより、複数リージョンへのデプロイの効率が向上します。

**標準化されたデプロイ**
実際には、環境の違いによる微妙な違いが、管理の煩雑さやコストの高さ、トラブルシューティングの時間の長期化、業務の正常な運用への支障につながることも少なくありません。ROSを繰り返しのデプロイに活用することで、デプロイ環境を標準化し、異なる環境間の差異を最小限に抑え、環境構成をテンプレートに設定することができます。コード管理に似た厳格な管理プロセスにより、標準化されたデプロイメントの実践を確保することができます。

**統合認証、セキュリティ、監査**
他の類似製品と比較して、Alibaba CloudのネイティブIaCサービスROSは、他のAlibaba Cloudサービスとのより良い統合を提供します。リソースアクセス管理（RAM）との統合により、統一された認証が提供されるため、個別のユーザー認証システムを構築する必要がありません。すべてのクラウド製品に対する操作は、APIを通じて呼び出されます。このように、ActionTrailを利用して、ROS上の操作を含めたすべてのO&M操作を確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/76cd3520-e111-2d57-42e4-54b9290b9f70.png)

#ROSはどのようにしてDingTalkのスケールアップを実装したのか？
**リソーステンプレートの定義**
ROSは、DingTalkのクラスタアーキテクチャを定義するために、アリババクラウドで必要なリソース（ECSインスタンスやデータベースインスタンスなど）を記述するテンプレートを素早く作成するのに役立ちます。ROSは、ドラッグ＆ドロップでテンプレートを作成するためのビジュアルエディタを提供します。テンプレートが作成されると、ROSは自動的にテンプレートで記述されたリソースを作成して設定し、IaCを実装します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/63bf1ac8-6512-9a65-cb5e-624f4caae3e9.png)

**テンプレートのパースと実行**
スタック作成要求を受け取ると、ROSはスタックを作成する前にテンプレートを解析します。解析には、構文チェック、パラメータ検証、依存性解析が含まれます。

依存性分析は、2つの目的のためにリソース間の依存関係を分析することを目的としています。

1) リソース作成の正確性を確保する。リソースAがリソースBに依存している場合、リソースBはリソースAよりも先に作成されます。
並列作成機能を提供する。依存関係のないリソースは並列に作成することができます。
2) テンプレートが解析された後、ROSは依存関係の中での役割に基づいてリソースを1つずつ作成しますが、これはステートマシンの仕組みに似ています。

リソーステンプレートは、特にマルチリージョンやマルチゾーンのシナリオで、迅速かつ繰り返し展開することができます。これにより、環境間の差異を軽減し、デプロイのプロセスと結果を標準化し、環境の差異に起因するシステムの問題を軽減することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/cf13acdc-e047-4232-a2c5-3318697d44e9.png)

#まとめ
Alibaba Cloud [Resource Orchestration Service（ROS）](https://www.alibabacloud.com/ja/product/ros)は、DingTalkが10万台のECSインスタンスを段階的かつ迅速にスケールアップして展開するのを支援し、効率性を100倍に高め、Alibaba Cloudの記録を更新しました。

現在、ROSは平均して1分に1クラスタ、毎日100万vCPU以上のスケールアップが可能です。数百万のリソースを再生して解放するという途方もないプロジェクトです。ROSでは、クラスタ内のすべてのリソースを自動的に再生するワンクリック破壊機能を提供しており、面倒な操作や処理漏れを回避することができます。

弾力性はクラウドコンピューティングの最大の強みであり、万能で便利なサービスの提供を支えています。ROSはアリババクラウドのネイティブ自動オーケストレーションとデプロイメントサービスとして、クラウドコンピューティングの弾力性を最大化し、DingTalkを強力にサポートすることで、最も人気のある合理化されたオンラインコミュニケーションプラットフォームとなります。

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