Entonces, si voy a crear un sitio de red social, lo haré de la siguiente manera:
1) Usaré python y django para hacer un modelo básico de todo el sitio web. (Instagram también usa Python Django)
2) Luego usaré mysql como db principal para almacenar datos inicialmente (instagram use postgres). Todos los datos y relaciones de los usuarios, pero no están muy relacionados con las claves externas (serán independientes).
3) Luego usaré postfix para hacer frente a todos los correos electrónicos que tengo que hacer.
- Como empleado de una startup, ¿cómo sabe cuándo dejar de fumar? ¿Cómo se nota la diferencia entre el inicio no es adecuado para usted y una falta personal de valor?
- ¿Qué pasos sigue un emprendedor exitoso cuando ejecuta su idea?
- ¿Cómo comienzo una empresa de asociación para negocios de venta en línea?
- ¿Qué consejo me puede dar si voy a comenzar mi propio negocio de suscripción como box, etc.?
- ¿Alguna vez sucede que el fundador de una startup tiene una fase perezosa y luego la abandona para siempre y tiene éxito?
4) Para hacer la interfaz de usuario, iré con un marco receptivo como bootstrap de twitter.
5) Como me siento cómodo con Golang, escribiré todas las cosas desagradables como apis y cosas de procesamiento de datos en Golang. Por lo tanto, python django solo se usará para obtener datos preprocesados de db (nosql o sql) y también proporcionará entradas desde el navegador a los contenedores (golang / python) que procesarán los datos y los almacenarán.
6) Para la búsqueda, usaré la búsqueda elástica.
7) Confiaré en “docker” para configurar las cosas de modo que pueda expandirme a tantos servidores en minutos (implementación rápida).
8) Las cosas sofisticadas de la interfaz de usuario se realizarán utilizando angular js y D3 js.
9) Python ya tiene tantas bibliotecas para el aprendizaje automático y cosas similares, por lo que se usará allí. (como numpy, scipy, etc.)
10) Se usará una capa de memcache entre el navegador y la aplicación principal para servir datos rápidamente. Puede usar mcrouter de facebook para administrar y sincronizar todos sus servidores de memcache. Redis también se puede considerar dependiendo de las cosas que necesita mostrar. Si tiene que contar las vistas o mostrar los resultados en función de las vistas, entonces redis es una opción mucho mejor, ya que no tiene que escribir código para hacerlo por usted, redis tiene cosas incorporadas.
11) Aerospike se puede usar para publicar anuncios con una API escrita en golang (también puede usar cualquier otra capa sin sql, como redis, mongodb, couchbase, etc.)
Sé que la respuesta no está muy bien organizada y no cubre todo con mucho detalle, pero si quieres hacer algo específico solo deja comentarios, editaré la respuesta.