麦星 - arcturus technologies- 

クラウド関連情報とデータサイエンス的な何かを発信しています

Resource Orchestration Service(ROS)について

ども、うし@tangniuwanです。

AliEaters(AlibabaCloud Developers Meetup)in 仙台#3のイベントで
初心者さん向けに、AlibabaCloud のIaCツール(構成管理ツール)である
Resource Orchestration Service(ROS)について
発表させて頂いたので、内容を記事にしました。

開催イベントの内容などは以下のページをご参照下さい。

alieaters-sendai.connpass.com

目次

さて、ROSについてですが、その前に
まず、「Infrastructure as Code」(以下、IaC)ってご存知でしょうか?

1. Infrastructure as Code(IaC)って何ぞ?

10~数年前に注目された業界のワードで、
手動で都度インフラを構築していたものを、コード化して可視化するってヤツです。
端的に言うと「インフラ」をコードで記述する事によって
ソフトウェア開発で既知のプラクティスをインフラにも適応して、
その恩恵を享受する。というものです。
 
つまり、プログラムの様にコードを記述して、
それをツールを使ってデプロイすることでコードからインフラを構築します。  
 

何で今、ROSなのか?

最近、自動化2.0とともに、IaCが見直されており
アリババクラウドにも、構成管理ツールがあるよ。ってことを
お伝えしたかったから
 
個人的な勝手な憶測だと、背景には

上記が関連して、見直されてるのかな?なんて考えいます。

 
 

マルチプラットフォームの構成管理ツール

Ansible ChefHashiCorp社のTerraform など、クラウドベンダー以外でも
昔から色々なマルチプラットフォームの構成管理ツールがあり、
今現在のデファクトは、「Ansible 」な感じがあります。  
 

クラウドベンダーのインフラオートメーション系プロダクト
ベンダー プロダクト 記述方式
AWS Cloud Formation 調査中
Azure Resource Manager 調査中
GCP Cloud Deployment Manager 調査中
Alibaba Cloud Resource Orchestration Service JSON

※2019/11/16時点の情報です。

IaCのメリット/デメリット

じゃあ、ソフトウェア開発で既知のプラクティスってどんなものがあるかって言うと

 
もちょっと緩い表現で、インフラをコード化、可視化するメリットを書くと
下記な感じです。

  • テキストで定義するだけでインフラが自動構成
  • Git などのバージョン管理ツールで管理可能
  • もちろんチーム間で共有可能(インフラ設定者が不在でもOK、非属人的)
  • デプロイが繰り返し可能
  • 手作業のリスクとエラーの除去(ヒューマンエラーが激減)
  • 構築スピードと信頼性の向上
  • コードなので詳細のトレースが容易
  • インフラのモデリングが可能
  • 可逆性がある(プロダクトによる)

逆に、デメリットってどんなものがあるのかな?と考えると…

  • チームで運用ルールを決める必要がある
  • それなりに学習コストが発生する
  • 手動対応した際に、実際のインフラ構成をコードに落とし込む必要がある。
  • 開発当初から、インフラ要件が決定していない。

学習、ルール決めと言うコスト、実際のインフラ構成とコードの同期など、
ソフトウェア開発のプラクティスを持ち込んでいるが故に
ソフトウェア開発の問題点も引き継いでいるようにも感じます。

 
 

さて、なんとなく、IaCを理解した気になったので
Resource Orchestration Service(ROS)の機能を確認してみましょ。

 

2. Resource Orchestration Service(ROS)ってどんなプロダクト?

まず、ROSのプロダクトページを見る。と以下の記載があります。

概要

クラウド環境の構成をテンプレートに定義し、テンプレートに応じて
プロビジョニングすることができるオーケストレーションサービスです。

  • ROSは、Alibaba Cloud リソースの作成や管理を効率化するサービスです。
  • ROS を利用することで開発者やシステム管理者の作業工数を大幅に削減することが可能です。
  • ROS では、リソース、リソース間の依存関係、及び設定の詳細を
    JSON形式のテキストファイルで定義できます。

  〇 ROSプロダクトページから抜粋
  via. https://wwwalibabacloud.com/product/ros

ここで1つ言葉の定義というか、
「テンプレート」について、ちょっとご説明

テンプレート = 設定ファイル(IaCのコードに該当)= JSON形式のテキストファイル
(リソーススタックテンプレートとも呼ばれます。)

※スタックについては後述します。

ROSのドキュメントを読み込む

ドキュメントセンターにある、リソースオーケストレーションの概要を見ると
以下の記載がありました。
色々、記載があるのですが、個人的に重要だと思う箇所を赤文字にしています。
また、(リソース)スタック=リソースのグループのこと。と記載があります。

  • ROSは、Alibaba Cloud ユーザーがクラウドコンピューティングのリソース管理を簡素化し、
    O&Mを自動化するのに役立つサービスです。
  • リソーススタックテンプレートを最初にコンパイルします。
  • テンプレートでは、必要なクラウドリソース、リソース間の依存関係、および
    リソース構成を定義します。
  • オーケストレーションエンジンを使用すると、ROS は、テンプレートに応じて、
    自動展開、運用、保守のためのすべてのリソースを自動的に作成および構成できます。
  • オーケストレーションテンプレートは、JSON 形式のテキストファイルです。
  • このファイルは、いつでも読んだり編集したりすることができます。
  • JSON で直接テンプレートをコンパイルすることも、ROS コンソールでビジュアルエディタを使用して
    より視覚的にテンプレートをコンパイルすることもできます。
  • SVN や Git などのツールを使ってテンプレートのバージョンを制御することができます。
  • APISDK、およびその他の方法を使用して IaC(Infrastructure as Code)を有効にして、
    ROSのオーケストレーション機能を独自のアプリケーションに統合することもできます。
  • リソースオーケストレーションテンプレートは、
    リソースとアプリケーションの標準的な配信方法も提供します。
  • テンプレートを使用して、クラウドリソースとアプリケーションを含む統合されたシステムと
    ソリューションを提供できます。
  • 独立系ソフトウェアベンダ(ISV)は、このような配信方法を使用して、
    Alibaba Cloud リソースを独自のソフトウェアシステムと簡単に統合して一貫した配信を実現できます。
  • ROSはクラウドリソースをグループ単位で管理します。
  • リソースのグループはリソーススタックです。
  • したがって、グループ内でクラウドリソースを作成、削除、変更、クローン作成することができます。
  • DevOps のプラクティスでは、開発、テスト、および実行環境を簡単に複製でき、
    アプリケーションの全体的な移行とスケーリングを簡素化できます。

  〇 ドキュメントセンターから抜粋
  via. https://wwwalibabacloud.com/product/ros

ROSの特徴

こちらも同様に、個人的に重要だと思う箇所を赤文字にしています。

  • テンプレート
    • 豊富な Orchestration テンプレートを提供してます。
    • さまざまな構成に対応可能です。
    • オンラインのエディターではテンプレートをチェックし、
      その中でエラーがあれば、その詳細が表示されます。
  • リソースの作成
    • ECSほぼ全てのプロダクトおよびサービスのリソースを作成および購入できます。
    • 世界中のリージョンでリソースを作成できます。
    • Cloud Init で ECS リソースのカスタマイズが可能です。
    • リソースの作成時に削除ポリシーを指定できます
    • インスタンスをより簡単に作成できます。
  • リソースの更新
    • テンプレートとパラメーターをオンラインで編集できます。
    • テンプレートまたはパラメーターを変更して、リソースの設定を一括で変更できます
    • テンプレートまたはパラメーターを変更して、リソースのスケーリングを行うことができます。
  • リソースの削除
    • 他の Alibaba Cloud サービスを利用してスタックからリソースを削除することも可能です。
    • スタックを削除することで、スタック中のリソースも完全に削除できます。
    • スタックのみを削除し、スタック中のリソースを保持することも可能です。
    • ユーザー自身で削除ポリシーを設定し、自動で実行することができます
  • リソースの参照
    • スタック、リソース、イベント単位で、ステータスやエラーの詳細を確認できます。
    • スタックのテンプレートを表示できます。
    • スタック内のリソースのステータスを確認できます。

※Cloud Init について、分かりやすいドキュメントがありましたので、掲載させて頂きます。

qiita.com

※「リソースの作成時に削除ポリシーを指定できます。」について
  ちょっとだけ追記
 
WEBとRDBの構成などをスタックで管理している場合の想定で、
スタックを削除すると、当然、WEBもRDBも削除されます。
この際、一緒にWEBや、RDB内のデータも消えてしまいますが、
データだけは残したい。そんな時に使うのが、この「削除ポリシー」です。

具体的には、スタックの削除操作が行われてもRDBは削除しないでね。という ポリシーの設定が可能です。

ROSで操作可能な主なリソース(プロダクト)
区分 プロダクト
仮想サーバーサービス Elastic Compute Service (ECS)
仮想サーバーサービス Auto Scaling
仮想サーバーサービス Container Service
仮想サーバーサービス Function Compute (FC)
ネットワークサービス Virtual Private Cloud (VPC
ネットワークサービス Server Load Balancer (SLB
データベース ApsaraDB for RDS
データベース ApsaraDB for MongoDB
データベース ApsaraDB for Redis
データベース ApsaraDB for Memcache
アプリケーションサービス Message Notification Service(MNS
アプリケーションサービス Log Service
アプリケーションサービス API Gateway
ストレージと CDN Object Storage Service(OSS
マネジメント Resource Access Management(RAM)

ちなみに、
日本サイトと国際サイトでテンプレートの量や、操作可能なリソースが異なります。
恐らく中国サイトはもっと量が多い感じがします。

恐らくこんな感じ
中国サイト > 国際サイト > 日本サイト

ROSの制限と制約

ROSには以下の制限があります。

  • 各リソーススタックに最大 200 のリソースを作成できます。
  • 各ユーザーは最大 50 のリソーススタックを作成できます。
  • 各テンプレートファイルは 512 KB を超えることはできません。

  〇 ドキュメントセンターから抜粋
  via. https://jp.alibabacloud.com/help/doc-detail/28854.htm

図にすると以下の様な感じ。 f:id:tangniu:20191117161125p:plain

ROSの料金

現状は、無料です。

3. Try to use ( Alibaba Cloud ECS Clone )

ROSの有効化

取りあえず、有効化しないと使用できなので、ROSを有効化します。

有効化の方法は以下URL参照
ROS(Resource Orchestration Service )の有効化 - 麦星 - arcturus technologies-

いじってみる

まず、テンプレートが豊富にあるとのことなので、サンプルテンプレートを確認します。
確かに沢山あります。
その中で、「entire_ecs_clone」という、ECSのクローンを生成するスタックが有ったので
使ってみます。
「entire_ecs_clone」のスタックを作成リンクを押下します。

f:id:tangniu:20191117161354p:plain

スタックの作成画面に切り替わります。
JSON形式のテキストファイルで定義さえれていることが分かります。
何も変更せず次へボタンを押下するとヴァリデーションされ、問題があればエラー表示されます。
 
もし、ROSでエラーが発生する場合は、JSONを確認し、
リソースのタイプ検索画面(日本サイトのROSにメニューだと「リソースのタイプ」)から
該当するリソースのプロパティを検索してみましょう。
 

〇 スタックの作成画面 f:id:tangniu:20191117161952g:plain  

エラーが無ければスタックの有効化画面に切り替わります。
スタックの有効化画面で、各種情報を入力して次へボタンを押下すると
ROSにリクエストが送信されます。

〇 スタックの有効化画面 f:id:tangniu:20191117162413p:plain

正常にROSにリクエスト送信が完了すると、以下の様な画面が表示されます。

〇 リクエストの送信画面 f:id:tangniu:20191117163841p:plain

いじってみた結果
  • わずか3ステップで、クローンが出来た。
  • SSH認証方式(キーペア)、タグ、ディスクリプションなど、丸々コピーされていた。
  • サブスクリプションで購入したインスタンスをクローンしても従量課金タイプで複製される。
    (当然と言えば当然なのだが、もう一度ドキュメントを確認する)
  • サブスクリプションの有効期限が切れたインスタンスでもクローンできた。
    つまり、ハードディスクさえ残っていれば、クローンできるっぽい。

4. まとめ

  • やっぱ、IaCは、DevOpsの一環な感じがした。
  • モノ凄く簡単にデプロイできる。
  • 細かい点でハマるポイントが有った。
  • ドキュメント大事。