クラウドサービスといえばファイルを保存しておくサーバーと言うイメージが一般的だと思いますが、サービス開発者におけるクラウドサービスも似たようなものです。
情報・ファイルを保存したり、そもそもWebサイトがそこに入っていたり、APIサーバーを置く場所だったりします。見え方としては昔からあるレンタルサーバーと大差ありません。何かすごい機能がいっぱいついたレンタルサーバーと言ってもさほど問題有りません。
補足:スケーラブル
一応違いを書くと、スケーラブルかどうかという点が大きいです。ユーザーが100人なら100人分のリソースを使い、ユーザーが1億人なら1億人のリソースを使ってくれるという部分がクラウドサービスの革新的な部分です。
補足:オンプレミス
自分でサーバーを用意することをオンプレミスと言います。個人的には自鯖の方がしっくり来るんですが。
レンタルサーバーと似た意味
現代のサービスはほぼクラウドサービスを使っている
流行り始めたのは2010年前後だったと思います。
Web系サービスではアクセス量が桁違いに増減するケースが多く、それに対応できないとサーバーが落ちるといったトラブルに見舞われることになります。そのためインフラエンジニアがスケール部分を担っていましたが、それがクラウドサービスの登場で激変しました。
スケーラブルなサービスはすごい
半自動的に来たユーザーの分だけリソースが確保されるというのはとても都合の良いものでした。
これはリアル店舗を想像するとわかりやすいです。お客さんが大量に来たらお店が大きくなり、来ないときは小さくなるようなイメージです。コストが浮きますし機会損失も減ります。
AWS:アマゾン
GCP:Google
Azure:マイクロソフト
です。
世界的なシェアで言えばAWS>Azure>GCPという感じですが、日本ではAWS一強のような感じです。
補足:クラウドサービスではなくホスティングサービスにすると3大ではなくなります。もっと上が居るらしい。
AWS:ドキュメントがクソ分かりづらい、しかし使うしかない、実務経験者は多いけど全部使いこなせる人は稀、サポートが有料でめちゃ高い
GCP:ドキュメントは分かりやすいけど流行ってない、実務経験者が少ないから使えない、後発組、AIには強いという噂
Azure:海外で流行ってるらしい
モバイルアプリ開発でも基本的にAWSを使います。個人的にAWSじゃなかった案件はほとんどありませんでした。
AWSでよく使う機能(サービス)
あくまでモバイルアプリ開発でよく話題に上がる機能(サービス)です。
名前が死ぬほど覚えづらい。
EC2(重要)
ホスティングサーボスそのもの。ぶっちゃけこれだけしか使わないことがよくある。laaSとかいうやつ。
Lambda
何かイベントがあった時に、特定の処理を実行する。
例えば画像をアップロードした時に、同時にサムネイル用の画像を作っておくとか。
S3(重要)
ファイルを置く所
RDS
普通なデータベース。
注意したいのは、EC2の中にデータベースを含むことができるので、最初はこいつの存在意義が謎だと思います。私は2回くらい教えてもらいましたが忘れました。
DynamoDB
NoSQLなデータベース
所謂サーバーレスという開発手法で使うやつ。詳細は別の機会に。
CodeDeploy
自動デプロイするやつ。Githubなどと連携して、masterにpushしたらデプロイするみたいな感じで使うらしい(使ったことはない)
IAM(重要)
AWSにあるものへのアクセスを管理する仕組み。鍵。
Cognito(重要)
認証機能。サインアップとかログインの機能を実現できるやつ。
AWSサービス多すぎ問題
これだけあります。1個覚えるのに数日、極めるのには数ヶ月は掛かります。
しかもドキュメントは分かりづらいしググっても情報があまり出てこない。
AWSの学習コスト問題
AWSにありがちですが、1個のAWS機能を使用すると、自ずと他の機能も使わなければならないという状態になり、雪だるま式に学習コストが上がっていくという問題があります。
モバイルアプリ開発者的には「サクッとこの機能を実現したい」のに、気づけばAWSの泥沼にハマっていてどこかで諦めるということが多いです。
AWSの機能は汎用的に作られているため、ピンポイントで機能を実現できるものではなくなります。そのためAWSを極めるか諦めるかという選択になり、最終的に「EC2に全部入れてしまえ(普通のサーバーとして扱う)」ということによくなります(最近はそんなことないか)
Firebaseってなんやねん
FirebaseはGoogleのモバイルプラットフォームです。モバイルに特化しています(Webでも使えます)
これはモバイルアプリ開発でよくある要望をピンポイントで独立した機能として提供しているため、開発者に受け入れられました。
結果「AWS使ってるのに、何かFirebaseというGoogleのサービスも使っている」とか、「cognito使わずにFirebase Authenticationを使う」ということになります。
Firebase Authentication
最初に流行ったのはFirebase Authenticationです。これは「○○でサインイン」というSNSログインの機能を実現するもので、AWSではcognitoのライバルです。ただ非常に使いやすかったため流行りました。cognitoはたぶんweb側で使われていると思います。あとAWSへのアクセスとか(自信薄)
参考:最近の良さげなCognito記事 Cognitoで学ぶ認証・認可 in AWS
Firebaseのよく使う機能
AWSを使っているプロジェクトでも普通に使う機能満載です。
Authentication(重要)
○○でログイン、SNSログインを実現する。
Firestore
NoSQLなデータベース
Storage
ファイル置く所
Crashlytics(重要)
アプリがクラッシュした時にログを送信してくれる
App Distribution(重要)
アプリを配布する
DeployGate、Testflightの仲間
Analytics(重要)
ユーザー分析をする諸々の機能
GoogleAnalyticsの移行先
おわりに
AWSが流行り始めてから10年ちょっと。
Firebaseが流行り始めてから4年程度。
だいぶ早いですね。