Heroku の中身を覗いてみる
学習の目的
この単元を完了すると、次のことができるようになります。
- dyno とは何かを説明する。
- 言語、ビルドパック、およびスラッグを区別する。
- アドオンがどれだけ有用か説明し、Heroku Elements Marketplace からプロビジョニングできるアドオンを 1 つ挙げる。
- Heroku CLI コマンドを指定する。
内部の Heroku
ここまでは、Heroku の概要と使用する状況について説明してきました。さまざまなリリース方法についても学習しました。Heroku とはいったい何なのでしょうか? 内部に何があるのでしょうか? 見てみましょう!
dyno
アプリケーションのコードは、Heroku プラットフォームの dyno と呼ばれる構造の内部で実行されます。Heroku の dyno は、Linux オペレーティングシステムを元にした単なる管理ランタイムコンテナです。これらのコンテナによって、カスタムアプリケーションコードを実行できるプロセスが実行されます。
ランタイムコンテナとは
用語におじけづかないでください。コンテナリゼーションは、実行中のプロセスを相互に分離したままにする単なるメカニズムです。コンテナによって冷蔵庫内のイチゴジャムとマスタードが混ざることがなく、朝食のトーストが常においしくなると考えましょう。ランタイムコンテナは、コードと設定を他のものから分離した状態にすることを除けば同じものです。そのように、アプリケーションはちょうどあるべき状態で常に機能します。
また、アプリケーションの同一のインスタンスを実行し、クライアント要求を受け入れて応答を処理する 2 つ以上の dyno の間で分離することもコンテナでできます。ある要求が Dyno A で処理され、別の要求が Dyno B で処理された場合も、ユーザーには区別がつきません。表示されるのは、迅速に応答するアプリケーションのみです。アプリケーションをスケールアップしていくつかの (または数十や数百もの) dyno で実行すると、いっそう安心です。1 つの dyno のアプリケーションコードに何か問題が発生しても、他のすべての dyno は顧客の処理を続行できます。
スラッグとビルドパック
スラッグは、dyno マネージャーに配信するために最適化されたアプリケーションを圧縮して事前にパッケージ化したコピーです。コードを Heroku に転送すると、コードがスラッグコンパイラーに受信され、スラッグコンパイラーによってスラッグに変換されます。スラッグコンパイラーの中心にあるのは、異なる言語を処理するビルドパックという名前のスクリプトのコレクションです。Ruby、Python、Java、Clojure、Node.js、Scala、Go および PHP で記述されたすべてのアプリケーションは、ビルドパックを使用して実装されコンパイルされます。アプリケーションを拡張すると、スラッグがダウンロードされ、実行のために dyno に拡張されます。
カスタムビルドパックを使用して、Heroku で公式にサポートされているビルドパックが対応しない言語またはフレームワークをサポートできます。
アプリケーションのトラフィックコントロール: Heroku ルーター
Heroku ルーターは、こうした複数の dyno のすべてのマジックにとって重要です。新しい Web dyno は、起動されるたびにルーターに登録され、Web dyno で実行中のアプリケーションが通知されます。dyno が登録されると、Heroku ルーターは、アプリケーションに使用できるすべての dyno (アプリケーションの「dyno 構成」) にわたる受信要求の配信を開始します。dyno 構成は、アプリケーションを実行する dyno のサイズと数 (たとえば、7 つの Performance-L dyno の構成) の呼び名です。
当社が考えているように Heroku ルーターが魅力的であることがわかりますか? Heroku ルーターのしくみと想定できる内容についての詳細は、ルーティングに関する Heroku 開発センターのドキュメントを参照してください。
アドオン
アドオンは、Heroku プラットフォームの必要不可欠な別の要素です。これらの要素により、基盤となるソフトウェアまたはインフラストラクチャを管理せずに、複雑な機能をアプリケーションに追加する機能が得られます。
有用なアドオンの優れた例として、Heroku Postgres データベースがあります。Postgres はエンタープライズクラスのデータベースであり、高速で信頼性が高く豊富な機能を備えています。特に、Postgres データベースをアドオンとしてプロビジョニングすると、基盤となるインフラストラクチャが Heroku によって完全に管理されます。
複数の Heroku 管理アドオンに加えて、サードパーティによって数十ものアドオン (データストア、メールサーバー、監視ツール、および想像できる他のほとんどすべての機能) が提供されます。開発者は、バックエンド機能 (メールやテキストの送信機能など) をたった 1 回のクリックでプラグインできます。多くのアドオンには、好きなだけ試して使用できる無料のオプションがあります。
Heroku Enterprise アプリケーションに組み込むことができるすべてのアドオンを調べるには、Heroku Elements Marketplace のアドオンページを参照してください。