¿Cómo es la estructura de fondo de una aplicación compleja como Instagram?

Bueno, necesitaría las siguientes capas (cada capa está compuesta por varios servidores que hacen lo mismo):

1-Una capa de base de datos (algo obvio) podría ser mysql o mongodb o redis o lo que sea, el punto es que se requiere una base de datos.

2- una capa de servidor web, podría ser php o java o ruby ​​o lo que sea.

3- una capa de servidor de colas, las colas ejecutan código de forma asincrónica. Por ejemplo, cuando publica en Instagram, su publicación no se escribe inmediatamente en la base de datos principal, se coloca en una cola y el servidor de la cola decide enviar más tarde la solicitud de escritura a la base de datos, dependiendo de qué tan ocupada esté actualmente la base de datos, por lo que en realidad puede pasar algún tiempo antes de que se almacenen cosas, sin embargo esto se mantiene invisible para el usuario

4- capa de servidor de chat, también podría tener su propia base de datos separada para entregar mensajes fuera de línea

5- un servidor de archivos para fotos y videos. No puede almacenar fotos y videos dentro de los servidores web, ya que tendrá muchos servidores web, por lo que duplicaría el contenido en todos ellos (mala idea) y se encontrará con problemas de qué pasaría si el usuario subiera una foto al servidor web 1 mientras el usuario 2 su amigo envió una solicitud a esta foto en el servidor web 2 y la foto aún no está sincronizada? Por lo tanto, los servidores web que ejecutan su código no son viables para un gran servicio, necesita una capa de servidor de archivos centralizada que tome las fotos de todos los servidores web y las sirva al usuario (recomiendo amazon s3 para el menor dolor de cabeza)

Las notificaciones y eventos 6-Push pueden ser sus propios servidores o pueden mezclarse con los servidores de chat, ya que es básicamente un mensaje de chat, excepto que se envía desde el servidor, tendrá que sonar en su pantalla y llamar su atención como un mensaje lo haría … pero no sabría si lo convierten en un servidor

Capa 7-Caché, no todas las solicitudes deben llegar a su servidor web, y no todas las solicitudes deben generar consultas, por lo que necesita un caché de base de datos como memcached y / o un caché de servidor web como barniz.


descargo de responsabilidad: nunca antes construí un sistema grande como este, me ofrecieron hacerlo una vez, de ahí toda la investigación, pero nunca lo hice …

He respondido una pregunta similar aquí, pero lo haré amablemente en esta pregunta:

Instagram utiliza Python (marco Django) y lenguajes HTML5 para el desarrollo de dicha aplicación.

Sin embargo, para crear una aplicación como Instagram para Android, puede utilizar Java o Kotlin . Del mismo modo, Swift y Objective-C para desarrollar aplicaciones iOS. El backend probablemente también requeriría incorporar chats en tiempo real, con Socket.IO por ejemplo.

Si está interesado en obtener más información sobre el desarrollo de Instagram, le sugiero que lea este artículo:

¿Cuánto cuesta hacer una aplicación como Instagram?

Espero que te ayude !

More Interesting

¿Debería pedirse a un desarrollador de iOS Junior en una compañía de aplicaciones que cree una red social por su cuenta?

¿Cuáles son las opciones tecnológicas para desarrollar un servidor común entre una aplicación móvil y una aplicación web?

¿Cuál es el mejor enfoque para probar su aplicación Rails con RSpec?

Cómo activar una aplicación de correo electrónico cuando el usuario hace clic en un enlace de correo electrónico en el navegador

¿Cuáles son algunas de las cosas que se pueden construir con WebRTC? ¿Cuáles son algunos casos de uso ideales?

¿Dónde podría obtener alguna inspiración o ideas sobre un proyecto de programación (por ejemplo, un juego, software, aplicación móvil o sitio web) y aprender una mejor programación?

¿Qué marcos tecnológicos y pilas son preferibles para la escalabilidad y el rendimiento en el desarrollo de aplicaciones móviles en 2015?

¿Qué marco es mejor para un desarrollador principiante de aplicaciones web móviles?

Soy nuevo en programación y estoy interesado en el desarrollo web. Me gustaría desarrollar buenas interfaces de usuario. ¿Cuál es el mejor lenguaje de programación para aprender?

¿Hay alguna forma viable de ganar dinero en la industria de viajes?

Cómo convertir un sitio web a una aplicación

¿Es más fácil el desarrollo web o el desarrollo de aplicaciones móviles?

¿Hay sitios o aplicaciones de alto tráfico que actualmente usan Neo4j?

¿Puedo usar Firebase como back-end para mi aplicación móvil tipo Uber?

¿Qué es mejor crear backend para aplicaciones web móviles, Stamplay o Firebase?