スマホアプリの開発をしていく中で、自作のAPIサーバを作成したいと思いました。
しかし、実際に環境構築していくのは面倒ということで、「Heroku」というサービスについて調べてみました!
Herokuとは
アプリケーションを実行するための環境を提供しているPaaS(Platform as a Service)のこと。
一般的に、アプリケーションを実行するために必要なものがいくつかあります。
データを登録するデータベース、画面の操作を受け取って処理するサーバなどがあります。
最近ではAWSなどでクラウドで提供されているサーバが普及しています。
しかし、環境構築の学習コストなどを考えると手間や時間がかかります。
それを解決することができます。
PaaSとは
PaaS(Platform as a Service)とは、サーバやアプリを実行する環境を提供するサービスのことです。
開発環境を提供しているので、アプリケーション開発に注力できるのが大きな利点です。
詳細は下記のページをご覧ください。
クラウドについて細かく解説しています!
Herokuのメリット2つ
主に2つあります。
他にもありますが、ざっくり理解するということで今回は2つ挙げます。
- 拡張機能(プラグイン)が豊富
- スケールアウトが簡単
拡張機能(プラグイン)が豊富
アプリケーション開発をしていく中で、追加機能が欲しい時があります。
あ〜、メール認証の機能盛り込みたいな。
でもメールサーバの構築面倒だな……。
こんな時でも、Herokuが提供する拡張機能を利用するだけで環境構築ができます。
スケールアウトが簡単
アプリケーションを公開し、利用者が増えてくるとサーバの性能を上げなければなりません。
その理由はアクセス量向上に伴い、サーバ負荷が増幅するためです。
オンプレミスなどでサーバ構築した場合は、システムの処理能力を高める「スケールアウト」は手間と時間がかかります。
しかし、Herokuではコマンドやダッシュボード上で簡単にスケールアウトできます。
Herokuのデメリット2つ
主に2つあります。
- 東京リージョンがない
- カスタマイズができない
東京リージョンがない
リージョンというのは、実体のサーバが置かれている設備のことです。
東京のリージョンがなく、海外のリージョンしか対応していないということは、物理的に通信時間が増えます。
通信時間が増えるということは、画面に表示されるまでの時間が増えるので、ユーザの離脱原因にもなります。
カスタマイズができない
PaaSゆえのデメリットですが、使用されるストレージやCPUなどが選択できない点です。
メリットの表裏一体といったところですが、細かい設定など面倒だからしたくないという人は、むしろこれはデメリットにならないと思います。
現在サポートしている言語は以下の通りで、ほぼ網羅できていると思います。
- Ruby
- Python
- Java
- PHP
- Go
- Node.js
- Scala
- Clojure
まとめ
長所短所をまとめてみましたが、個人的にはメリットとなる部分の方が大きいと感じました。
簡単に環境構築できるのは、アプリケーション開発に注力できるので良いですね。
サービス開発でアプリケーション開発にリソースを割きたい場合は、Herokuの検討もしてみてはいかがでしょうか?