- クラウドってよく聞くけれど、よく分かってないんだよなー。
- クラウドがなぜこんなに凄いと言われているのかが、分からない!
今回は、こんな疑問に答えます。
この記事を読めばクラウドについて人に説明が出来るくらい理解が出来ます。
- クラウドについてよく分からないエンジニア
- これからクラウドを使いたいと思っているが、いまいちメリットが分からないエンジニア
- オンプレミスからクラウドにスキルチェンジしたいエンジニア
クラウドとは何か?
クラウドとは何かを知るために、AWSが出しているクラウドの定義を見てみましょう。
「クラウド(クラウドサービス、クラウドコンピューティング)」とは、クラウドサービスプラットフォームからインターネット経由でコンピューティング、データベース、ストレージ、アプリケーションをはじめとした、さまざまな IT リソースをオンデマンドで利用することができるサービスの総称です。クラウドサービスでは、必要なときに必要な量のリソースへ簡単にアクセスすることができ、ご利用料金は 実際に使った分のお支払いのみといった従量課金が一般的です。
引用元:https://aws.amazon.com/jp/cloud/
ポイントは以下となります。
- インターネット経由でサービスが受けられる
- 必要な時に必要なリソースにアクセス出来る
- 使った分だけ支払いが発生する従量課金制
クラウドサービスプラットフォームではAmazonが運営する「AWS」やGoogleが運営する「GCP」、Microsoftが運営する「Azure」が有名です。
世界的なシェア率としては、以下の通り、AWSが首位を走っています。
Amazon Web Services(AWS)は約40%のシェアをほぼ下げることなく維持し、引き続き他社を大きく引き離した首位の座にいます。
引用元:https://www.itmedia.co.jp/news/articles/1911/13/news073.html
そのAWSを追い上げるのがマイクロソフトで、2019年第3四半期の時点で20%弱のシェアを保持。それに続く10%弱のシェアがGoogle、6%程度がAlibabaとなっています。
今からクラウドを勉強するのであれば、「AWSを選択して良い」と思います。
日本政府の基幹システムも以下の記事のように、AWSを使ったクラウド基盤へと移行していくこととなっています。
クラウドのメリット
クラウドのメリットを考えるために、クラウドと対比関係にある「オンプレミス」との違いを見ながら、整理していきましょう!
オンプレミス ( 英語: on-premises(オン・プレミシズ))[注 1] とは、情報システムのハードウェアを使用者(通常は企業)が自社保有物件やデータセンター等の設備内に設置・導入し、それらのリソースを主体的に管理する運用形態をいう。
引用元:https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%B3%E3%83%97%E3%83%AC%E3%83%9F%E3%82%B9
オンプレミスでのアプリ開発までの流れ
例えば、何かWebアプリケーションを構築するとします。
その際、オンプレミスであれば、「サーバーやストレージを調達して、そこからDBサーバーとWebサーバーを作って、ネットワーク構築をして…」とたくさんの作業をする必要があります。
オンプレミスではここまでの作業を実施するのに、多額のお金とサーバー調達(※1)や構築作業に膨大な時間と多くの人的リソースが必要となります。
※1 サーバーの調達にはリードタイムがかかりますしね。
そして、やっとアプリ開発にまで進みました。
が、しかし。
このアプリケーションが形になる頃にはビジネスアイデアが古くなり、望んでいた結果を得られないことがあります。
フローチャートにすると、以下のようになります。
しかしながら、オンプレミスには以下の課題があります。
- オンプレミスはアイデアを形にするまでに時間とお金がかかり過ぎる
- それぞれの工程を管理する人が多く、人的リソースがたくさん必要
- アイデアが失敗と分かっても、調達した資源が残るため、撤退がしにくい
この課題を解消するには、どうしたら良いのでしょうか?
クラウドでのアプリ開発までの流れ
一方、クラウドの場合はどうなるのでしょうか?以下からは、AWSを例に紹介します。
まず、サーバーやストレージの調達はリードタイムがかからず、インターネット越しに数クリックするだけで、サービスとして利用出来ます。
AWSで言うとサーバーはEC2になり、ストレージはS3になりますかね。
もっと言うと、データベースもリレーショナル・データベースであればRDS、NoSQLであればDynamoDBと言った具合にサービスが存在します。
そのため、わざわざサーバーにインストールしなくてもすぐに使えるようになります。
インフラに関してもVPCというサービスを使うことで、すぐにネットワークを構築することが出来ます。
もちろんデータセンターにわざわざ行って、LANケーブルをハブに繋いだりといった作業は発生せず、インターネットで全て完結します。
またアプリ開発についても、便利なサービスがたくさんあります。
特にAmplifyというAWSサービスを使うと、実装が難しい認証処理といった処理が簡単に実装出来ます。
またCodeシリーズ(CodeCommit、CodeBuild、CodeDeploy、CodePipeline)やCloudformationを使うことで、CI/CD環境を簡単に構築することも可能です。
このように、「クラウドは数クリックでインフラリソースを準備出来て、アプリ開発についても便利なサービスを組み合わせることで素早く開発が出来る」ようになります。
オンプレミスで同じことをやろうとした場合に比べると、マネージド・サービスを使うことで、人的リソースも少なくなります。
またアプリ開発の結果、ビジネスアイデアがイマイチだと判断出来た場合は、その時点でサービスの利用を辞めれば、それ以降はコストがかからなくなります。
フローにすると以下のようになります。
クラウドのメリットをまとめると、以下のようになります。
- 数クリックでインフラリソースを準備出来るので、速い
- アプリ開発に役立つ便利なサービスがたくさんあるので、アプリ開発が速くなる
- サービスを利用することで、人的リソースも少なくなる
- コストは固定費ではなく変動費となるので、辞めたくなったらすぐに辞めることが出来る
なぜフルスタックエンジニアが求められるのか
今回は、以下の内容について語りました。
- クラウドとは何か
- クラウドのメリットは何か
最近、「フルスタックエンジニア」という言葉がバズワードのように流行っているような気がします。
それは、以下のようなことで何でも出来るエンジニアの需要が高まったのではないかと推察します。
- クラウド誕生→インフラ構築からアプリ開発までのリードタイムがなくなった
- リードタイムがないんだからインフラもアプリも同一人物がやった方が効率が良い
- フルスタックエンジニアの需要が高まる
クラウドを勉強することで、インフラ構築からアプリ開発まで一貫した流れをインターネット越しに学習することが出来ます。
クラウドを勉強することこそが、フルスタックエンジニアへの第一歩だと私は思っています。
コメント
コメント一覧 (1件)
[…] […]