見出し画像

俺的三大クラウド入門

人様のアウトプットにあれこれ言う趣味は一切ないんですが、クラウド基盤とかクラウドエンジニアの説明をするときに、AWSを当て込んで説明する例が非常に多いです。
これ本当に良くないと思ってて、それってクラウドエンジニアじゃなくてAWSエンジニアじゃん!ってよく思うわけです。
そんで、申し訳程度にAzureとかの説明が書いていて「AzureはAWSを追従しています」みたいな記事が令和の時代でもされてると、どこがどう追従しとるんじゃワレ!って説明を求めたくなります。

これは弊社内でも同じで、GCPを採用するときに「コンテナ使うならAWSより優位がある」みたいな、マシュマロのようにふわっとした表現で始めようとしてるやつらがいて、どこがどう優位なんじゃワレ!って説明を求めたくなります。
今だとAWSもかなり進化しているので、特にECSのオーケストレーションで不便を感じない人はAWSでコンテナを使えばいいと思います。k8sよりも学習コストで有利なのは間違いありません。

とはいえ、ある程度ふわっとした話になるのは避けようがなくて、具体的な細かい点を一つずつ比較検討するのはそれほど良いものでありません。
実際に使ってみないと使い勝手はわからない部分があってキリがないからです。なので、私の説明もふわっとしてても断じて責めてはいけません。
私のお気持ちとか偏見とかの文章でしかないので、ちゃんとしたことが知りたい人はそれぞれを一次ドキュメントで勉強しましょう。
すごいことは何も書きません。

オンプレエンジニアはクラウドで活躍するか?

僕的にオンプレとクラウドの違いはいろんなところで散々書いたり発表してきた気がするので、今日は省略します。noteにも書けよって要望があれば検討します。
今回は、オンプレエンジニアがクラウドで活躍する人とそうでない人がいるという切り口で一言書きます。

クラウドエンジニアに向いてる人は、普段から気になることを調べたりする「予習型」の人間です。どの機能がどういう使い方ができるのか、それを使う予定がなくてもインプットするタイプなら大丈夫です。
しかし、業務で技術を使ううちに結果的にオンプレエンジニアとして活躍してるタイプの人はあまりクラウドに向きません。クラウド基盤は使い方の自由度が高いゆえに、レガシーな使い方もできてしまいます。それで満足するタイプの人は伸びません。

仕事は追いかけられるより追いかけた方が楽しいですが、クラウドはそれがより顕著です。

AWSとGCPの違い

ここから少し具体的な話をしていきましょう。
AWSで仮想マシンのインスタンスを作るとします。EC2で作るのは従来型のVMwareなどで仮想マシンを作る経験があれば違和感がなくスムーズに作れます。本当に良くできています。

しかし、仮に社内のVPNがSSHを制限したらどうなるでしょう。弊社の新卒はEC2にアクセスできずに非常に困っていました。
私はシリアルコンソールを使うようにアドバイスしました。おそらく権限も足りてないので使うまでに必要そうな情報も調べて渡しました。AWSはこういう部分で苦労しがちなんです。
すると、弊社の新人はできなかったそうです。なぜなら、シリアルコンソールは使えるリージョンやインスタンスファミリーに制限があったからです。こういうトラップも実際に動かしてみないとなかなか気づくことができません。
将来的にこの記事と実態が乖離するのが怖いので、一次ドキュメントのリンクも載せておきます。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/connect-to-serial-console.html
リンクに書いてる通りAmazon EC2 Systems Manager (SSM Agent)を使う方法も提案しましたが、結局インスタンスを作り直してリトライすることにしたようです。

じゃあこれがGCPだとどうなるかというと、すんなりシリアルコンソールで接続できると思います。シリアルコンソールが使えるリージョンやインスタンスファミリーに制限があるかどうか検索しましたが見つけられませんでした。なので制限はないと思います。認識が違ってたら修正しますので誰か優しく教えてください。
GCPはそもそも仮想マシンを作るのが非常にシンプルで簡単です。以前私が検証したときは、ブラウザから簡単にコンソールを開くことができました。GCPのコンソールはAWSやAzureより格段に使いやすいと思います。
https://twitter.com/redsasakou/status/1198122237162872832

GCPは後発だからか文化なのか、より基盤を抽象化してわかりやすさや使いやすさを追求しているように感じます。
シリアルコンソールを使用する許可も、インスタンス単位でもできますしプロジェクト単位でもできます。GCPはプロジェクト単位での設定適応が多いのも特徴であるような気がします。AWSのように徹底的にIAMで支配するというような感覚はやや薄いです。
この辺りは、GCPの業務経験のある方の印象を聞いてみたいところです。
ただし、基盤自体はシンプルでも一次ドキュメントの難解さは先行する2大クラウドよりはるかにわかりにくいです。二次情報も絶望するくらい少ないです。

支配と言えば、Azureでリソースグループという機能がリソースを支配しています。AWSだとEC2を作ると付随してロードバランサーができてセキュリティグループができて、と最終的に何を何を作ったのかわからなくなりがちで、不要になったものを消すときに漏れが出やすいです。
Azureだと作ったものはすべてリソースグループに所属してます。リージョンとか関係なく一覧で簡単に確認して漏れなく削除することができます。
やはり後から出てきたクラウド基盤には、先行するAWSの欠点を塞いでる面もあると思います。

GCPとAzureに共通する特徴

AWSは、Amazonがセールをするとき以外はサーバのリソースが空いてるので、それを貸し出すサービスを思いついたことがEC2のはじまりという話を読んだことがあります。調べもせずに記憶だけで書いてますけど。だからEC2で売れればそれでいいわけです。

GoogleとMicrosoftは基盤をもう少し効率的に使わなければならない事情があります。無料のサービスを世界中にたくさん提供していることです。無料で提供するサービスの基盤は、安ければ安いほどいいに決まってます。

Microsoftの場合は、ほとんどそれをAzureのPaaSが担っています。サーバもアプリも高度に仮想化されている反面、起動するときにインスタンスをビルドするので立ち上がりが遅いです。たとえば、チャットボットを作るとかTeamsでアプリを作るとかMS365で何かするとかなんでもいいんですが、初回の立ち上がりが1~2分かかるという特徴があります。
裏でPaaSが動き始めるので、寝起きがどうしても遅いのです。
それでもコスト面でのメリットが大きいので利用価値が高いのです。

AWSだとあんまりこうしたことを気にする必要はないですが、ECSというコンテナをEC2で動かす方がPaaSのFargateより立ち上がりが早い。なぜならIaaSのEC2はリソースを確保して占有しているからです。FargateはPaaSなので、タスクの起動速度は遅くなります。
(ここも意識する人がそんなにいないかもですが)
運用の手間を考えると、Fargateを第一に検討すべきです。そのくらいPaaSの仮想化というのは優れています。ただし、AWSの場合はIaaSはめちゃ強いので価格がFargate有利とまでは言えないことには留意が必要です。

逆にECS on EC2に相当するサービスはAzureやGCPにはありません。
どちらもPaaSのコンテナのみです。やはりIaaSよりも踏み込んだ仮想化に特化したAzureやGCPとAWSには大きなスタンスの違いを感じます。

なんでもできる基盤はAWSとAzure、ギリギリGCP

また根拠のない偏見とか言われそうですが今更なので続けます。
IaaSでAWSとAzureを比較すると、あまり違いを感じません。GCPは先ほど説明した通り、シリアルコンソールなどの操作感や使い勝手で優位を感じます。

PaaSで考えるとサーバもアプリも仮想化したうえに仮想NWすら不要なAzureは非常に優秀です。継続的なデプロイとか、AWSならコンテナを使わなければ知らなくていい要素もガンガン出てきます。
Azureのコンテナは、遅れてるわけではないですがちょっと使いにくいです。デプロイ周りは優秀ですし、レジストリのスキャン機能もイメージの信頼性を調べてくれるので、他のクラウド基盤より一歩進んでる部分もあります(2021年9月現在)。
しかし、価格や使い勝手は微妙です。はっきりAWSより高いと言い切るのは難しいですが、優位とは感じません。
やっぱりAzureの明確な強さはPaaSなのです。Azureが仮想マシンを作れない時代はAWSの後追いで機能拡張をしていたかもしれませんが、PaaSとして生まれて成長している基盤なので基本的に思想が違います。

全体的な機能としてはAWSとAzureは大差ありません。(大差の定義でどうとでもいえますが)
IaaSを覚えればひとまずAWSを語ることはできます。
しかし、AzureはPaaSを覚えなければ語ることはできません。MS365とAzureの親和性が高いという話も先ほどのようにPaaSで語るしかありません。

GCPは機能としてはかなり充足していますがシェアが約8%と低いです。マイノリティな基盤なので、学習コストの面からかなりハンデがあります。
これはOracle CloudもIBMクラウドも同じですが、その二つはそもそも機能的に足りてないのでメインの基盤として採用するのは強力な理由がいります。アリババクラウドに至っては中国でサービス展開する予定がなければ使うメリットが思いつきません。(これだけは最新機能を英語ではなく中国語で読み解かなければならない)

まとめ

ダラダラといつものようにまとまりのないことを好き勝手に書きましたが、要はクラウドエンジニア=AWSエンジニアではないし、AWSと他の基盤を同じように考えてほしくないってのが言いたいことです。
以上です。ポエムでした。





いいなと思ったら応援しよう!