【マツコの知らないインフラの世界】 OpenStackって知ってる？　～パブリックorプライベートなクラウドについて～

最近クラウドってどんなもんか知る機会があったのでアウトプットをQiitaにします。

>インフラって何ぞ？クラウド何それ？つまんなそう🙄
>AWSとかAzureって流行ってるけど何？


って人には必見の内容となっております。特に初心者はインフラなんて興味もないと思いますが、話聞いてから考え直すきっかけになればいいなと思っております。**クラウド超面白いですからぜひぜひ**


#1.クラウドを支える技術【OpenStack】
![2560px-OpenStack®_Logo_2016.svg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505304/2480c77b-668d-1017-12c9-0014b2fc5020.png)

詳しくはのちに解説しますが、プライベートクラウドを用いたインフラ技術やクラウドの利用方法の検証をするためにOpenStackは使われます。キーワードとして、**プライベートクラウド**は覚えておいて下さい。

関連する技術として他に、Linux、Docker、Kubernetesなんかもあります。

#2.クラウドってなんぞ？
![作図用-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505304/3da84ff6-3fea-24f3-c227-51cd208cba4f.jpeg)


クラウドとは使用者がインターネット等のネットワークを介してPCやスマートフォンから利用できるサービスです。

クラウドサービスの場合、ネットワークを経由して提供元のサービスを利用するため、**インターネット環境さえあれば場所や端末を選ばずにサービスを利用でき、ファイルのアップロード、ダウンロードなどもできます**。

他にもこんなのがクラウドサービスになります。どれか１つは知ってると思います。
>・ECサイト（Yahoo!Japan, Amazon）
>・ストレージ（GoogleDrive）
・オンラインゲーム（任天堂、スクウェア・エニックスetc）
・AWS、GCP、Azure
■通信（LINE、楽天モバイルetc）

ちなみにクラウドは、データセンターというところに大量のサーバーが設置されており、そこで大量のデータを捌いています。昔は、おっきな会社に大量のサーバーを置かないとダメっぽかったんですって。

#3.クラウドは大きく分けて2つある
さきほど、このように書きましたが、
■で書いたものがプライベートクラウド
〇がパブリッククラウドになります。
>〇ECサイト（Yahoo!Japan, Amazon）
>〇ストレージ（GoogleDrive）
〇オンラインゲーム（任天堂、スクウェア・エニックスetc）
〇AWS、GCP、Azure
■通信（LINE、楽天モバイルetc）

何それって話ですが、ざっくり以下の感じです。

```
パブリッククラウド：インターネット上で誰でも使える（AWS）
プライベートクラウド：社内や限定された環境で利用できる（OpenStackはこっち）
```

あれ？パブリッククラウドの方がよくね？と思いますよね。
でも一見便利そうなパブリッククラウドにもメリットデメリットがあります。

#4.誰でも使えるクラウドにも弱点がある!?
パブリッククラウドの先にメリットを挙げるとこんな感じ

```
1.即利用可能
2.ハードウェアの管理をしなくて済む
3.スケーラビリティ（容量が余ってるときは減らし、足りない場合は増やす）
※3は大量アクセスに備え容量を柔軟に増やせる（昔はサーバーを追加して対応してた）
```
超便利と思う反面、こんなデメリットが。

```
1.使った分だけお金がかかる（従量課金と同じで電気代みたいなもの）
2.クラウドで障害が起きたら何もできない（クラウド事業者任せ）
```

その点、プライベートクラウドなら初期費用は、環境構築費、電気代くらいで知識があれば障害が起きても自分たちで解決できます。

#5.結論クラウドって何よ？？
結論から申し上げるとこの３つです。

```
1.仮想化技術
2.ネットワーク仮想化
3.ストレージの仮想化
```

##「❶仮想化技術」
仮想化というのは「ハードウェア（HDD,メモリ,ネットワーク）で実現可能なものを抽象化、ソフトウェア化する」ってことです。何言ってるかわからんと思いますが、積み木を想像してください。

本来ハードウェアとソフトウェアは一緒でした。PC買ったらソフトも自動でついてるみたいな。積み木で言ったら、**１個の積み木で色が上下で２色分かれている**感じです。

ですが、**仮想化技術を使えばとっかえひっかえ組み替えること**が可能になります。
土台（ハードウェア）があれば、ソフトウェアの部分は好きにできます。**積み木でいえば好きな形、色の積み木を自由に積み替えられるってわけ**です。
![atelierFU-teeth.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505304/8b56800a-e919-f56f-8aa4-eee904862f90.jpeg)

ざっくり仮想化のメリットを言語化するとこんな感じ

```
1.リソースを有効活用できる（空いている場所は誰かに使ってもらえる）
2.複製・移動が簡単（ハードウェアが停電して止まっても関係ない。サービスが動くようになる）
```

##「❷ネットワーク仮想化」
一言でいえば、「物理的な接続を変更せずに、ソフトウェアによって制限」です。
今と昔で比較するとわかりやすい

```
昔：各部署に1つずつ連絡をつなげる装置が必要だった（コスト大、手間大）
今：1つで全部管理可能（圧倒的コストカット！）
```



##「❸ストレージの仮想化」
これは、必要な分だけ提供することができます。最初から最大容量のものを買っても使わなかったらただ高いだけですよね。**必要な分を必要なだけ最小限でデータのストレージが使えます。**

仕組みとしては、複数のストレージサーバーというものを連携させて1つのように振る舞っているだけなんですけどね(笑)

##WEBシステムの今昔
昔は、開発者が１つのシステムを**まとめて開発**し、リリース（提供）していました。
これだとサービスを出すのに時間がかかったり、障害が発生すると1から見直さないといけませんでした。

しかし、クラウド化によって今はA機能、B機能、C機能、UIなど**部品ごとに分け開発**できるようになりました。汎用サーバーの上に仮想化基盤というものがあり、それによって1つ1つ開発できるようになったのです。駆け出しエンジニアにも嬉しい話です。
>もちろんインフラの知識が必要になるんですけどね(=ﾟωﾟ)ﾉ

また部品ごとの開発を更にカンタンにする技術なんかも出てきております。

```
コンテナ技術：docker
```
Docker入門（第一回）～Dockerとは何か、何が良いのか～
https://knowledge.sakura.ad.jp/13265/
![large_v-trans.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505304/fa957a1c-9673-f192-97ee-2d8e6ba175c4.png)


#【小話】LINE、楽天モバイルはプライベートクラウド！？
パブリッククラウドばっかり話してたので、プライベートクラウドも少々。

```
・LINE：OpenStackで作られていて、インスタンス化し移動させてる
・楽天モバ：従来の通信とは異なる手法を確立。通信のアンテナはそのままだけど、アンテナだけがある状態。
```

確かにLINEが障害起きたら大変ですよね💦身近な例だと「おもしろそう」ってなります。



とまあこんな感じでアウトプットしてみました。
インフラ全く興味がなかったんですけど、これを知ってワクワクが止まりません。
ぜひみなさんもインフラ、世界を支える技術に触れてみませんか？