HEROKUの仕組みから実際にサービスを公開するまでを解説します。
18/10/08 17:22:39 18/10/08 20:34:17
目次
HEROKUとは?
HEROKUはアプリ開発者のためのレンタルサーバーのようなもので、サーバー上にアプリケーションを実行するためのプラットフォームがあらかじめ組み込まれています。レンタルサーバーはスペースを貸し出すだけですが、HEROKUの場合そこに便利なフォームが事前に設置されているので、自分でアプリケーション開発環境を構築する手間が省けます。
もともと家具がある部屋を借りるようなイメージです。ちなみに、HEROKUのようなサービスをPaaS(Platform as a Service)と呼びます。PaaSを導入すれば、サーバー構築、OSインストール、データベース準備、プログラミング言語の実行環境構築、などすべてやらずに済みます。
HEROKUのようなPaaSを導入すれば、後の細かい準備をせずともすぐにアプリ開発に取り組めるのです。このページでは、そんな便利なHEROKUの仕組みやサービス公開までの流れを解説します。
HEROKUの使用方法
HEROKUを使用するにはまず登録する必要がありますが、事前準備はメールアドレスのみで登録可能で、また1つのアプリ分だけであれば無料で使用することが可能です。複数アプリを公開したい場合は有料なので、クレジット番号の登録が必要になります。
登録が完了したら実際に開発し、その後サービス公開します。サービス公開する際には別途ソフトが必要で、それをダウンロード&インストールします。ただしこのダウンロード場所や詳細な手順はHEROKU内に記載されているため、難しい点はまったくないでしょう。
一度公開すれば、次から修正等を加えた際に自動で公開する設定に変更することも可能です。この辺の操作は何かコマンド等が必要なわけではなく、ボタンから自由に設定できます。
HEROKUはもともとアプリ開発者が環境構築等の手間を省いてなるべくアプリ開発に集中できる、という目的で存在するサービスです。なので、最大限アプリ開発者が簡単に利用できる仕様になっています。
HEROKUはDevOpsにも便利
DevOpsとは開発と運用を一体化するという概念で、要するにシステム開発においては開発だけではなく運用も重要で、なおかつ運用と一体になった開発を行うことが重要だ、といったような概念になります。
DevOpsは様々な場面で使用されるため開発チームと運用チームの連携のことをDevOpsと言うこともあれば、開発ツールで運用まで網羅したものをDevOpsと呼ぶこともあります。
そして、HEROKUはまさにDevOpsを体現しているようなツールになります。DevOpsはどちらかというと開発者に対して警鐘を鳴らす意味合いが強く、開発にだけこだわるのではなく後々の運用面を考えるように注意喚起する意味合いもある概念です。
しかし、HEROKUがあれば開発環境が自動で整うことはもちろん、サービス公開や後の運用まで網羅的に管理してくれます。つまり、HEROKUを使って開発すれば勝手にDevOpsになります。
DevOpsの概念はHEROKUのような仕組みが誕生する以前からありましたが、ツールのおかげで勝手にDevOpsが実現されます。運用や公開後のことを一切考えなくて良いわけではありませんが、開発者は開発に集中できるようになりました。
HEROKUの便利機能
HEROKUはエンジニアが最大限開発に特化できるようアプリ開発をトータルでサポートしていますが、さらに便利な機能によってインフラを意識する必要がなくなります。具体的には以下のような機能があります。
HEROKU Buttons
HEROKU Buttonsは、パッケージを自動でデプロイする機能です。詳細を指定することが可能で、ボタンを押せばその通りに勝手にデプロイされます。
Librato
Libratoはパフォーマンス解析するためのツールです。HEROKU内でダッシュボードのように表示され、現状の環境で非効率な部分がないか確認できます。
HEROKUの構成要素
HEROKUには以下のような構成要素があります。
- Application
- Slug
- Dyno
- Buildpacks
Application
ApplicationはHEROKU上でプログラムが動くためのソースコードや設定ファイルなど一式で、HEROKUにおいてもっとも重要なものになります。エンジニアが新しくソースを更新すると、Applicationの中身が更新されていくイメージです。設定ファイルについても同様です。
Slug
SlugはApplicationにあるソースコードをビルドしてできた実行ファイルや、ライブラリ、実行環境などが置かれた場所です。そのためApplicationのようにエンジニアが直接操作することは少ないですが、Applicationと連動しています。
エンジニアがApplicationに対して操作を加えた結果、Slugの中身も一緒に変わっていきます。
Dyno
Dynoはアプリケーションを実行する場所です。Applicationに入っているソースコードをビルドするとそれがSlugに格納され、Slugの中にあるファイルを実行するとDynoで実行される仕組みになっています。
Dynoの最大容量は限度があり、無料の範囲内だと大規模システムには対応していません。そのため、規模の大きいアプリケーションを実行するためには有料会員になる必要があります。
Buildpacks
Buildpacksは、ApplicationからSlugに実行ファイルを送る際の方法を定義したスクリプトになります。デフォルトでメジャーな言語には対応していますが、Buildpacks内に独自にスクリプトを追加することで、標準サポートの対象外であるプログラミング言語やフレームワークを実行することも可能です。
PaaSの発展でインフラが不要に
HEROKUの場合だと、たとえばサーバーがアメリカとヨーロッパにあります。日本のエンジニアがHEROKUでアプリケーション開発を行った場合、HEROKUの中身はアメリカかヨーロッパにあるということです。
ひと昔前ならその際にセキュリティや通信速度、サーバーのデータが消えるリスクなどがありましたが、現在はセキュリティも強固、通信速度も速い、リスクマネジメントも徹底されているためデータ消失のリスクは極めて低い、といった状況になっています。
つまり、HEROKUのようなサービスを利用すればゼロからサーバー構築する必要がなくなります。クライアント端末からサーバーの設定を行い、その端末だけですべての作り込むことが可能になっています。
まとめ
Webアプリではなく汎用機や独自のクローズシステムだとHEROKUのようなサービスを利用して開発することができませんが、現状Webシステムの方が数が圧倒的に多いです。現時点でもサーバー構築が不要になってきていますが、今後サービスが充実すれば、ますますインフラの接地は不要になり、管理も簡単になります。
インフラエンジニアにとっては死活問題ですが、アプリケーションエンジニアにとってはサーバー周りに苦戦する手間がなくなるので、かなり便利な時代になりました。HEROKUはPaaSのなかでも有名かつ人気のサービスで、Web開発に携わったことのあるエンジニアならだいたい利用したことのあるものです。
まだHEROKUを利用したことがないという方は、個人で無料で利用することができるので、アプリ開発がてら試してみると良いかと思います。
人気記事