進行状況の追跡を始めよう
Trailhead のホーム
Trailhead のホーム

Heroku の中身を覗いてみる

学習の目的

この単元を完了すると、次のことができるようになります。

  • dyno とは何かを説明する。
  • 言語、ビルドパック、およびスラッグを区別する。
  • アドオンがどれだけ有用か説明し、Heroku Elements Marketplace からプロビジョニングできるアドオンを 1 つ挙げる。
  • Heroku CLI コマンドを指定する。

内部の Heroku

ここまでは、Heroku の概要と使用する状況について説明してきました。また、最初の Heroku アプリケーションのリリースについて説明してきました。Heroku とはいったいなのでしょうか? 内部に何があるのでしょうか? では確認しましょう。

Heroku は、カスタムアプリケーションのリリースと稼働をできるだけ簡単にするツールセットが中心です。これらのツールを理解するには、ツールについてもう少し詳しく知る必要があります。この単元は、Heroku を構成する要素を理解するのに役立ちます。

dyno

アプリケーションのコードは、Heroku プラットフォームの dyno と呼ばれる構造の内部で実行されます。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 のアドオンページを参照してください。