Heroku ランタイム

Heroku ランタイムは、Heroku プラットフォームでアプリの実行と管理を担当するコンポーネントです。コンテナ(dyno)のプロビジョニングとオーケストレーション、dyno のライフサイクルの管理と監視、適切なネットワーク設定、HTTP ルーティング、ログ収集といった役割を担っています。

スマートコンテナ

Heroku プラットフォームは dyno と呼ばれるスマートコンテナの中でアプリを実行します。dyno は Dyno Manager と緊密に連携し、セキュリティ、隔離、安定性など、さまざまなメリットをもたらします。

コンテナのオーケストレーション

Heroku ランタイムには、アプリの実行に使用する dyno の調整と管理に役立つ Dyno Manager という機能が用意されています。この Dyno Manager は、dyno に障害が発生した場合にその dyno を自動で再起動するほか、再デプロイ後には全コンポーネントをリセットおよび更新する役割を担っています。また、基盤となるハードウェアで障害が発生した場合には、dyno をすべて新しい場所に移動させる機能も果たします。

ログ収集

Heroku ランタイムはアプリ、システムコンポーネント、およびバックエンドサービスの出力のログを収集し、Heroku の Logplex を使用して 1 つのチャネルに送信します。Heroku では、アプリログ、システムログ、API ログと呼ばれる 3 種類のログが収集されます。

HTTP ルーティング

HTTP リクエストは一連のルーターによりアプリのホスト名から web dyno へ自動的にルーティングされます。各ルーターではランダム選択アルゴリズムを採用しているため、複数の web dyno の間でトラフィックが分散されます。

リリース管理

コードのデプロイのたびに新しいリリースが作成され、Heroku に保存されます。デプロイしたリリースに問題がある場合は、リリースの履歴を確認して以前のリリースに戻すこともできます。

設定管理

設定は環境によって異なるものです。Heroku では環境変数を使用して各環境の設定を記録することができます。設定変数が更新されるたびに新しいリリースが作成されるので、以前のリリースにロールバックして設定変数を復元することもできます。

SSL と証明書管理

有料 dyno では Heroku SSL と自動証明書管理機能を追加料金なしで利用できます。アプリのカスタムドメインでは、Heroku ルーターによって SSL が処理されます。また、自動証明書管理機能を使用すると、カスタムドメインの TLS 証明書が自動的に生成されます。

スケールアウトとスケールアップ

Standard dyno または Performance dyno でアプリを実行している場合には、Heroku ダッシュボードや CLI から dyno の数を増やすこと(スケールアウト)も、CPU とメモリの容量が大きいタイプの dyno に切り替えること(スケールアップ)もできます。

Docker でデプロイ、Heorku で実行

Container Registry にあらかじめビルドされた Docker image から、あるいは Dockerfile から作成した Docker image からデプロイの方法を選択することができます。Heroku のコンテナオーケストレーション、高い生産性の開発者体験、管理されたインフラストラクチャを活用しましょう。

価値とメリット

アプリを迅速にロールバック

リリース/設定管理機能では、デプロイと設定変数の両方がプラットフォーム内にコピーされるため、特定のリリースに問題があった場合や、以前の設定に戻す必要がある場合に、簡単にロールバックすることができます。

トラフィック管理が容易

Heroku ではアプリのスケールアウトもスケールアップも簡単に行えるので、トラフィックの急増にすばやく簡単に対処できます。たとえば、 heroku ps:scale web=5 というコマンドを入力するだけでアプリの実行に使用するスマートコンテナを 5 つ追加することができます。また、自動スケールを利用すると、トラフィックの急増に常に目を光らせておく必要がなくなります。

デフォルトで暗号化

有料 dyno では Heroku SSL と自動証明書管理機能を追加料金なしで利用できるため、コードの開発だけに集中することができ、証明書の更新日を気にする必要がなくなります。

コンテナに堅牢性を実現

Heroku ランタイムは失敗したコマンドをキャプチャして障害が発生しているハードウェアをすばやく特定することにより、アプリの稼働を維持します。dyno の起動に使用されているコマンドが終了した場合や、dyno を実行しているハードウェアで障害が発生した場合は、dyno を再起動したり、新しい場所に dyno を移動して迅速にリカバリを実行したりします。これらの動作はすべてバックグラウンドで行われるため、アプリの動作には影響しません。

統合ログ

Heroku ランタイムではログが一連のイベントとして扱われ、さまざまなソース(ルーターノード、dyno、アドオンなど)のログが 1 つにまとめられるため、さまざまな状況を簡単に把握でき、検索やアラートの設定を容易に行えます。

セキュリティパッチを自動で適用

Heroku では、環境を常に最新の状態に保つために、基本となるオペレーティングシステムやライブラリに最新のセキュリティパッチが自動的に適用されます。これらのタスクは、バックグラウンドで行われる再起動を除き、稼働中の dyno に影響を与えることなく自動的に処理されます。

アプリを相互に隔離

Heroku プラットフォームではアプリが相互に隔離された環境内で実行され、システム内の他のアプリや領域には影響を与えないため、セキュリティや安定性の問題を心配する必要がありません。これらの環境ではプロセス、メモリ、ファイルシステムが相互に隔離されているだけでなく、ホストベースのファイアウォールによってアプリによるローカルネットワーク接続が防止されます。

開発環境と本番環境が一致

Container Registry では、ローカルでの開発に Docker を使用でき、完成したコードを Heroku にプッシュすることができます。そのため、ローカルマシンで稼働するコードが他の開発者のマシンでもテスト環境でも本番環境でも確実に動作するようになります。

スタックの豊富な選択肢

Container Registry では、お好きなベース OS を使用してアプリを実行できます。また、任意の依存関係ファイルをインストールできるので、アプリを実行するためのスタックを完全にコントロールできます。さらに、Heroku でアプリを実行することにより、インフラの管理、セキュリティおよび SRE チーム、コンテナオーケストレーション、ルーティング、業界をリードするアドオンエコシステムなど、さまざまなメリットがもたらされます。

「私たちのコアプロダクトの機能は、Heroku が無ければ、もっと複雑で、もしかしたら存在すらしなかったかもしれません。私たち版の Heroku を AWS 上に開発しようとしたら何年もかかっていたことでしょう。」

RYAN TOWNSEND
SHIFT Commerce 社 CTO
SHIFT Commerce 様事例→

「Heroku の魅力のひとつはインフラストラクチャの詳細を気にしなくてよいことです。DevOps のために人を雇わなくてよいのは、私たちにとって大切なことです。」

Mason Hale
Team Topia 社創業者兼 CEO
SwimTopia 様事例→

「私たちはデータサイエンスのプロフェッショナルであって、DevOps は本業ではありません。私たち自身のインフラストラクチャを構築し運用するのは、重い任務で非常に気の散ることです。コストの分析をすると、私たちのアプリを Heroku で稼動させる方が安いのです。」

Isaac Slavitt
DrivenData 社共同創業者兼データサイエンティスト
DrivenData 様事例→

「私は、パッチのことも、追加のストレージのことも、脆弱性のことも心配する必要はありません。Heroku のプラットフォームはマネージドで Heroku チームにサポートされています。」

LEELA PARVATHANENI
Align Technology 社顧客用アプリディレクター
Align Technology 様事例→
オンラインセミナー

Creating Secure Web Apps: What Every Developer Needs to Know About HTTPS Today

インターネットでの安全なコミュニケーションはセキュリティを取り扱うすべての技術者にとって昨今最も重要な課題の 1 つとなっていますが、多くのソフトウェア開発チームはこの問題を後回しにしています。最近では、Google Chrome が HTTPS を使用していないサイトを安全でないと判断するようになったり、Apple が iOS アプリの API で通信を行う際に HTTPS の使用を義務付けたりするなど、Web 上でのセキュリティに関するトップニュースがほぼ毎週のように報道されています。このセミナーでは、Let’s Encrypt と Internet Security Research Group の代表を務める Josh Aas 氏と Heroku のデベロッパーアドボケイトを務める Chris Castle が壇上に立ち、HTTPS に関して現代の開発者であれば誰もが知っておくべきことについて語ります。