¿Qué tan difícil es programar un software como Facebook?

La creación de la red social no es fácil. Para el desarrollo de su propia red social, necesita tener conocimientos básicos, deseo, visión interesante y un equipo fuerte. Facebook es un buen ejemplo de la red social, y al estudiar su mecanismo podrá desarrollar el mismo sistema genial con funciones útiles y una gran cantidad de usuarios.

Hay varias etapas del desarrollo de la red social .

  • Imaginando
  • Título
  • Encontrar las inversiones
  • Contratar a los trabajadores trabajadores.
  • Desarrollo de sitios web
  • Lanzamiento de cohetes

Herramientas para la creación de redes sociales.

  • Ning es la plataforma en línea para la creación de la propia red social. Le permite crear la red, hacer el diseño, invitar amigos y comenzar a comunicarse en dos clics.
  • La herramienta SocialGO le ofrece crear la red social con los diferentes atributos característicos de la red social. Por ejemplo, foro, eventos, trabajo con archivos multimedia.
  • Elgg es la aplicación de código abierto potente y flexible para redes sociales. Basado en el proyecto FOAF (amigo de un amigo) y el posicionamiento del contexto del usuario en la comunidad. Después del registro, los usuarios pueden agregar y eliminar cualquier número de usuarios y amigos, intercambiar una variedad de datos y crear los blogs.
  • Pajar Puede tener en cuenta Haystack como la versión de Crowdvine. Todos los sitios web de redes sociales creados con Haystack son muy simples. Los usuarios pueden usar fácilmente sus sitios web gracias a su fácil funcionalidad.
  • La herramienta Snappville se basa en SNAPP. La plataforma ayuda a crear fácilmente redes sociales. Snappville incluye características tales como grupos de chat, mensajes, calendario, etc.

Selección del sistema de gestión de contenidos.

Existen muchos sistemas de gestión de contenido gratuitos que pueden realizar fácilmente funciones de las redes sociales.

  • Joomla
  • InstantCMS
  • GoogleFriendConnect

Promoción

Después del desarrollo de la red social, debe comenzar su promoción. Necesita crear una estrategia de promoción clara. Piense en las características especiales que pueden despertar el interés del público objetivo, publique reseñas en los sitios web y blogs.

La optimización SEO es una parte importante de la promoción. Cuando promocione su red social, asegúrese de que los sistemas de búsqueda no lo detecten como spammer.

Lea este útil artículo Cómo crear una red social como Facebook – Guía de Computools para obtener información detallada sobre las etapas del proceso de desarrollo y otros aspectos de las redes sociales.

Es extremadamente raro y difícil (una expresión actual para el nivel de dificultad es “como encontrar un unicornio”) conceptualizar y llevar a la realidad una idea que cambia el mundo como el sitio social de Facebook. Después de eso, uno simplemente se sienta y comienza a codificar, obteniendo ayuda a medida que se hace más amplio y profundo y técnicamente más desafiante.

Cuando se inició Facebook, otro aspecto extremadamente desafiante fue organizar la infraestructura física para que su “unicornio” pudiera escalar para servir a millones, y luego a decenas y cientos de millones de usuarios. Hoy, con una infraestructura de nube preconstruida como AWS Lamdba y MS Azure, esa parte es mucho más fácil. Si cree que tiene una idea que puede necesitar la escala de un Facebook, le aconsejo que comience su desarrollo en AWS Lambda (o su tipo fuera de Amazon).

Los desafíos técnicos para tal esfuerzo son muy reales y “no triviales” como les gusta decir a los programadores. Sin embargo, en cierto sentido, esos desafíos son el menor de los logros de alguien como el Sr. Zuckerberg.

Gracias por la solicitud de respuesta (R2A) sobre esto, Miami Dale.

Depende de qué era de Facebook.

Reducido a un producto mínimo (perfiles y amigos) en una organización pequeña (miles de usuarios), al parecer le toma a un desarrollador universitario aproximadamente una semana, o así se jactó Mark Zuckerberg.

Cientos se registran para el nuevo sitio web de Facebook | Noticias | The Harvard Crimson

¿Ego? Tal vez. Pero no es poco realista esperar que un desarrollador active un sitio como este con nada más que LAMP en el orden de semanas.

Facebook moderno: abarca mil millones de usuarios con innumerables funciones, un conjunto completo de API de socios, una vertiginosa variedad de aplicaciones en todos los sistemas operativos y está ampliamente monetizado … bueno, si la capitalización de mercado de Facebook es una indicación, es aproximadamente 300 mil millones de dólares.

Encontré el siguiente video realmente esclarecedor que muestra cuán rápido un problema simple puede hacerse grande y complejo a medida que se escala hacia millones (¡o miles de millones!) De usuarios.

Gracias por A2A.

Si está hablando de la parte de programación, esto es pan comido. Solo necesita un motor de base de datos decente, junto con su lenguaje de fondo favorito (creo que Mark comenzó con PHP), y un front-end elegante con JavaScript y CSS, y está listo para comenzar. Incluso podría funcionar bien para una comunidad pequeña como su escuela, universidad o club local.

Pero eso no es lo que hizo público a Facebook. Lo que vende aquí no son las herramientas que usa, sino la idea en sí. Facebook se hizo grande porque a la gente le gustó la idea de tener una red social donde tengas círculos para tus amigos, familiares, compañeros de trabajo, etc. Puedes compartir los eventos de tu vida con ellos y ver los de ellos. Esto es lo que vendió Facebook a las masas.

Y claro, hubo algunos competidores en el camino, pero Facebook sobrevivió. ¿Por qué? Porque demostró que puede hacer lo anterior y hacerlo rápido. Este es el cuello de botella, para hacer todo el procesamiento de todo el mundo de manera coordinada, eficiente y segura, con un mínimo retraso en el tiempo de respuesta. Ahora que es difícil de hacer.

No es realmente difícil. Bueno, la verdad es que * ahora * se ha vuelto difícil simplemente debido a problemas de escalabilidad * extremos * y miles de millones de personas que acceden a él.

Lo diré nuevamente, como siempre lo hago, construir software, o más bien jugar y crear alguna pequeña utilidad genial, como Facebook o Twitter, o un juego, o un programa de pintura, o lo que sea, no es realmente difícil. nunca más. Claro, no es lo mismo que trabajar como técnico de call center o cartero, no, por supuesto que no. Sin ofender por cierto. Pero especialmente en el mundo actual, que ha evolucionado para incluir una inmensa cantidad de abstracciones y herramientas de api de software. La mayoría de las aplicaciones no son ciencia de cohetes ni requieren alguna ciencia informática teórica o matemática profunda (típicamente). Simplemente no es el caso. El desarrollo de herramientas y el advenimiento de las abstracciones de software lo han hecho realidad.

Lo que * es * difícil es desarrollar cualquier herramienta útil y lograr que atraiga la atención de cientos de miles, luego millones, quizás incluso miles de millones de personas. Asegurándose de que funcione bien. Hace algo realmente útil. Tiene muy pocos errores. Es muy intuitivo O crea una nueva necesidad en el mercado o suplanta una existente.

Y luego la parte difícil es escalar el software con esa nueva demanda. Esa es la verdad del asunto cuando se trata del desarrollo de software. No es dificil. Es solo que taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa prueba ahora la gente de que el mercado está saturado de software roto, software no intuitivo, software inútil, software que ya ha sido mejorado por otra cosa, etc. Esto ha acortado la tolerancia y la capacidad de atención de la gente, por lo que el nuevo software debe ” agarrarlos de inmediato.

Y, como señaló Peter, incluso si tiene éxito, ahora tiene que lidiar con problemas de escala. Se trata de todo lo que acabo de describir, que ahora es difícil. No es la construcción real de la parte del software.

A2A. Es lo más cercano a lo imposible que puedes conseguir sin ser realmente imposible.

Facebook es un sistema masivo. Masiva Y el 99.999% de las personas ni siquiera tienen las herramientas para comprender cuán masivo es.

Cuando los ingenuos ingenieros piensan en Facebook, piensan en el almacenamiento de una red de personas más la posibilidad de dar me gusta.

Esta es una parte trivial del sistema, aunque incluso eso es enormemente complicado.

Facebook consta de miles de servicios, en múltiples capas, todos los cuales están distribuidos masivamente y algunos de los cuales son increíblemente complejos:

  • Almacenamiento
  • Seguridad,
  • Replicación
  • Aprendizaje automático sobre conjuntos de datos de varios terrabytes
  • Inteligencia artificial
  • Procesamiento de imagen y video en tiempo real
  • Trabajos masivos de mapreduce / ETL
  • Gestión de anuncios
  • Motores de consulta distribuidos (por ejemplo, presto)
  • Bases de datos distribuidas (por ejemplo, cassandra)
  • Procesamiento de flujo en tiempo real
  • Redes globales de distribución de contenido.
  • Sistemas de intervención humana
  • Sistemas de comercio
  • Servicios API REST / GraphQL
  • Prueba y despliegue y sistemas de gestión de contenedores / nube
  • Colas, monitores, metamonitores

    … todo esto es parte de la plataforma de Facebook.

Hay una razón por la cual FB atrae a los mejores y más brillantes de la industria: se ponen a trabajar en algunos de los sistemas más desafiantes y de vanguardia del mundo.

Y solo para volverte loco, mira esto:

Presentamos el “paquete de 6”: el primer conmutador modular de hardware abierto

Facebook es tan vanguardista que tienen que desarrollar sus propios diseños de hardware de red.

Es muy difícil, pero no necesariamente en la forma en que pensarías.

La codificación en sí es la parte fácil, y supongo que la mayoría de los desarrolladores con unos años en su haber podrían replicar decentemente la mayoría de las características de Facebook.

Sin embargo, lo que es difícil es hacer que eso funcione, y que funcione de manera eficiente, y escalar un sitio como Facebook.

Por ejemplo, escribir una aplicación que permita a las personas publicar elementos para que sus amigos los vean como la línea de tiempo es bastante simple. Lo que no es simple es crear esa misma funcionalidad para aceptar miles de millones de solicitudes por día y luego determinar quién ve qué, basándose en una relación compleja de amigos, amigos de amigos, etc. La codificación aquí es importante, pero se encuentra con un nivel completamente nuevo cuando se trata de los tipos de arquitectura que su servidor necesita para manejar la carga.

Eso ni siquiera se ocupa de mantener registros precisos y encontrar formas de resolver problemas cuando inevitablemente suceden. Luego, también debe tener en cuenta que este tipo de consideraciones se extienden a las docenas de características diferentes que tiene Facebook, cada una de las cuales probablemente tiene diferentes preocupaciones para un uso eficiente.

Ahí es donde radica la verdadera dificultad para administrar un sitio del tamaño de Facebook.

Una pregunta interesante y útil podría ser: ¿Qué tan difícil fue crear la primera hamburguesería MacDonald’s y luego ampliar la franquicia una vez que se desarrolló el prototipo?

Crear y ejecutar un Micky D’s es muy difícil, pero el gerente no necesita tener las habilidades de un CEO de Fortune 500, ni necesariamente toma mucho tiempo configurarlo.

Lo que es demasiado difícil de medir es MacDonald’s como lo es hoy en la versión 1000x. Tomó muchas iteraciones que escalaron la fórmula original de Micky D para convertirse en un minorista gigante de comida rápida y en una compañía de logística de clase mundial que mantiene la calidad a través de una cadena de valor altamente estandarizada y una oferta de servicios.

Entonces, al igual que Micky D, es difícil construir una pequeña empresa, es aún más difícil construir una startup que esté diseñada para escalar rápidamente y es imposible determinar cuánto esfuerzo se requiere para construir esa misma compañía a una escala de mil millones de clientes.

¿Qué tan difícil fue crear el imperio de Medici Banking en la cima de la Italia renacentista? ¿Qué quieres decir?

Es muy difícil por muchas razones:

  • Tomó muchos años construir
  • Muchas iteraciones
  • Muchos ingenieros, diseñadores, desarrollo de productos, infraestructura …
  • Necesidad de resolver problemas muy difíciles (escalado, comunicación en tiempo real, gestión de datos …)

Espero que esto te dé una pista de por qué es difícil.

Eso depende de cuánta experiencia y en qué áreas tenga.

Después de 43 años de desarrollo de aplicaciones de sistemas (y desarrollo de sistemas), no me gustaría tener que escribir algo como Facebook.