あなたはこのプロセスに逆行していると思います。開始時にアプリケーションに使用するテクノロジーの概要を把握しておくと便利ですが、実際に行う必要があるのは、ニーズと使用目的に合わせてアプリケーションを設計し、それに合わせて適切なテクノロジーを選択することです。そのため、目的に合った技術を選択する必要があるときに、技術の目的を説明するように誰かに依頼することはあまり意味がありません。
「ソーシャルネットワーキングサイト」は可能なアプリケーションの巨大なドメインを説明しているため、これらのテクノロジーがアプリケーションにどれほど適切であるかについてはコメントできません。誰かがあなたがそれをどのようにやりたいかについてあなたにアドバイスを与えることができる前に、あなたはあなたが何をしたいのかについての非常に具体的な考えを必要とします。
一般に、Herokuはあらゆる種類のWebアプリケーションに最適なプラットフォームですが、これらの選択の一部はHerokuには意味がありません。たとえば、この場合、Djangoに接続されたWebサーバーとしてApacheを使用することは意味がありません。Herokuの新しいテクノロジースタックであるCedar(およびDjangoをサポートする唯一のHerokuスタック)は、gunicornなどではるかにうまく機能します。Herokuビルドパックをいじってセットアップした場合、Apache plus、たとえばmod_wsgiが機能しなかったという技術的な理由はありませんが、ここでは正しい選択ではありません。
Herokuには、Cedarを使用してDjangoをセットアップする方法に関する非常に明確なドキュメントがあります。このドキュメントは、MySQLの代わりにPostgresを使用していることを前提としています。これは実際には通常は良い考えですが、好みのMySQLサービスを使用するように簡単に構成できます。Herokuアドオンとして手頃な価格のMySQLパッケージが含まれています。
メールの場合は、必ずHerokuアドオンを使用してください。独自のメールサーバーをHerokuスタックにデプロイしようとしないでください(技術的には可能かもしれませんが、ビルドパックをいじることで、Herokuのポイントではありません)。
負荷分散はHerokuによって自動的に行われます。Herokuの負荷分散が何らかの理由で不十分な場合は、サポートに直接連絡することをお勧めします。サポートは、私が彼らとやり取りしたときに、サービスの適切に特定された欠点に対処することに常に関心を示しているからです。
RabbitMQはHerokuのアドオンとして提供されているため、アプリケーションにこのサービスが必要であることが確実な場合は、問題はありません。