Vapor cloudとは?
Vapor cloudはVaporチームが提供するVaporホスティングサービス。
Vapor = MacOSとUbuntuで動作するSwiftのWebフレームワーク + Vaporが提供するすべてのパッケージ
Vaporの目標は、Web開発をより速く、より安全、より簡単にすること。 WebフレームワークとしてのVaporはこの目標を達成しているが、ホスティングはまた難しい部分である。そのために、開発されたのはVapor Cloud。
目標は、ホスティングを簡単にすること。
Vapor Toolbox CLIを使えるため、1つのコマンド(vapor cloud deploy
)だけで、アプリケーションを☁️にデプロイできる。
Versions
β版リリース 2017年7月
Vapor Cloud 1.0リリース 2017年10月
Features
- ウェブ、API、またはリアルタイムアプリをワンクリックでデプロイ
- MySQL、PostgreSQL、MongoDB&AWS Auroraでデータを保存可能
- 数秒でサーバー数やゾーン設定を変更
- リクエスト数、レスポンス時間、CPU、メモリ使用量などで、アプリケーションのパフォーマンスを把握
- 複数人(組織、チーム)でのプロジェクト開発で使用可
- Redisキャッシュをワンクリックで追加して、アプリケーションを高速化
- 自動設定されたAWS S3にファイルを保存
- ゼロダウンタイム
- CDN
Pricing
無料枠から、Hobby($6), Small($30), Medium($65)、小刻みで選択しやすそう。
無料枠 20,000リクエスト/1ヶ月✨
詳細はこちら
☣️支払い情報(クレジットカードなど)入力した場合、20,000まで使える。
支払い情報未入力の場合、2,000リクエスト/1ヶ月
やってみよう
Vapor projectがある人は、projectのところでvapor cloud deploy
を実行して、
次々から出て来る質問に答えて行くだけ!👏👏👏
Step By Step
1. Vaporをインストール(ここのStep by stepは省略)
2. vapor cloud --help
でVapor Toolboxが正しくインストールされているか確認
3. vapor cloud create org
で組織(Organization)作成
自分だけのテストなので、適当にMeと名付け。
こんな感じで聞かれることに答えて行くだけで完了する。
同じように、```vapor cloud create proj```コマンドで質問に答える感じでprojectも作成できる。
プロジェクトに対して、一緒に開発する人を招待でき、ユーザごとに権限を設定可能。チーム単位でプロジェクトに招待することもできる。
プロジェクト内で、アプリケーション単位でに異なる権限を割り当てることはできまない。ただし、作成可能なプロジェクト数に制限がない。(大きい組織だと、管理するのが面倒になりそう🤔)
組織とプロジェクト設定はwebでもできる!
4. デプロイ
デプロイするための、事前準備はprojectをGitにあげること。なので、Gitに上がっているSwiftプロジェクトを用意しよう。
今回は公式のHello worldで適当に。ほとんどvapor new firstVaporCloud
だけ。
(かわいい😍、ターミナルがカラフルでみやすいのがvaporの良さの一つ)
書いてある通り、cd firstVaporCloud
で、ディレクトリに入る。
☣️一応デプロイ前に、コピーして来たprojectをbuild, runして、動作確認として、localhost:8080にアクセスし、"It works!"と表示されることを確認。
そして、vapor cloud deploy
でデプロイ!!!
各アプリケーションは、ホスティング、データベース、キャッシュなど、複数のサービスを持てるので、それぞれの設定に関する質問が↓のように次々から出て来る。
Application
Would you like to create an application now?/ アプリケーションを作成しますか?
y/n? y
と答え、アプリケーション名を聞かれるので、今回はfirstAppとした。
次に、slugとよくわからないものについて聞かれる。
Slugとは🐌🐌🐌🧐
例えば、slugにkaki
を使用している場合、アプリケーションは https://kaki.vapor.cloud
からアクセスできる。
develop
のような本番環境以外の環境を作成する場合は、 - 接尾辞を使用して別々の環境にアクセスできる。たとえば、https://kaki-develop.vapor.cloud
(牡蠣がおいしい季節ですね😋)
Environment
環境の場合、branch名をいれることが推奨されているので、ブランチ名と同じくmaster。
Database
データベースも接続可。今回はnと答え、スキップ。
追加したい場合、vapor cloud create db
Replicas
Replica選択の質問では、
1: Free
2: Hobby
...
のように番号と値段表でみた単語がセットで出て来る。今回は無料枠利用したいので1
と入力。
Vapor Cloudでは複数のレプリカにアプリケーションをデプロイすることで、高可用性と高スループットを実現できる。ただし、フリーサイズのレプリカでは、レプリカ数は0または1に制限されている。レプリカ数を0
に設定するとアプリケーションはオフラインになり、1
に設定するとオンラインになる。
Branch
Gitブランチ名。
Build
1: Incremental
ビルドを単純に実行。依存関係は更新されない。この中で一番速い。
2: Update
ビルドを実行する前にパッケージアップデートを実行。このオプションはIncrementalよりわずかに遅くなる。Package.swiftファイルを変更した場合は必要。
3: Clean
すべてのビルドメタデータ(.buildフォルダなど)を削除してから、ビルドを実行。このオプションは、UpdateやIncrementalよりもかなり長い時間がかかるが、ビルドの問題を修正することがある。
今回は1を選択。
5. これで、一通り設定完了し、数分待つと↓
6. https://firstapp-master.vapor.cloud/
にアクセスすると↓
🎉🎉🎉
## 最後に
Vapor cloudについて日本語の検索結果が少なかったので、少し事細かく説明するようにしてみました。
- Vaporと相性いい
- ボタン押して操作すると言うよりは、コマンドを打って、既に設定のものは反映され、未設定のものについて質問をしてくるようなインタラクティブな感じが使いやすい
- Free枠が月2万リクエストまでということで始めやすい
- 複数のreplicaを一つのアプリケーションに設定可能 x replicaの種類が多い(5つ) = 自由度が高い