8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VaporAdvent Calendar 2018

Day 10

Vapor Cloud紹介☁️☁️☁️

Last updated at Posted at 2018-12-10

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を実行して、
次々から出て来る質問に答えて行くだけ!👏👏👏
Screen Shot 2018-12-10 at 18.08.11.png

Step By Step

1. Vaporをインストール(ここのStep by stepは省略)
2. vapor cloud --help でVapor Toolboxが正しくインストールされているか確認
Screen Shot 2018-12-10 at 10.14.58.png
3. vapor cloud create orgで組織(Organization)作成 
Screen Shot 2018-12-10 at 18.58.40.png 自分だけのテストなので、適当にMeと名付け。 Screen Shot 2018-12-10 at 18.57.42.png こんな感じで聞かれることに答えて行くだけで完了する。 同じように、```vapor cloud create proj```コマンドで質問に答える感じでprojectも作成できる。 プロジェクトに対して、一緒に開発する人を招待でき、ユーザごとに権限を設定可能。チーム単位でプロジェクトに招待することもできる。

プロジェクト内で、アプリケーション単位でに異なる権限を割り当てることはできまない。ただし、作成可能なプロジェクト数に制限がない。(大きい組織だと、管理するのが面倒になりそう🤔)

組織とプロジェクト設定はwebでもできる!
スクリーンショット 2018-12-10 23.16.24.png

4. デプロイ

デプロイするための、事前準備はprojectをGitにあげること。なので、Gitに上がっているSwiftプロジェクトを用意しよう。
今回は公式のHello worldで適当に。ほとんどvapor new firstVaporCloudだけ。
Screen Shot 2018-12-10 at 10.33.26.png
(かわいい😍、ターミナルがカラフルでみやすいのがvaporの良さの一つ)
書いてある通り、cd firstVaporCloudで、ディレクトリに入る。

☣️一応デプロイ前に、コピーして来たprojectをbuild, runして、動作確認として、localhost:8080にアクセスし、"It works!"と表示されることを確認。

そして、vapor cloud deployでデプロイ!!!
各アプリケーションは、ホスティング、データベース、キャッシュなど、複数のサービスを持てるので、それぞれの設定に関する質問が↓のように次々から出て来る。
スクリーンショット 2018-12-11 1.52.52.png
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. これで、一通り設定完了し、数分待つと↓
Screen Shot 2018-12-10 at 18.08.11.png
6. https://firstapp-master.vapor.cloud/ にアクセスすると↓
Screen Shot 2018-12-10 at 18.09.07.png 🎉🎉🎉 ## 最後に

Vapor cloudについて日本語の検索結果が少なかったので、少し事細かく説明するようにしてみました。

  • Vaporと相性いい
  • ボタン押して操作すると言うよりは、コマンドを打って、既に設定のものは反映され、未設定のものについて質問をしてくるようなインタラクティブな感じが使いやすい
  • Free枠が月2万リクエストまでということで始めやすい
  • 複数のreplicaを一つのアプリケーションに設定可能 x replicaの種類が多い(5つ) = 自由度が高い
8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?