AlibabaCloud RDS お得説！！！

##なぜこの記事を書こうと思ったか

私は、普段AWSやAzure、AlibabaCloudといったパブリッククラウドを扱っています。
クラウドのプロダクトは、冗長構成可能なものが多く存在しますが、
最近使用したAlibabaCloudのRDSで面白いことが起きたので、同機能をもつAWSのプロダクトと比べてみました。

RDSはマルチAZ配置が可能で、マルチAZ配置にすることで、震災などでAZが潰れても、異なるAZにあるRDSが即座に立ち上がり、運用を継続することができます。

しかし、AlibabaCloudで、サブネットを1つしか作成していないにも関わらずRDS作成時にマルチAZ配置の選択ができました。この時、 **"マルチAZ配置"** の、**"マルチAZ"** がどこなのかが気になって、この記事を書くことにしました。

##1つのサブネットしかないのにマルチAZ配置ができた

マルチAZとは、複数のAZにまたがり冗長構成を組むことで、1つのAZが災害などで稼働できなくなっても即座に他のAZにあるシステムが立ち上がり、運用を継続できる。という優れものです。

今回のようにサブネットが1つしかないと、冗長構成を取ったところで、防げる障害は限られているのではないでしょうか？今回の場合、マルチAZとはどこを指しているのでしょう？

今回はAWSのRDSとの仕様の違いを明らかにしながら、1つのサブネットでのマルチAZ配置について考えていきます。


##AWSのRDS
サービス概要

>クラウド上のリレーショナルデータベースのセットアップ、オペレーション、スケールが簡単になります。ハードウェアのプロビジョニング、データベースのセットアップ、パッチ適用、バックアップなどの時間がかかる管理タスクを自動化しながら、コスト効率とサイズ変更可能なキャパシティーを提供します。これにより、アプリケーションに集中することができ、必要とされる高速なパフォーマンス、高可用性、セキュリティ、互換性をアプリケーションに実装できるようになります。

AlibabaCloudのRDSと同様にマルチAZの配置が可能です。
しかし、**値段が高い**！
**シングルAZ/マルチAZ選択ができるが、マルチAZはシングルAZの約倍の値段がかかる**ようです。

##AlibabaCloudのApsaraDB for RDS
サービス概要

>ApsaraDB for RDS は、信頼性に優れ、拡張可能なマネージドデータベースサービスです。RDS は MySQL、SQL Server、PostgreSQL 上ですぐに使用できるサービスです。プロビジョニング、パッチ更新、バックアップ、リカバリ、障害検出、修復などの定型的なデータベースタスクを実行します。
マルチゾーンデプロイメントオプションを選択すると、ApsaraDB for RDS が異なるゾーンにまたがって自動でデータをレプリケートし、実運用の可用性と信頼性を高めます。RDS サービスはマスターデータベースからの自動フェールオーバーを確実に実施します。

AlibabaCloudでは**シングルAZでもマルチAZでも値段は変わらない**
ので、可用性を高めるためにとりあえずマルチAZにするのがお得ですね！

##実際にRDSを作成してみた
**マルチAZ配置は、異なるゾーン内に、2つ以上のサブネットを作成する必要がある**
という認識のもと、サブネットが1つだった場合はどのような警告が出るのか、AWSとAlibabaCloudで比較してみました。

###AWS
na_7_san_vpcにna_7_san_sub1というサブネットを作成します。
![aws_vpc_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521638/c4e9d315-d692-f01c-75d4-e36e784f9baa.png)
![aws_vpc_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521638/69109952-97bd-2d92-94f0-014a93fc6811.png)
![aws_vpc3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521638/8c8f74ea-03c4-297d-ca2f-0b4e31c29446.png)
![aws_vpc4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521638/8b43486b-4778-2863-88a0-ed2990e234e1.png)
![aws_vpc5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521638/e29a5180-64fa-af52-8d1d-c0d222cd91cb.png)

na_7_san_vpc内にRDSを立てていきます。

![aws6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521638/3d184a62-f027-f124-6a1d-7f73b44d8fc6.png)
![aws7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521638/1d72b28d-0028-1d49-de36-822cf2cd9b4e.png)

作成をsubmitさせようとすると以下のような警告が出ました。

![aws8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521638/f8eae8be-2745-4127-fcbc-a58bc48dcd46.png)

やはり、マルチAZ配置にする場合複数のサブネットが必要になるようです。
では、同じAZ内に複数サブネットを作成した場合はどうでしょうか？
同じAZ(ap-northeast-1a)にもう1つサブネットを作成し、RDSの作成をしてみます。
![aws9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521638/e52b2975-5284-2464-ca84-8a88e4d7803f.png)

次は英語でこのような警告が出ました。
サブネットは最低2つのAZを網羅する必要がある。と書いてあります。

先ほどの警告と合わせてまとめると、
**AWSのRDSマルチAZ配置選択可能なのは、2つ以上のサブネットが存在し、且つそのサブネットが2つ以上のAZに存在する必要がある**という作成ルールがあります。

3つ以上のAZを網羅し、3つのサブネットを作成した場合、RDSマルチAZ配置は成功しましたが、使用する2つのAZは指定することができませんでした。

###AlibabaCloud
VPC内にサブネット1つ作成し、RDSをマルチAZ配置選択しても、問題なく作成できました。
サブネット1つなのに、どこで冗長構成を取っているのでしょうか。
![ali10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521638/fc26465f-4fa7-19f5-7238-7446657f058e.png)
![Ali11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521638/082db866-8a45-0496-00ba-710cd706c9db.png)
![Ali12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521638/9be7e157-6c28-adc4-3848-13bede1057be.png)

![Ali13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521638/5ebfb0ed-f84b-8358-a5c6-6e24286cc072.png)

##考えられるのは3パターン

AlibabaCloudのRDSにおいて、2つのゾーンにサブネットが存在していなくても
マルチAZ配置ができた理由として以下の3つが考えられます。

<dt>マルチAZ配置を選択した時点で別ゾーンにサブネットが作成され、マルチAZ配置されている</dt>

<dd>マルチAZ配置を選択した時点で裏で自動的に別AZにサブネットが出来上がり、AZが潰れてしまった場合でも運用を継続することができている可能性もあります。シングルAZとマルチAZで値段が変わらない上に、AZ障害にも耐えられるのであれば断然AWSのRDSよりもお得なプロダクトと言えると思います。</dd>
<br>

<dt>1つのAZ内でRDSが冗長構成を組み、配置されている</dt>

<dd>同一AZ内で冗長構成が取られている可能性があります。震災などでAZが潰れてしまった場合については運用を継続できませんが、AZ内での物理障害程度であれば可用性を高めることができます。</dd>
<br>

<dt>実は冗長化されてない</dt>

<dd>マルチクラウドが間違えて選択できてしまっているだけという可能性が考えられます。</dd>
</dl>


##最後に

AlibabaCloud RDSのマルチAZの真相は公式のドキュメントにも記載がなく、
分からずじまいでした。
ご存知の方は情報をコメント欄で教えていただけると嬉しいです。