¿Cuán realista hubiera sido construir Instagram en Firebase?

Sí, se puede hacer, ¡pero es estúpido! Sigue leyendo y aprende por qué. Todo se reduce a la complejidad de las operaciones que vamos a ejecutar en nuestros datos. En el caso de Instagram, lo que generalmente queremos lograr es cargar la fuente de noticias. Este es un problema con Firebase, veamos por qué. Una fuente de noticias es (de una manera ingenua) una lista de publicaciones de personas que estoy siguiendo. En una base de datos relacional, simplemente seleccionaría todas las filas de la publicación de la tabla, las uniría con la siguiente tabla y ordenaría por marca de tiempo (muy ingenuo, estamos omitiendo “relevancia” pero esto está bien por simplicidad). Eso es básicamente eso. Si desea escalar esto, es probable que desee introducir fragmentación antes de que su base de datos explote, pero este es otro tema. Volvamos a Firebase, que es una tienda Json escalable masiva. Para entender el problema, debe echar un vistazo a la tabla de precios: Firebase Pricing 100K conexiones concurrentes para la base de datos en tiempo real está bien al principio, el problema radica en los costos de almacenamiento y el pago por datos transferidos. Si traducimos esto en un gráfico, se vería así: cuantos más datos almacene y más datos transfiera, más le costará. Si los datos almacenados y los datos transferidos aumentaran linealmente, esto estaría bien, pero esto no tiene sentido para una plataforma como Instagram. Una vez que Instagram comience, lo que verás es gente con millones de seguidores, generando contenido con millones de me gusta, etc. ¿Por qué es esto importante? El modelo de negocio de Instagram se basa en los efectos de red. Siempre querrás lograr un crecimiento exponencial que, y esta es la parte crítica, se traduciría directamente en costos exponenciales al usar Firebase. Esto se debe a que con Firebase Realtime Database no puedes simplemente “unirte” a una fuente de noticias. Tendrá que desnormalizar en gran medida sus datos y volver a unirlos a nivel de aplicación. Si desea lograr la funcionalidad de suministro de noticias casi en tiempo real, tendría que acumular todas las publicaciones que deberían mostrarse en el suministro de noticias de un usuario, colocarlas en una matriz json y almacenarlas. ¡Esto aumenta los datos almacenados exponencialmente! Ahora piense en agregar “me gusta” a las publicaciones. Puede actualizar todas las publicaciones desnormalizadas, lo que aumentará los datos transferidos exponencialmente o puede almacenar Me gusta centralizada y hacer una solicitud por publicación visible. Esto último aumentaría los datos transferidos aún más y conduce a una mala experiencia del usuario. Para resumir: Firebase Realtime Database es una herramienta excelente para almacenar datos json de manera confiable. Cuando se trata de datos muy relacionales como “datos de redes sociales”, pagará mucho dinero para lograr los mismos resultados y tendrá que implementar mucha lógica en su capa de aplicación para acumular correctamente los datos necesarios en la interfaz que es propensa a errores. Podría haberse hecho, pero nunca habría escalado.

Podría ser posible ejecutar Instagram en Firebase durante los primeros días de Instagram.

Firebase parece estar diseñado para manejar una buena cantidad de usuarios mensuales. A partir de ahora, su plan Spark de $ 25 puede manejar una cantidad ilimitada de usuarios, y puede manejar 100,000 cargas y 250,000 descargas por día, con un máximo de 50GB de almacenamiento.

Si Instagram usa un algoritmo de compresión para disminuir el tamaño de los archivos de imagen, entonces el servidor podría manejar cientos de miles de fotos.

Aunque, a medida que creció Instagram, Firebase no puede manejar el intenso tráfico que estaba recibiendo Instagram durante su etapa de crecimiento. Es entonces cuando Instagram debería cambiar a sus propios servidores dedicados.

Entonces, para responder a su pregunta, Instagram podría haberse creado fácilmente en Firebase durante las primeras etapas, hasta que los usuarios activos mensuales superen los 100,000.

Es bastante simple dada la experiencia que hemos tenido con Firebase. Actualmente, estamos desarrollando un tipo de aplicación de Spotify para artistas que usan Firebase tanto para iOS como para Android.

Aquí hay un vistazo rápido a la pila que estamos usando:

  1. Firebase para base de datos en tiempo real que potencia las líneas de tiempo y las notificaciones push.
  2. Amazon S3 para el almacenamiento de blobs.
  3. React Native para el desarrollo de aplicaciones móviles front-end.
  4. Google, Facebook y Twitter oAuth para autenticación.

Aquí hay una guía de inicio rápido para React Native con Firebase.