AWSが存在するときにHerokuを使用するのはなぜですか?HerokuとAWSの違いは何ですか? によると、複数のHeroku Web Dynosが単一のAmazon EC2 CPUで実行されているようです。
1つのCPUでいくつのDynosが実行されますか?仕様は何ですか?
1つのCPUで実行されている多数のDynosが他のDynosに影響しますか?
Herokuアプリケーションをデプロイするときは、1つ以上のslug
を使用して、buildpacks
という仮想マシンイメージを構築します。このslug
から仮想マシンインスタンスを起動すると、dyno
と呼ばれます。
各dyno
は、アプリケーション仮想マシン内で単一のプロセスを実行します。 Herokuはdynoのプロビジョニング方法を公式に説明していませんが、事例分析では、多くのdynoが単一のAmazon XL
EC2インスタンスで実行され、すべてのdynoでディスク、CPU、メモリを共有していることが示されています。リソースを共有するときは、明らかに「騒々しい隣人」がいますが、直接のデータや統計は提供されません。私は、これが実際に起こっているという逸話的な体験を共有することしかできません。
各dynoはEC2ホスティングマシン内で分離されていますが、基盤となるリソースを共有しています。これは、docker
およびその他のアプリケーションコンテナの動作に似ています。
Dynosは、着信WebトラフィックをアプリケーションdynoにマップするインテリジェントロードバランサーであるHeroku Routing Meshに登録されています。各dynoには、ルーティングメッシュに登録されているTCPポートが割り当てられています。
Herokuは、Amazon EC2の上位のサービスです。それらは、生のEC2ホスティングに対して高額なコストで導入、プロビジョニング、監視、可用性、自動スケーリングを実装します。独自のEC2インスタンスを実行できますが、それらのサービスを自分で実装する必要があります。
免責事項:私はHerokuの従業員ではなく、大規模でトラフィックの多いユーザー以外のHerokuについての特別な知識はありませんRailsアプリ。
UPDATE:Herokuは今朝、専用EC2でホストされているPX
サイズのdynoをリリースしましたc1.xlarge
インスタンス。これは、上記で触れた、騒々しい隣人とリソース競合の問題をすべて解決します。かなりの値札で。詳細はこちら: https://blog.heroku.com/archives/2014/2/3/heroku-xl
Herokuルーティングメッシュはそれほどインテリジェントではなく、リクエストをDYNO全体にランダムに分散することは言うまでもありません。多数のdynoがある場合、アルゴリズムはオプションで、選択を行うルーターと同じAWSアベイラビリティーゾーンに常駐するdynoに選択をバイアスできます。