Web系エンジニアがAzureに入門してみた

## はじめに

私は、フロントエンドエンジニア7年、時々AWSも少し触ってきたがAzureをほぼ全く触ったことがないエンジニアです。
主にWordPressサイトの構築などを行っています。一応「Web系」という大きな括りに入る類だと認識しています。
最近、Azure OpenAI Serviceを使ってみたいなと思ったことがきっかけで、まずAzureについて学ぼうということを考え始めました。

## Azureとは何か

まずAzureって何だっけ？ということから確認します。

いわゆるクラウドプラットフォームです。

大きい市場シェアを持ちます。クラウドと言えば、AWS(by Amazon)やGCP(by Google)やOCI(by Oracle)など色々ありますが、その中でも執筆時点ではシェアがAWSに続いて2番手であり、かつAWSのシェア率が伸び悩む中前四半期の21％から2％もシェア率が増加した[^1]とのことで、クラウドの業界でも第一群と言えるでしょう。

機能面も強力です。AWSとAzureはどちらも200以上のサービスを提供するプラットフォーム[^2][^3]であり、非常に幅広いユースケースに対応できます。

それから個人的な感覚ですが、ダッシュボードのUIが洗練されていて、シンプルでとても見やすく操作もしやすいです。

そして、あのChatGPTを使えるクラウドはAzureだけです。

## 何ができるのか

できないことを探す方が難しいのと、私はWordPressサイトの構築歴が長いので、そこにフォーカスしてみると、「スケーラブルなサイトをスモールスタートで構築」できるというのが一つ言えます。

というのも、通常、スモールな自社サイトで、静的なコンテンツがメインであればいわゆるレンタルサーバでも十分かもしれませんが、ECも組み込むかもしれないということになれば、期待する訪問数の規模が大きければ大きいほど、急なアクセス増への対応が難しくなります。となると占有サーバを借りるという選択肢もありますが、機能面の将来的な拡張性を考えるとやはりクラウドの方が後から機能や性能を継ぎ足していくようなことはやりやすいです。

それらを踏まえると、これからハネるかもしれないWebサイトをとりあえずスモールビジネスとして始めたい、という場合ならAzureがフィットすると言えると思います。ただ、それはAWSやGCPでも似たようなことは言えますが。

逆に言うと、数年後のコンテンツのサイズが見えていて、そこまで大きなユーザが訪問するようなWebサイトでなければレンタルサーバの方がコスパが良いと思います。（ちなみに、炎上が見えている謝罪文を掲載をすることになったなら、そこだけ圧縮した画像にしてAmazon S3やAzure  Storageにホストしたらいいんじゃないでしょうか？w）

## Azureを選ぶ理由

もし要件に影響がないのであれば、事業の持続性の観点から、シェアの大きなAWSやAzureを選ぶことがベターでしょう。

その上で、本記事執筆時点でのAzureのシェアの伸びを考えると、構築するエンジニアの立場で考えれば、これから増えていく技術分野への投資対効果として、まだAWS程のコミュニティのプレゼンスは無いと思われる状況からすると、構築経験はよい差別点になるのではないでしょうか。

さらに、ディレクション側としては、条件付きですが、既にMicrosoftのエコシステムを利用している・今後も利用する組織にとっては互換性や統合のし易さが高いためより魅力的な選択肢となると思います。AD使ってる組織への導入とか。

## どうやるのか

ではどう入門しましょうか。

とにかく小さなサービスをデプロイして、改善サイクルを回してみましょう。

参考として、私のブログサイトをデプロイしてみます。

必要なことは次の2つです

1. Azureダッシュボードにログインできるようにする
2. App ServiceでWordPressサイトをデプロイする

## 環境作成と最初にすべきこと

まず、とりあえずこちらからアカウントを作成してログインしましょう。

- Azure の無料アカウントを今すぐ作成する | Microsoft Azure https://azure.microsoft.com/ja-jp/free

そして、AWSだろうがGCPだろうがAzureだろうが同じですが、初期設定そのままにする、あるいはいいかげんな設定をすることで、大きなセキュリティリスクにさらされる危険がありますので初期設定をします。
それにあたってまずリスクの洗い出しをしましょう

### リスクの洗い出し

危険を避けるために、次の事を考えます

- 危険とは何か
- 危険を避けるためにどうするか
- 具体的な操作

最初のステップとして、思いつく危険をリストアップしてみます。これだけは絶対に起きてもらっては困る、というようなことです。これは組織やチームや個人によって変わると思うので、必要に応じて有識者にもレビューしてもらってください。

今回は私がブログサイトのオーナーとして考えられる事を書いてみます。

- 不正アクセスでアカウントが乗っ取られる
- 気がついたら予算を超えて費用がかかっている

色々ありますが、とりあえず初期段階で、絶対に想定する予算を超えることがなく、第三者からの乗っ取りがないようにしたいです。もし、そのような兆候があれば必ず気づくようにし、もし気づけなかった場合には気づき次第アカウントを閉鎖する事にしたいと思います。

なお、本記事を参考に、大規模なワークロードに対してリスクを検討する場合、次の記事を参考にして、より発展した議論をするのが良いと思います。

Azure 向けの Microsoft クラウド導入フレームワークのセキュリティ - Cloud Adoption Framework | Microsoft Learn https://learn.microsoft.com/ja-jp/azure/cloud-adoption-framework/secure/

### 初期設定

まとめると、初期段階で最低限行いたいことは次の点です

- 不正ログイン対策（ログイン履歴管理、多要素認証）
- 予算管理（予算設定、予算超過アラートの設定）
- すぐにアカウントを廃止できるように手順を確認しておく

それらを踏まえて、公式のファーストステップガイドを見てみます。

Azure 開発者向けファースト ステップ ガイド | Microsoft Learn https://learn.microsoft.com/ja-jp/azure/guides/developer/azure-developer-guide

ガイドを見た上で、やるべき作業をもう少し具体化してみると、次の通りです

- 不正ログイン対策
    - アカウント管理者のMicrosoftアカウントにMFAを設定する
        - ちなみに、このアカウント管理者は、本当に必要な時以外は使わないようにする
    - 一般ユーザを作成
        - [Microsoft Entra ID] - [ユーザー] - [ `+` 新しいユーザ]
- ログ保管
    - 長期間ログを保管できるように、ストレージアカウントを作成して、そこに保管します
        - リソースグループの作成
        - ストレージアカウントの作成
        - サインインログの保管設定
        - アクティビティログの保管設定
        - ストレージアカウントの保護設定
- アカウント廃止の手順を確認
    - これを読んでおく
        - Azure サブスクリプションの取り消し - Microsoft Cost Management | Microsoft Learn https://learn.microsoft.com/ja-jp/azure/cost-management-billing/manage/cancel-azure-subscription
- その他
    - 予算をセットし、セットした予算に達する前にメールで指定の宛先へ通知する
        - [Cost Management] - [ `+` 追加]

## WordPressサイトの作成 with App Service

最低限の初期設定を済ませたら、とりあえず何かデプロイしましょう。
ということで、私はWordPress歴が結構長いので、とりあえずWordPressサイトを作ってみたいと思います。
App Serviceを開き、WordPress on App Serviceを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146594/a38c2dd0-4aee-66f9-f2ff-52915bef17fe.png)

単純にサイトを建てるだけなら次のサービスは不要なのでチェックを外します

- Azure メールサービス
- Azure CDNを有効にする
- Azure Blob Storageを有効にする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146594/f57fc829-56fc-1546-0d3f-b923704cbbfc.png)

デプロイが終わると、作成されたリソースの詳細画面からドメインが確認できるので、開いてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146594/4b64aa4b-236a-623e-fa19-ca1ed72c02da.png)

これで、とりあえずAzureに入門できました！


[^1]: グローバルのクラウドインフラ市場シェア、AWSとAzureの差が9ポイントにまで縮まる。2023年第1四半期、Synergy ResearchとCanalysの調査結果 － Publickey https://www.publickey1.jp/blog/23/awsazure920231synergy_researchcanalys.html

[^2]: AWS の製品・サービス一覧 | クラウドなら AWS [https://aws.amazon.com/jp/products/?aws-products-all.sort-by=item.additionalFields.productNameLowercase&aws-products-all.sort-order=asc&awsf.re%3AInvent=*all&awsf.Free Tier Type=*all&awsf.tech-category=*all](https://aws.amazon.com/jp/products/?aws-products-all.sort-by=item.additionalFields.productNameLowercase&aws-products-all.sort-order=asc&awsf.re%3AInvent=*all&awsf.Free%20Tier%20Type=*all&awsf.tech-category=*all)

[^3]: Azure Cloud Services のディレクトリ | Microsoft Azure https://azure.microsoft.com/ja-jp/products/

## 参考

* Azure 開発者向けファースト ステップ ガイド | Microsoft Learn https://learn.microsoft.com/ja-jp/azure/guides/developer/azure-developer-guide
* クイック スタート: WordPress サイトを作成する - Azure App Service | Microsoft Learn https://learn.microsoft.com/ja-jp/azure/app-service/quickstart-wordpress