知人と「これどっち使うべきなん?」という話ですこし盛り上がったので、自分の中での判断基準を整理することも兼ねてまとめました。
「こういうケースならこちらが向いているだろう」のように紹介していきますので、2択に迫られた時の参考になればと思います。
Amplify Console / Netlifyとは?
簡単に紹介しますと、どちらもwebアプリケーションをホストするためのサービスです。
Amplify ConsoleはAWSが提供しており、NetlifyはNetlifyが提供しています。
どちらもビルド環境やドメイン・SSL証明書管理、ロールバックといったwebアプリケーションを公開・運用するにあたって欲しくなる機能が多数提供されており、自前でwebサーバーを立てる必要なくアプリを公開できるようになります。
また、どちらのサービスも無料プラン(Netlify)や無料利用枠(Ampify Console)が用意されており、趣味で作ったアプリや会社でR&D的にスモールスタートではじめたいときなどに重宝します。
Firebase or XXXXは?
今回の比較はAWS Amplify ConsoleとNetlifyの比較で、それ以外のサービスについては紹介しません。
なぜならこの2つ以外をプロダクションで利用したことがないため、憶測や触ってみた程度の経験で判断基準を書くことは非常に危ういからです。
これら以外のサービスについても、興味がないわけではなく、使ってみたい・触ってみたいものとしてメモ帳に積み上げている状態ですので、「このケースならこっちだろ!!」というものがあればぜひご自身のブログにて紹介して頂けると幸いです。
結局、どういうときにどちらを使うべきか?
いろいろとメリット・デメリットなどを紹介してきました。ここからは実際に提案する際、自分が判断基準にするだろうなという点をまとめます。
Amplify Consoleが向いているケース1:大勢のメンバーが参加するプロジェクト
Amplify ConsoleにあってNetlifyに無い最大の機能はIAMでしょう。つまり関わる人数が増えれば増えるほどAmplify Consoleが有利になると考えています。
IAMはAWSが提供するユーザーやユーザーのアクセス権を管理するサービスです。ユーザーの作成や追加だけでなく、ユーザーごとにAPIレベルで細かくアクセス権限を設定することができるAWSを利用する上で欠かせないサービスの1つです。
そしてなによりAWS IAMは無料で使えます。Netlifyの場合は1ユーザーあたり月額15ドルの課金が発生しますが、AWSの場合はどれだけ使っても無料です。
つまりクライアント・プロジェクトマネージャー・開発リーダー・エンジニア・etc..のように複数のユーザーが関わるプロジェクトで、コンソールにアクセスできる人と操作内容を細かく制御したいというケースにはAWS IAMが利用できるAmplify Consoleが有利です。
ただしAWS IAMは設定を間違えて不必要なサービスへのアクセスを許可してしまったり、パスワードや鍵情報を漏らしてしまったりした際の被害はとても大きいというリスクがあります。そのためAWSに関する知識があるメンバーがいない場合にはすこし慎重になるべきかもしれません。
Netlifyが向いているケース1: 少人数チームでの開発
AWS Amplify Consoleは細かくアクセス権限が設定できます。が、細かくアクセス権限を制御しなければ外部のエンジニアが顧客情報満載のDBにアクセスできてしまうなんてことも起きかねません。
細かくアクセス権限を設定する必要もなく、デプロイなどの操作を行う必要のあるユーザーが少人数ですむケースであれば、Netlifyの方が手軽に利用できるでしょう。
もちろんこちらもtokenやパスワードが漏れた場合に被害がでないわけではありませんが、Netlifyが提供しているサービスの範囲内の被害であると考えればAWSでやらかすよりは限られた被害になるでしょう。
Amplify Consoleが向いているケース2: AWSをゴリゴリに使っている
Amplify ConsoleへのアクセスはAWSのマネジメントコンソールから行います。つまりアクセスやユーザーの管理はAWS IAMにて行うことができます。ということはアプリケーションを公開するために新しいサービスのアカウントを作ってログイン情報をパスワード管理アプリなどに記録する必要がなくなるということです。
ベンダーへのロックインになるという懸念ももちろんありますが、1箇所にまとめることで新しいメンバーが加入した時の案内や、退職・配置転換などでのユーザー削除といった作業が煩雑になることもなくなります。
Netlifyが向いているケース2: AWSに詳しくない
ケース1と近いですが、AWSに詳しくないか、詳しくなるつもりがない場合はNetlifyのほうが安全かもしれません。AWSは「細かく設定できる」ためにやること・覚えることがどうしても多くなります。
一方でNetlifyはいわゆる通常のwebサービスとして扱うことができますので、細かいことにあまり気を払わずに使うことができるでしょう。
AWS IAMという文字を見るだけで鳥肌が立つという人は、見栄をはらずにおとなしくNetlifyを使いましょう。
Amplify Consoleが向いているケース3: 複数のテスト環境をデプロイしたい
例えばUIのリニューアルや破壊的変更のテストなど、複数の社内テスト環境を用意したいケースは時折発生します。そんなときにAmplify Consoleはブランチ単位でのデプロイが行えます。
ブランチごとのデプロイだけであればNetlifyでももちろん可能ですが、ブランチ単位でアクセスコントロールが可能という利点がAmplify Consoleにはあります。
例えば開発チームのみ確認できるようにしたいブランチ・社内レビュー用ブランチ・公開ブランチなどの運用ができます。
また、ブランチごとに環境変数を上書きする設定などもAmplify Console上で行なえますので、これもまた魅力でしょう。
Netlifyが向いているケース3: A/Bテスト・prerenderなどの機能を利用したい
私はAmplify Consoleが「AWSの機能を活かしてホスティングするサービス」だと考えています。そのためAWSのサービスを組み合わせて使うことで、様々なアクションを取ることができるように作られています。その反面、「組み合わせて使う」という作業が発生します。
一方でNetlifyは、A/Bテストやprerender、サーバーレスなフォームの設置といった機能が比較的簡単に設定できます。事前知識があまりなくても様々な機能を利用することができるという点はメリットでしょう。
ただし「Netlifyが用意する範囲内では」という但し書きがつき、そこを越えようとすると実はAmplify ConsoleでAWSと格闘したほうが良かったというオチが待っていることもありえます。
Amplify Consoleが向いているケース4: AWS CodeCommitを利用したい
Amplify ConsoleにあってNetlifyにない点の1つがCodeCommitとの連携です。GitHub / GitLab / Bitbucketとの連携はどちらも提供していますが、AWS CodeCommitに対応しているのはAmplify Consoleだけです。
そのため、AWS CodeCommitを利用するケースでは問答無用でAmplify Consoleへデプロイすることになるでしょう。
Netlifyが向いているケース4: お金を払いたくない
Amplify Consoleは無料枠があるサービス、Netlifyは無料で利用できるサービスです。
Amplify Consoleは無料枠をはみ出した際に自動で従量課金がはじまりますが、Netlifyは自分でFreeプランから変更しない限り課金が発生することはありません。
もちろんこれは諸刃の剣で、Amplify Consoleであれば自動でスケールしたはずなのにNetlifyでは転送量の上限に引っかかってしまったということも起こりうるでしょう。
クレジットカードが利用できないケースや、社内事情などで課金はなんとしても発生させたくないというケースではNetlifyのほうが向いているといえます。
なお、NetlifyのFreeプラン転送量上限は月間100GBですが、Amplify Consoleの無料枠は15 GB served per month + $0,15 per GB servedです。ユーザーまわりの課金はNetlifyのほうが嵩みやすいですが、一概にNetlifyが高いというわけではない点には注意する必要があります。
Netlify が向いているケース5: Netlify CMSを使いたい
Amplify ConsoleになくてNetlifyにあるものの1つがこのNetlify CMSです。GitとNetlifyを利用してコンテンツ管理システム(CMS)をNetlify上にデプロイすることができます。
Amplify ConsoleやNetlifyといったいわゆるサーバーレスなホスティング環境では、PHPのようなサーバーサイド言語やMySQLなどのデータベースが利用できません。そのためWordPressのようなCMSをAPIサーバーとして別途用意するか、git push
で入稿するエンジニアに寄せた管理方法を採用するか、それともサーバーレスなシステムを自力で組み上げるかを選ぶ必要がありました。
しかしNetlify CMSであれば、Netlifyにデプロイされたサイト上で記事の管理ができますので、とても簡単にCMSを運用できるようになります。
もちろんサーバーサイド言語およびSQLが利用できないことで、通常のCMSならできることができないという場合もあるでしょう。機能と管理コスト、どちらをとるか選択できるようになったということはとても大きいと思います。
身も蓋もない結論: AWSを使うか使わないか
ここまでいろいろケースを想定していきましたが、実際に知り合いなどに聞かれたときは十中八九「AWS使わないならNetlifyでいいよ」と答えています。
AWSを使うことで得られる恩恵をAmplify Consoleで更に増やすか、NetlifyでFirebaseやAuth0 / StripeなどのFaaSの組み合わせを選ぶか、という選び方もよい方法だと思います。
余談:AWSを使うなら、Amplify SDKは使っておこう
ここまで紹介したのはAmplify Consoleでしたが、AWS AmplifyにはAmplify SDKというものも存在します。
これはCognito User Poolsでユーザー管理し、S3に画像を配置してAPI Gateway + LambdaやAppSyncでサーバーと接続するといったAWSでwebアプリケーションを構築する際に利用するサービスとのやり取りを便利にするSDKです。
Cognitoを利用するだけでも、従来のSDKよりもAmplify SDKのほうがPromiseが使えるというメリットがありますので、NetlifyにAmplify SDKを利用したアプリをデプロイするという使い方もできるでしょう。