3大クラウド(AWS,Azure,GCP)をそれぞれプロダクションで実運用した感想(その3 AWS固有の優位性について)

# はじめに

今年のはじめに書いた3大クラウドの比較シリーズに関して長いこと続編を書いてませんでした...。

https://qiita.com/lazy-kz/items/699ee26b7b6b89c6614d

https://qiita.com/lazy-kz/items/7dc9a61ddfa5b2a81632

最近、知人/友人のみならず取引先からも「AWSやGCPに関して続編書かないんですか？」と言われることが増えてきたので、今回はAWSを本番運用していて感じたAWS固有の優位性について感想を述べていきます。

# AWS 固有の優位性
周知の事実ではありますが、AWSは長年クラウドベンダーとして世界トップシェアを維持し続けています。
AWSをクラウド基盤として利用しているサービスを一切利用せずに1日を過ごすことは不可能なんじゃないかというレベルで日本国内では利用されています。
もはや電気/ガス/水道等の社会インフラに近い状態です。

https://www.srgresearch.com/articles/quarterly-cloud-market-once-again-grows-by-10-billion-from-2022-meanwhile-little-change-at-the-top

そして、私の1つ目の記事でも述べたとおり、AWSは業界問わず多くの組織で利用されており、クラウド基盤の選定時にAWSを選ぶことは長年「最も無難な選択肢」となっています。
(Azureの躍進とGenerative AIにより若干雲行きが怪しくはなっていますが。)

>  * 公的機関,大企業,SIer -> AWS >= Azure >>> GCP
>  * メガベンチャー -> AWS > GCP >>> Azure
>  * 中小ベンチャー -> AWS >> GCP > Azure


https://qiita.com/lazy-kz/items/699ee26b7b6b89c6614d

AWS固有の優位性に関しては、長年トップシェアを維持し続けて多くの組織/エンジニアに利用されていることと、AWS(Amazon)が「地球上で最もお客様を大切にする会社」を掲げているレベルで顧客の声を大切にしていることに起因している印象です。

私が感じているAWS固有の優位性に関しては以下の6つです。

1. 実稼働時間ベースでの安定性の高さ
2. 経験豊富なインフラエンジニアやSREの採用の(相対的な)容易さ
3. 学習環境の良さ
4. MySQL互換RDBMSとしてのAmazon Auroraの優秀さ
5. (お金を出したときの)カスタマーサポートの素晴らしさ
6. サポート期限(EOL)の延長をしてくれること

これらに関して、以下個別に詳細を述べていきます。

## 1. 実稼働時間ベースでの安定性の高さ
<b>AWSは３大クラウドの中でも、実稼働時間ベースでの安定性で言えば一番優れている印象です。</b>
安定性をクラウドベンダーが提供しているSLAベースで比較した場合、お互いに意識していることもあって、正直そこまで大きな差は無いかなと思います。


https://aws.amazon.com/legal/service-level-agreements/?nc1=h_ls

https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1

https://cloud.google.com/terms/sla/

これはSLAであって、実稼働時間はまた別の話になります。
<b>私が今までサービスを運用している際の実稼働時間ベースで言えばAWSが一番クラウド基盤の障害を起因とした停止時間が少なく済んでいます。</b>

「実稼働時間ベースで比べた場合、AzureとGCPのどちらが安定性が高いか」は結構争いがあると思いますが「実稼働時間ベースで比べた場合、3大クラウドの中ではAWSが一番安定性が高い」という点に関しては特に争いは無いかなと思っています。

<b>特にVM(EC2)を軸としたIaaS型構成でサービスを提供する際の実稼働時間ベースの安定性が素晴らしいです。</b>
ちゃんとWell-Architected Frameworkの実装例を守れば高可用性型のサービスもわりと安心して構築/運用できます。

https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/reliability-pillar/example-implementations-for-availability-goals.html

## 2. 経験豊富なインフラエンジニアやSREの採用の(相対的な)容易さ
レバテック社のリサーチによれば2023年6月度のエンジニアの正社員求人倍率は12倍を超え、エンジニアの採用難易度自体が非常に高い状態となっています。
ここ数年難易度が高止まりしていることもあって、エンジニア採用の難しさはIT企業に限らず多くの企業で頭を悩ませている問題です。
(他社のCTOやVPoEの方と話すときにも、必ずと言っていいほど採用の話題になります。)

https://levtech.jp/partner/guide/research/detail/268/

その中でも経験豊富なインフラエンジニアやSREは特に採用難易度が高く、給与水準の高いメガベンチャーなど、採用競争力が高い企業でも採用に苦労しています。
上述リンクの資料だと「クラウドエンジニア」という絞りで正社員求人倍率19倍なので、どこの企業でも欲しがる経験豊富なレベルになるとその遥か上の倍率になるはずです。

そして、PoC/MVPフェーズならまだしも、PMF/PSFが終わった一定以上の規模のサービスを運用するのであれば、 経験豊富なインフラエンジニアやSREは必須レベルかなと思います。

そもそも専任のインフラエンジニアやSREが居ない状態で運用されているサービスも見かけますが、高確率でセキュリティ、サービスのスケーラビリティ、安定性あたりで問題を抱えて苦しんでいる印象です。

<b>「経験豊富なインフラエンジニアかSREを正社員か業務委託で採用したい」となった場合、3大クラウドの中でまだ一番採用が楽なのがAWSのインフラエンジニアかSREです。</b>
経験豊富なエンジニアの絶対数が多いので、それがそのまま採用難易度の低さに繋がっています。
(繰り返しますが、GCPやAzureと比べれば相対的にまだマシというレベルなだけで、絶対的な難易度は非常に高いです。)

経験豊富なインフラエンジニア/SREはメガベンチャーから流出する傾向が強い関係上、採用の容易さも3大クラウドのメガベンチャーのシェア状態をそのまま反映している印象です。

経験豊富なインフラエンジニア/SREの採用のしやすさ : AWS > GCP >>> Azure

採用難易度が一番高いのがAzureで、「そもそも媒体に1人もAzureのインフラエンジニア/SREがいない」こともあります。
AWSであれば経験豊富かどうかは別として基本数名はいます。

また、AWSは仮に採用できなかったとしても、クラスメソッド社やアイレット社などAWSの世界有数のパートナー企業が日本国内に複数存在しているので、インフラ構築/保守業務をおまかせするという選択肢も取りやすいです。

## 3. 学習環境の良さ
<b>AWSは長年シェアNo.1であることもあって、ドキュメントや書籍、テックブログなど、学習に利用できる情報が3大クラウドの中でも最も充実しています。</b>

<b>そのため、AWSは初学者であっても独学で勉強をしてキャッチアップをしていきやすい環境になっています。</b>
また、Seed期のベンチャーから大企業まで幅広く利用されているため、新規構築/リフト&シフト/運用保守等、フェーズが異なる案件も多く実務経験も積みやすいです。


3大クラウドの中で一番情報が少ないのがAzureで、Microsoft Learnなどの公式情報を主要な情報源としていくかたちになります。

なお、AWSの公式ドキュメントの文面が読みにくいと言われることが多いのですが、残念ながらあの公式ドキュメントも3大クラウドの中ではまだ読みやすい方です。
GCPの公式ドキュメントは情報量が多すぎて、対象となる情報を探すのが結構大変です。

AWSの公式ドキュメントの場合は、読んで分からなかったとしてもクラスメソッド社のテックブログなどの情報を漁れば大体理解できるはずです。

<b>情報の豊富さでも公式ドキュメントの読みやすさでもAWSが一番なので、3大クラウドの中でAWSが一番学習もしやすいですね。</b>

情報の豊富さ : AWS > GCP >> Azure 
公式ドキュメントの読みやすさ : AWS > Azure >> GCP


## 4. MySQL互換RDBMSとしてのAmazon Auroraの優秀さ

2000年代中期のLAMP Stack流行の頃より、Web界隈ではシステムのアーキテクチャ選定の際にMySQLをメインデータベースとして利用するケースが多く、今でも多くのサービスでMySQLが利用されています。

そして、中〜大規模のサービスを運営するうえで、データベースの処理能力や安定性がサービス運営上のボトルネックになることになることが多いため、データベースの性能はアーキテクチャ設計上、非常に重要な要素となります。
(これがNoSQLやNewSQLが生まれた大きな理由の一つでもあります。)

<b>AWSが提供しているAmazon Auroraは、MySQL互換のRDBMSとしては3大クラウドの中では動作速度/安定性/可用性の観点から見てずば抜けて優れている印象です。</b>

https://aws.amazon.com/jp/rds/aurora/

マルチAZ + レプリケーション + 自動バックアップ等、エンタープライズレベルの可用性設計を備えた状態のデータベースが簡単に構築/運用できます。
普通に自前でDBサーバーを構築するよりも動作速度もフェイルオーバーも高速ですし、マルチAZ構成になっているにも関わらず、レイテンシも低いです。

難点としてはやや費用が高めなことと対応MySQLバージョンやストレージエンジンが限られることぐらいでしょうか。

正直、Amazon Auroraに関しては、MySQL互換のRDBMSとしてであれば性能面での競合はAzureやGCPではなく、TiDBやPlanetScaleのようなサードパーティのデータベースになるかなと思っています。

なお、Amazon Auroraは PostgreSQLにも対応しています。

にもかかわらず、固有の優位性の部分でMySQLに限定しているのは、GCPのAlloyDB for PostgreSQLと比べた場合にAmazon Auroraに明確に優位性があるとは言えないかなと感じていることが大きいです。

去年の末にGAになった、GCPのAlloyDB for PostgreSQLは後発サービスだけあってよく出来ています。

https://cloud.google.com/alloydb?hl=ja

## 5. (お金を出したときの)カスタマーサポートの素晴らしさ

<b>AWSは、サポートに文句を言っている人をあまり見たことが無いレベルでカスタマーサポートの良さに定評があります。</b>
サポートリクエストを出したときに、しっかりした回答が迅速に返って来ますし、担当者による回答内容のばらつきも少ない印象です。
私もAWSのサポートに関しては全く不満はありません。
(無論、ちゃんとガイドラインに沿った質問がされていることが前提です。)

https://aws.amazon.com/jp/premiumsupport/tech-support-guidelines/

<b>AWSはエンタープライズグレードのサポートプランであれば緊急対応時に15分以内の応答がサポートされますし、AWS内部のテクニカルアカウントマネージャーやソリューションアーキテクトからのコンサルティング/技術サポートもついてきます。</b>

https://aws.amazon.com/jp/premiumsupport/plans/

私は利用したことがありませんが、AWSによる24時間365日のインシデント監視/対応サービスもつけることができます。

https://aws.amazon.com/premiumsupport/aws-incident-detection-response/

AWSのエンタープライズサポートは最低月$15,000かかるので、金額感的に主要なユーザーは大企業やメガベンチャー、公的機関になるかなと思います。
ベンチャー/中小企業だったら相当ミッションクリティカルなサービスやシステムの運用じゃないと出そうと思えない金額感です。

そして、一定以上の規模の組織/サービスでクラウド基盤を利用することを考えたときに、AWSの「ある程度お金を積めば非常に良質なサポートを受けることができる」というのは魅力的です。
障害発生時のインシデント対応にかかる人件費や機会損失を考えれば遥かに安くつきます。

<b>なお、無料〜月1000ドル程度のサポートプランであればAzureが一番サポートが素晴らしい印象です。</b>

https://azure.microsoft.com/ja-jp/support/plans

私が家でAzureの勉強をしている際に、たまたま個人アカウント(無料のBasicプラン)で月の利用額が予算の範囲内で普段よりもやや高額になってしまったことがあったのですが、携帯にAzureのサポートから不正利用かサービスの止め忘れが無いか確認の電話が来たときには感動しました。

無料サポートにも関わらず電話をかけて確認してくれるのは素晴らしいですよね。
AWS/GCPだと同じケースでメールすら来たことがありません。

Azureだと月100ドル固定のStandardサポートでも十分本番運用できていますし、最上位のサポートプランでも月1000ドル固定なので、3大クラウドでもずば抜けて安いです。

AWSだと本番運用時には基本的にビジネスサポート以上が必要になってくるので、小規模サービスの運用時でも月あたり数百ドル程度は必要になります。

<b>AWSはある程度お金を積めば非常に良質なサポートを受けることができるので、その点で大企業やメガベンチャー、公的機関を中心にサポートを高く評価されているのかなと思います。</b>

無料〜月1000ドル程度までお金を出したときのサポート : Azure > AWS >>> GCP
それ以上お金を出せるときのサポート : AWS > Azure >>> GCP

## 6. サポート期限(EOL)の延長をしてくれること
AWS(Amazon)が「地球上で最もお客様を大切にする会社」を掲げていることは冒頭で述べました。
そして、<b>多くの顧客がサポート期限(EOL)までのバージョンアップが間に合わなそうなときには顧客のために結構サポート期限(EOL)を延ばしてくれることが多いです。</b>

夏休みの宿題の提出期限を9月いっぱいまで延ばしてくれる学校の先生みたいですね（笑）。

最近だとAurora/RDSのMySQL,PostgreSQLのサポート期限を有償で伸ばしてくれることになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2023/09/amazon-aurora-rds-extended-support-mysql-postgresql-databases/


私もAmazon Linux 1 -> Amazon Linux 2 のバージョンアップのときには大変サポート期限の延長に助けられました。

https://aws.amazon.com/jp/blogs/news/update-on-amazon-linux-ami-end-of-life/

3大クラウドの中でも、GCPは特に当初のサポート期限に則ってスパッとサポートを切る印象です。
AzureはSQL ServerやWindows Server等のMicrosoft社製品に関してはサポートを延長してくれることがありますね。

原理原則論としては、サポート期限の延長は期待すべきものではありません。

しかしながら、完全ブラックボックス化した絶対に止められない業務システムの対応等、各種事情によってそれが難しいケースがあることは事実です。
そのような場合にこのサポート期限の延長は大変重宝します。

# さいごに

実稼働時間ベースでの安定性の高さから、「大量に予算を積むので可用性99.999%のミッションクリティカルなサービスを新規で構築してほしい」といわれたら現時点では私もメインクラウドとしてAWSを選ぶ可能性が高いです。
(メンバーの習熟度等、考慮すべき要素が他にもあるので絶対選ぶとは言えません。)

また、学習環境の良さと大手企業での利用状況から考えても、現時点だと学生や若手がクラウドインフラを初めて学習する場合にはAWSを選択することは合理的な判断かなと思います。
このあたりは一つめの記事でも述べたところですね。

なお、余談にはなりますが、大企業や公的機関であれば、AWSにおけるIAMの権限設定やネットワーク/セキュリティグループ設定の細やかさもAWS固有の優位性に含まれる可能性はあります。

3大クラウドの中でもずば抜けて細かくこのあたりを設定できるので、PoLP(最小権限の原則)を実現するうえでは素晴らしい機能です。

ただ、ベンチャーなどでスクラップ＆ビルドが前提の小規模サービスを作りたいときに、流石に細かすぎて設定が面倒なときがあるので、固有の優位性には入れていません。

サービスリリースまでのスピードを優先したいときに、細々とした設定が多すぎてCloudFormationやTerraformでインフラのコード化を進めないとやっていられないときがあります。

設定の細やかさは誰目線で判断するかによって意見が変わりそうですね。

私がAWSをプロダクションで実運用して感じた、AWS固有の優位性に関しては以上となります。