アプリをawsEC2で実行し、そのデータベースをherokuのpostgresで実行することは可能ですか?
もしそうなら、私が考慮すべき欠点は何ですか?
herokuはAWSでホストされているので、データベースを実行しているマシンの場所を知る方法はありますか?
データベースの同じリージョンでアプリをホストすると、パフォーマンスを維持するのに役立ちますか?
これについていくつかの意見を聞きたいのですが、私はあまり成功せずにトピックを検索してきました。
2 に答える
Heroku DB が公開されている場所はいつでもtraceroute
... で特定できますが、その場所に留まる保証や、内部で再ルーティングが行われないという保証はありません。Heroku DB インスタンスが AWS アプリケーション インスタンスに対してローカルであることを確認する方法について、Heroku サポートと直接話し合うことをお勧めします。これにより、確実にパフォーマンスが向上します。どのアベイラビリティ ゾーン、または少なくともどのメジャー リージョンで DB が実行されているかを確認できるかどうか、およびデータベース インスタンスを特定のリージョン/ゾーンに「固定」できるかどうかを確認してください。
Amazon の RDS は問題ないように見えますが、PostgreSQL をサポートしていません。しつこく続けてください。
パフォーマンスが特に重要でない場合は、おそらく AWS で DB を実行するでしょう。EBS 最適化インスタンスでプロビジョンド IOPS EBS ボリュームの raid10 を使用すると、まあまあのパフォーマンスが得られます (ただし、非常に大きなコストがかかります)。または、クラッシュセーフでない ssd ベースのインスタンス ストア サーバーを使用し、レプリケーションとバックアップに依存してデータを安全に保つことができます。
Heroku PostgreSQL の経験はありません。通常はもちろん、Amazon EC2 で独自のサービスを実行し、Heroku のマネージド データベース サービスを使用できます。
欠点は
- Heroku が AWS のみを使用していることを保証する人は誰もおらず、おそらくクラウド内の物理的な Heroku サービスの場所を特定できないため、ネットワークの遅延に対処する必要があります。
- 外部トラフィック料金に加えて、同じリージョンの同じアベイラビリティ ゾーンにあるサーバーと通信しない限り、データベース トラフィックに対して支払う必要があります。
私の提案(Herokuの長所についての詳細を知らずに)
自分でデータベース サーバーを実行したくない場合は、Amazon RDS をご覧ください。
私は AWS で RDS と EC2 の両方で約 70 のサーバー インスタンスを 1 年以上運用していますが、これ以上簡単に稼働し続ける方法は想像できません。