(個人的な)AWSとAzureを触ってみて感じる違い

クラウド初心者がAWSとAzureを触っていて感じた個人の感想を連ねます。

# 1.価格
オプションの選び方も項目も違い細かく比較するのは難しいが、体感AWSのほうが若干安い感じがする。

 **◆仮想マシンLinux** 

- 2vCPU
- 8GB RAM
- 50GBストレージ
- オンデマンド利用（従量課金）

|AWS|Azure|
|:--|:--|
|$78.27/月|$94.17/月|
|アジアパシフィック（東京）|Japan East|
|インスタンスタイプ：m6g.large|インスタンスタイプ：D2v3|
|使用率：100%/月|730時間（1カ月）|
|EBS（汎用SSD）:50GB|D2v3インスタンスタイプに50GBの一時ストレージ付き|

 **◆仮想マシンWindows Server** 

- 2vCPU
- 8GB RAM
- 50GBストレージ
- オンデマンド利用（従量課金）

|AWS|Azure|
|:--|:--|
|$154.92/月|$161.33/月|
|アジアパシフィック（東京）|Japan East|
|インスタンスタイプ：m5a.large|インスタンスタイプ：D2v3|
|使用率：100%/月|730時間（1カ月）|
|EBS（汎用SSD）:50GB|D2v3インスタンスタイプに50GBの一時ストレージ付き|

※2021/10/24(日)時点の見積ツールでの換算

## 1-1.AWSの見積ツール（AWS Pricing Calculator）

https://calculator.aws/#/

- 使いたいサービスを選択し詳細設定を入れると金額が表示される
- 表示は米ドルのみっぽい
- 作成した見積のエクスポート、リンクの共有ができる

## 1-2.Azureの見積ツール（料金計算ツール）

https://azure.microsoft.com/ja-jp/pricing/calculator/

- 使いたいサービスを追加して後から詳細設定する
- 日本円とかドルとかポンドとかいろいろ選べる
- 作成した見積の保存、エクスポート、リンクの共有ができる
- 時々調子が悪くて特定のサービスが出てこない日とかがある


見積ツールの使い勝手は個人的にAzureのほうが使いやすい。

# 2.Azure ADが強い

https://azure.microsoft.com/ja-jp/services/active-directory/#overview

![10221-icon-service-Azure-Active-Directory.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/57ecfbcf-0c89-4e59-5b55-dda44553e874.png)

- よくできたIdP。
- シングルサインオンや多要素認証、条件付きアクセスが利用できる。
- 事前統合された多くのSaaSアプリケーションへのログインを管理できる。
- システムはAWSをプラットフォームに使うけどユーザー管理はAzure ADでやるというケースもある。

業務でWindows端末を使う企業は多いため、Azure ADでMicrosoft365などのライセンス管理も統合できるといった点で適したケースは多いと感じる。
AWSにもIAMという認証・認可を提供するサービスがあるが、Azure ADの方が他サービスとの統合や機能の豊富さの面で利用できるケースは多いように感じる。


# 3.Azure リソースグループが便利

https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/management/manage-resource-groups-portal

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/6d9eab04-86f9-7ea2-3fa0-05c8f57726c1.png)

- 構築者目線でいうと、Azureはリソースグループで作成したリソースを一括管理できて一括で削除できるのがいい。ハンズオンでも便利。
- AWSは基本的に作成したリソースのコンソールを見に行かないとと自分が作成したリソースが確認できない。不信な攻撃者に侵入されて普段見ないリージョンに勝手にEC2など作られてしまってもなかなか気づけない。


# 4. Amazon S3が強い

https://aws.amazon.com/jp/s3/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/f8ba19cd-a1f6-e320-05a8-92c31d0206be.png)

- S3があるからAWSをチョイスするというユーザも多い気がする。
- 安くて大量のデータ保存が可能。データレイクにもなる。
- 「オンプレ上の既存システムをすぐクラウドに移行したいわけじゃないけど、データのバックアップとか手軽に安くクラウドに保存できないか？」という要件にピッタリ。
- Strage Gatewayを使っていろいろなユースケースに合わせてオンプレのバックアップをAWS上に取得できる。

- Azureでオンプレ上のシステムのバックアップを取る場合、Azure Backupを閉域通信で使おうとするとAzure Backupのプライベートエンドポイントを用意して名前解決するためにDNS ResolverとなるVMをたてる必要がある（そのためだけのVMの料金がかかる）。
- Azure ストレージアカウントにファイルをAzCopyなどでファイルをコピーする方法も考えられるが同様にAzureへの接続が面倒な印象。
- HTTPSとはいえ業務データを公共のインターネット回線に乗せるのに抵抗があるというケースが多いのでなかなかユースケースにマッチしない。

※私がAWS Storage Gatewayを実際にセットアップしたことがないためAWS～オンプレ間の接続設定方法については詳しくなく…どちらも閉域で接続しようとするとき面倒なのは同じなのかもしれないです。ご指摘あればお願いします。


# 5.Infrastructure as Code
AzureはARMテンプレートをJSON形式で自動生成できる。
AWSはCloudFormationテンプレートを書かないといけない。

# 6.アイコン

- [AWSのアイコン](https://aws.amazon.com/jp/architecture/icons/)はPowerPointで配布されていてすぐにコピペで使える。

- [Azureのアイコン](https://docs.microsoft.com/ja-jp/azure/architecture/icons/)はsvgイメージで、資料作成時に使うのが難しい。
[Inkscape](https://inkscape.org/ja/)などでpngに変換するなど工夫が必要。



# 7.契約体系

Azureは複雑。
個人契約、CSP契約、SCP契約などの契約形態が存在し、それに紐づくMicrosoft製品のライセンスの管理や割引が入ってくるとさらに混乱する。

# 8.シェア

https://www.publickey1.jp/blog/21/awstencentbaidu20211synergy_research_group.html


米調査会社のSynergy Research Groupの「2021年第1四半期のクラウドインフラに関する調査結果」より図を引用↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/3521342a-1d71-f568-140c-4ede5a5720fa.png)

AWSが圧倒的なシェアを占める。
AWSが先頭切ってリリースしたものや金額を他のクラウドが追随していくような構図に見える。

## 8-1.(個人的に感じる)AWSの雰囲気

- スタートアップ、ベンチャー企業などで導入が多いイメージ。スモールスタートに向いていそう。
- Amazon Linux。
- 学習者が多いため、ユーザー会や勉強会などの活発さがある。日本語技術情報・書籍も豊富で初心者歓迎の雰囲気。

## 8-2.(個人的に感じる)Azureの雰囲気

- 大手金融系や大手SIerなどでWindows Server開発している企業がリフトしていくのが多いイメージ。
- Microsoft Learnなど公式が出している無料学習コンテンツが充実している。
- ユーザー会や技術情報、日本語の書籍などがAWSに比べ少ない。
- Microsoftの方々やMicrosoft MVP for Azureといった方々が、動画を出したりパブリッククラウド勉強会など開催したりして引っ張っていってくれているイメージ。

# 9.Azure PaaSサービスが強い

AWS、Azureともにマネージドサービスは数多あるがAzure PaaSサービスが強いと感じる。

## 9-1.コンピュートサービスの比較
### Azure App Service

https://azure.microsoft.com/ja-jp/services/app-service/#features

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/1f64c545-d3cd-4e06-76af-efa0eb2e00ca.png)

- コードをアップロードするだけでWebアプリが起動できるお手軽アプリ実行環境。
- インフラ関連リソースを準備する必要がない。
- 手元のコードをアップすることもできるし、GitHub、Docker Hubなどのソースからの継続的デプロイ、パッケージ管理、ステージング環境作成も可能。
- オプションを選択するだけで負荷分散、自動スケーリング可能。
- マネージドサービスなのでパッチ適用やアップデートなどの管理はAzure側でやってくれる。
- サービスエンドポイントやプライベートエンドポイントなどを利用してVnet内のリソースとも閉域通信ができる。


### AWS Elastic Beanstalk

https://aws.amazon.com/jp/elasticbeanstalk/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/b73065c2-4322-ca5e-8523-c146ecfae6aa.png)

- VPC、EC2インスタンスなどのインフラリソースを自動で作成してくれる。Auto Scallingの設定なども手軽にできる。
- 様々なデプロイ方法が選択でき、Blue/Greenデプロイなどもできる。
- 責任共有モデルでいうとIaaSサービスになるので、パッチ適用やScallingの設定はユーザー自身で実施する必要がある。
- EC2コンソールとかVPCコンソールとか見るとElastic Beanstalkで作られたリソースが見える。CloudFormationのスタックも見える。

### AWS App Runner

https://aws.amazon.com/jp/apprunner/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/49191f09-3268-f9b6-56f8-ad54089c6923.png)

- Azure App Serviceに近い使い方ができる。
- コンテナ化されたウェブアプリケーションや API を開発者が簡単かつ迅速にデプロイできるフルマネージド型サービス。
- インフラ関連リソースを準備する必要がない。
- ソースコード、コンテナイメージなどのソースから継続的デプロイが可能。
- 自動スケーリング可能。
- PrivateLinkのようなサービスが未実装のため、VPC内部のリソースと閉域通信することができない。
RDSとの連携がまだ難しい。


## 9-2.リレーショナルデータベースサービスの比較

### Azure SQL Database

https://azure.microsoft.com/ja-jp/products/azure-sql/database/


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/c0091842-2300-ee1e-94ac-51b3913e6b35.png)

- 更新、プロビジョニング、バックアップが自動化されるフルマネージドデータベース。
- インフラ関連リソースを準備する必要がない。
- オプションを選択するだけで自動スケーリングできる。
- サービスエンドポイントやプライベートエンドポイントなどを利用してVnet内のリソースとも閉域通信ができる。


### Amazon RDS

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/884fe04e-8bd7-9727-cec4-d84bddf4d804.png)

- リレーショナルデータベースのセットアップ、パッチ適用、スケールが簡単になるマネージドサービス。
- バックアップなどの管理タスクを自動化できる。
- 内部的にはRDSがのったインスタンスであり、冗長構成はユーザ自身で実施しなければならない。
- VPC内に起動する。


EC2もRDSもユーザ側で冗長構成しないといけないことを考えると、Azure PaaSは便利。
同時に、Azure PaaSはVnet内で起動するサービスではないので、Vnet統合やプライベートエンドポイントなどの通信経路を工夫しないと導入が難しい場合もある。

# 10.混乱ポイント

AWSとAzure同時に勉強していて混乱したポイント。

## 10-1.セキュリティグループ

- AWSのセキュリティグループ⇒EC2に紐付く
- AWSのネットワークACL(NACL)⇒サブネットに紐づく
- Azureのアプリケーションセキュリティグループ⇒同じ機能を持つVMをグループ化して通信制御する
- Azureのネットワークセキュリティグループ⇒サブネットに紐付く

## 10-2.パブリックIPの課金

- AWSだとElastic IPが紐付いたマシンが起動中なら課金はされない。マシンが停止しているかデタッチされていると課金。
- Azureの静的パブリックIPはマシンの紐付けやマシンの死活に関わらず課金。月額300円くらい

## 10-3.プライベートIPの変更

- AWSだとプライベートIPはインスタンス作ったら二度と変更できない。
- AzureだとセカンダリネットワークインターフェースでIP割り当てたあと、プライマリネットワークインターフェースを削除することで変更できる。

# おわりに

「違うぞ」という点があればご指摘ください。
GCPはわからないのですが、AWSをやる人は次にGCPを学ぶという方が多いみたいですね。

# 追記
- 2021/10/24(日)：VM価格の比較で、AWSがバーストタイプのVM、AzureがバーストタイプではないVMになっていましたので、AWSを汎用タイプに変更しました。ご指摘ありがとうございます！