Microsoft のクラウド Azure の入門講座を和訳した (前編) クラウドについて - IaaS, PaaS, SaaS, クラウドへの移行 #MSIgniteTheTour

Microsoft の公式大型技術カンファレンス『Microsoft Ignite 2019』が、アメリカで開催されました。
そこで実際にデリバーされた **Azure 入門編セッション** (英語) を、私が和訳して日本の『[Microsoft Ignite The Tour Tokyo](https://www.microsoft.com/ja-jp/ignite-the-tour/Tokyo?WT.mc_id=Ignite-blog-machiy)』で発表することになったので、その登壇資料をもとにした記事をここに書いて公開します。
また、スライドを和訳したさい、(スペースが空いていれば) なるべく原文も併記するようにしています。

[Christina Warren](https://twitter.com/film_girl) さんによるオリジナルのセッション (英語)『**Discovering Microsoft Azure**』の動画は [こちら](https://myignite.techcommunity.microsoft.com/sessions/83201?WT.mc_id=Ignite-blog-machiy) で見られます！ 
→ [https://myignite.techcommunity.microsoft.com/sessions/83201](https://myignite.techcommunity.microsoft.com/sessions/83201?WT.mc_id=Ignite-blog-machiy)

(また、日本語に訳した版のブログ (この記事) の公開許可も頂いています、ありがとうございます！)

![Azure 入門](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/475d3410-3ffd-4a08-a650-f178ea504909.png)


## もくじ

あまりに長くなってしまったので、
前編後編に分けました。

1. 前編：「クラウドについて」
    - 「**クラウド コンピューティング**」
    - 「**IaaS**」, 「**PaaS**」, 「**SaaS**」
    - クラウドへの移行
    - 「**Lift and Shift**」
    - 「**クラウド ネイティブ**」
     
2. 後編：「[マイクロソフトのクラウド Azure について](https://qiita.com/chomado/items/439eeea4b3ce318fb5a8)」
    - 「**Microsoft Azure**」 とは
    - Azure のサービスの種類（カテゴリ）
    - ID 管理サービス「**Azure Active Directory**」
    - 「**リソースグループ**」
    - 「**リソースプロパイダー**」
    - 「**Azure リソースマネージャー**」 (ARM)
    - 「**ARM テンプレート**」
    - 色々なスペックの仮想マシンのシリーズ
    - 「**コンテナ**」
    - 「**Windows Server コンテナ**」
    - 「**Hyper-V コンテナ**」
    - 「**サーバーレス**」-「**Azure Functions**」
    - アプリのホスティングサービス「**Azure App Service**」
    
この記事では、前編の「クラウドについて」お話しします。
(後編の記事は[こちら](https://qiita.com/chomado/items/439eeea4b3ce318fb5a8)) (スライドは [こちら](https://www.slideshare.net/chomado/azure-at-microsoft-ignite-the-tour-tokyo-2019))

## Azure とは？

![Azure](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/5c8ef3b3-7d3f-a2c5-b06d-7040c2bb8d84.png)

**Microsoft Azure** (アジュール) とは、マイクロソフトによる、 **クラウド・コンピューティング・プラットフォーム** です。

Azure は、マイクロソフトのクラウドサービスのこと！

↓ Azure のポータル画面 [portal.azure.com](https://portal.azure.com)
![Azure のポータル画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/301f9041-298a-e86c-a856-888b3b568ea7.png)

Azure について詳しくお話しする前に、まずはクラウド・コンピューティングについてお話ししましょう。
クラウド・コンピューティングとは何か、また、なぜそれが必要なのかについて。

# クラウドコンピューティング について

よく聞く「**クラウド**」とは、正式には「**クラウドコンピューティング**」(Cloud Computing) のことで、
従来のパッケージソフトのようにパソコン上のアプリやデータを使うのではなく、
ネット経由でサービスやアプリを使うことを指します。

## クラウドのサービスの種類 - IaaS, PaaS, SaaS

クラウドにはたくさんのサービスがありますが、仕組みを大きく分けると、次の3種類に分類できます。

![Cloud Computing Types - IaaS, PaaS, SaaS](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/de535470-086d-71b6-3a2c-48285273a0ea.png)

* **SaaS** (サース) ( **Software as a Service** )
* **PaaS** (パース) ( **Platform as a Service** )
* **IaaS** (イァース/アイアース) ( **Infrastructure as a Service** )
 
![IaaS, PaaS, SaaS](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/f52f5c3c-ae40-3861-d812-dc400d0dcbe6.png)

青い部分が自分で管理（おもり）しなければならない部分で、
灰色の部分が自分で管理しなくてよい（マイクロソフトなどのクラウドベンダーが面倒見てくれる）部分です。

IaaS, PaaS, SaaS それぞれ見ていきましょう。

### IaaS
![IaaS](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/225aae2a-fed0-3e55-75e9-631f6a2f6ca4.png)

![IaaS](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/03cb9f43-65e7-6375-7224-91f3e5bf8a15.png)


 **Infrastructure as a Service** 。インフラをサービスとして提供してるやつ。

物理サーバのお守りはしなくていいけど、その上に載るOSから面倒見なきゃいけない。
一番自由度が高いけど、その分やらなきゃいけないことが多い。(PaaS や SaaS は、例えば、OS アップデートとかセキュリティパッチ当てたりとかしなくていいけど、IaaS はやらなきゃいけない。)

> Infrastructure as a Service is the most flexible category of cloud services. It aims to give you complete control over the hardware that runs your application. Instead of buying hardware, with IaaS, you rent it. 

> With great power comes great responsibility

**Infrastructure as a Service** (IaaS) は、クラウドサービスのなかで、もっともフレキシブル(自由度のある)なカテゴリーとなります。
ハードウェアの上のコントロールをすべてユーザに与えることを目的としています。ハードウェアを買う代わりにレンタルしてる感じ。
大いなる力には大いなる責任が伴う。（これちょっとカッコいいこと言ってるから多分ここでドヤ顔する）

例）

* Microsoft Azure
* AWS などなど

### PaaS

![PaaS](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/35f87d24-b551-6a5c-17f6-9f301a68daed.png)

![PaaS](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/2999112d-1a33-ae30-66c2-81c2dc8a3783.png)

 **Platform as a Service** は、アプリの動くプラットフォームをサービスとして提供してるやつ。

あなたの開発したアプリの動くランタイムまでを、クラウドベンダー (マイクロソフトや Google など) が面倒見てくれています。
デプロイしたら動く。プログラムだけ用意すれば良いので、プログラマは基本的に開発だけに集中できます。OS とかの心配しなくていい。

たとえば、Web アプリをデプロイするときに PaaS を使ったら、OS の面倒、Web サーバのインストール、システムのアップデートなど、アプリのランタイムの下を気にせず開発だけに集中できます。

例）

* Microsoft Azure
* Heroku
* Google App Engine などなど


### SaaS 

![SaaS](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/e361739f-fe48-a5c5-7975-408ccacf97f7.png)

![SaaS](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/2f3ff397-b9ff-b947-5c3b-a21337aa226f.png)

 **Software as a Service** は、ソフトウェアがサービスとして提供されている。

クラウドで提供されているソフトウェアのことで、ユーザはそのソフトをインストールなどすることなく、ベンダー側 (Microsoft など) で稼働されているソフトをネットワーク経由で利用する。Office 365 とか、Google Gmail とか。


例）

* Microsoft Office 365
* Microsoft Dynamics 365
* Gmail などなど

## クラウドへの移行

オンプレミス (自社サーバ) や自前データセンターで動いているサービスを、クラウドへ移行するときの、典型的な道のりについて。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/81605f38-38a1-2a3b-56cf-087d8eded781.png)

### 1. マイグレーション と モダナイゼーション (現代化)

まず、**マイグレーション** (Migration) です。
マイグレーションとは、ソフトウェアやシステム、データなどを別の環境に移転したり、新しい環境に切り替えたりすることです。

### 1-1. リホスト ～ Lift and Shift ～

オンプレミス環境をクラウドに移行するときに、まず **リホスト** (**Rehost**) として「**Lift and Shift**」という手法が取られます。これは「取り敢えずクラウドに上げて (Lift)、徐々にクラウドにシフト (Shift) していく」というものです。オンプレで動いているシステムを、まずはそのまま、クラウドに上げて、そのまま同じ動きをするようにする感じ。アプリがクラウドに適するように最小限の修正を加えながら、安定稼働させることが目標。まずはここからですね。

この場合、そのまま動かすという意味では、**IaaS** がよく使われます。移行先で OS の管理などをクラウドベンダーに任せて運用管理コストを下げるためには PaaS に移行する場合もあります。

ちなみに「**Lift and Shift**」の対義語としてよく言われるのは、クラウド前提でシステム開発する「**Cloud Native** (クラウド・ネイティブ)」です。

> **Rehost**: **Lift and Shift**. Redeploy as-is to cloud; used for quick ROI, freeing up DC space, least effort. IaaS is the key tech here. 

### 1-2. リファクタリング & リアーキテクト

**リファクタリング** とは、ソフトウェアの外部機能を保ちながら、内部構造を変えることです。
コードを書き替えて PaaS などに最適化された感じに。
リホストされたものを、もっとクラウドに最適化された状態へと徐々に変えてゆきます。
ようするに、IaaS から **PaaS**, **コンテナ** に移行してゆきます。

> **Refactor**: Minimally alter to take better advantage of cloud; used for code portability and quick updates.  Containers and PaaS are the key tech here. 

また、そもそもアーキテクチャから見直す必要も出てきます。(**リアーキテクト**する)
アプリを分解して、クラウドサービスにそれぞれうまくあててゆき、つないで、アプリのアーキテクトをいい感じにします。

**PaaS**, **Serverless**, **マイクロサービス** などを使用します。

### 2. クラウド ネイティブ

（オンプレから移行してきたものではなく）クラウド前提でのシステム開発である **クラウド ネイティブ** のアプローチで、新規にコードを書きます。

> **Rebuild**: New code written with cloud native approach; to accelerate innovation and build apps faster. PaaS, Serverless and Microservices are key tech here.  

## クラウドに移行する理由

1. 費用対効果
2. スケーラブル（スケールできる）
3. 伸縮性がある（Elastic）
4. サーバのおもり不要
5. データの安全性（自動バックアップなど）
6. セキュア（安全にデータセンタを構えているので、物理的な安全性など）

それぞれについて見てみましょう。

![クラウドに移行する理由](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/9d298e1a-de75-06fe-c2fa-e42b14a0f19f.png)


クラウドへの移行の最大の利点の1つは、費用対効果が高いことです。 
常に使用するとは限らないものに支払う必要はありません。実際に使用しているものに対してのみ支払うことができます。 
例えば、ブラックフライデーや年末年始やホリデーシーズン中に、通常よりも多くのコンピューティングリソースが必要になる場合があります。一方、それ以外のときはそんなにたくさんのサーバのリソースは必要にはなりません。
古いシステムでは、サーバーを使用していなかったとしても、年間を通してそれらのサーバーに支払いをしなければなりませんでした（または手動でサーバーを調達/使用停止します）。 
クラウドを使用すれば、使用するリソースの料金を支払うだけで、必要に応じて拡張できます。

> One of the biggest advantages of moving to the cloud is that it’s more cost-effective. Instead of having to pay for all the compute power that you may not always use – you can just pay for what you’re actually using. Say you’re an e-commerce company like Tailwind Traders. A few times a year, like Black Friday and during the holiday season, there might be times when you need more compute resources than usual. In the old system, Tailwind would have to pay for those servers year-round (or manually procure/decommission servers), even if they weren’t using them. With the cloud, they could just pay for the resources they use and expand as needed. 

![クラウドに移行する理由](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/b69f334f-8f7a-84fa-8de8-a7486ababe7d.png)

例えば、上に書いた例の続きで、ホリデーシーズン中など、通常よりもWebアプリに負荷がかかって増やしておいたサーバのリソースを、閑散期になったら減らす、ということも簡単にできます。（もちろん減らしたらそれだけお金もかからなくなります）


### ニューヨーク大停電の時の話

![ニューヨーク大停電](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/dcddb90c-bd41-2b6f-32a9-dd107b092423.png)

2012年に、100年に一度といわれる大きなストームがマンハッタンを直撃しました。
島半分が停電になり、真っ暗になりました。

この停電被害の中には、Squarespace や BuzzFeed、Huffington Post などの主要な企業のサーバやデータセンターも含まれ、Web サイトなどが閲覧不能になりました。 Teams scrambled to either move infrastructure backups to alternative locations and in some cases, carried buckets of gasoline up the steps of the data center to feed the generators to get things back online.

ここは、企業がデータセンターを持っていると安全だと感じていたエリアでした。

クラウドは、データを保存する場所の信頼性を高めるだけでなく、想定外の事態が発生した場合に備えて、データを複数の場所に保存することもできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/40691028-6863-3bd8-d865-ff40a3e6de8c.png)

さて、ここまでが「クラウド」に関するお話しでした。
[次の記事](https://qiita.com/chomado/items/439eeea4b3ce318fb5a8)では Azure についてお話しします。

# 復習しよう

この記事で書いたことは
マイクロソフト公式の無料オンライン学習サイト『 [**Microsoft Learn**](https://docs.microsoft.com/ja-jp/learn/?WT.mc_id=docs-blog-machiy) 』の
[こちらのコース](https://docs.microsoft.com/ja-jp/users/msignite2019/collections/184c8d4w2mjy?WT.mc_id=docs-blog-machiy)にもよくまとまっているので、
ぜひ自主学習にどうぞ！
→ [https://docs.microsoft.com/ja-jp/users/msignite2019](https://docs.microsoft.com/ja-jp/users/msignite2019/collections/184c8d4w2mjy?WT.mc_id=docs-blog-machiy)