Si fuera a crear un sitio web similar a Quora ahora, ¿qué tecnologías utilizaría?

Ya existe un sitio web similar y se llama StackOverflow. StackOverflow está desarrollado con .NET, que es el entorno con el que estoy más familiarizado.

Pero primero comenzaría con solo un análisis de datos para determinar qué necesitaría el sitio. Por supuesto, necesita usuarios y los usuarios deben poder iniciar sesión. Utilizando una técnica como OpenID, podría usar proveedores de identificación de terceros para no tener que almacenar nombres de usuario / contraseñas en mi sitio. Y los usuarios tendrían que poder proporcionar información diversa, incluida una imagen de perfil, por lo que necesito espacio para cargar imágenes.

Se requiere un sistema de votación, más almacenamiento para todas las preguntas y respuestas de los usuarios y algunas páginas estáticas para obtener información adicional. Sería agradable una forma de mostrar anuncios, especialmente cuando los anuncios pueden relacionarse con las preguntas formuladas. Y los usuarios deben poder proporcionar textos enriquecidos con varias marcas pero sin ningún marcado peligroso en su código. (¡Por lo tanto, no hay etiquetas de script ni marcos en línea, ni imágenes vinculadas a fuera de mi sitio!) (Los enlaces de imágenes tendrían que descargarse a mi servidor para que pueda usar la imagen local).

Como este es un sitio web típico razonable, puedo elegir entre varias técnicas, pero como dije, C # y .NET son mis herramientas favoritas y lo suficientemente buenas para este trabajo. Con OpenID vinculando a Google+, Twitter, Facebook, LinkedIn y Github, ya tendría algunos buenos métodos de inicio de sesión y el resto del modelo de datos se puede hacer utilizando el Marco de Entidad con Code-First. Eso me permitiría la forma más fácil de actualizar el modelo de datos, ya que eso se hará en función de mi código. Con las bibliotecas MVC adicionales y la biblioteca WebAPI de .NET, puedo crear algunas páginas web bastante atractivas y una interfaz para una aplicación móvil o una aplicación de escritorio para que los usuarios tengan otros medios para hacer, examinar y responder todas las preguntas.

A continuación, necesitaría algunas personas para moderar cualquier contenido en el sitio. StackOverflow lo resuelve muy bien, ya que permiten que la comunidad se modere a sí misma. Pero eso significa que debe comenzar con usuarios confiables que no decidirán eliminar todo porque están enojados. (Además, nunca elimines ningún contenido, ¡solo escóndelo!)

Un buen abogado tendría que escribir los Términos y condiciones de mi sitio más un descargo de responsabilidad adicional de la DMCA y otra información legal que se mostrará en el sitio. Esto es importante cuando comienza a tener al menos varios miles de usuarios, ya que no desea ser responsable de nada de lo que sus usuarios hagan en su sitio.

A continuación, alojamiento … Como uso .NET, puedo usar Microsoft Azure como host con una base de datos de SQL Server también ubicada en la nube de Azure. Esto me permitiría contratar más potencia de procesador cuando mi sitio lo necesite. Comenzaría con un plan con 2 núcleos en Azure y, a medida que crezca la cantidad de visitantes, la API de Azure ajustará mi plan de uso automáticamente en función de la cantidad de visitantes, lo que permitirá que mi sitio responda en momentos ocupados sin perder mucho dinero en hospedaje cuando las cosas están tranquilas.

Hospedar en Azure también significa que necesito ganar los costos de hospedaje de alguna manera. Usuarios pagados? No, no funcionará. Un sitio llamado Experts Exchange lo intentó por un tiempo y perdió una gran cantidad de miembros debido a eso. Ahora son gratis nuevamente, pero ya no son tan populares como solían ser. Entonces, anuncios y patrocinadores, aunque no puedo mostrar demasiados anuncios, ya que asustaría a muchos visitantes. O necesito obtener ingresos a través de otros medios.

Las personas detrás de StackOverflow lograron obtener ganancias ya que su software se puede utilizar para muchos sitios de preguntas similares. Tienen todo este sitio de StackExchange con muchos sitios de control de calidad diferentes que son solicitados por algunos usuarios o pagados por algunas compañías más grandes para construir sus propias comunidades. Este último también puede ser rentable y evitaría la necesidad de anuncios. Pero como StackExchange ya es muy popular para esto, sería difícil competir con esto.

Ya sería difícil competir con StackOverflow o Quora. Muchas otras compañías han creado sitios de control de calidad similares, pero obtener muchos visitantes es un desafío. Por lo tanto, lo más probable es que evite hacer algo como Quora, ya que lleva mucho tiempo, tiene algunos costos adicionales y es poco probable que proporcione suficientes ganancias durante los primeros años de operación …

para mí soy desarrollador de .net. así que usaría .net, pensé que puedes usar cualquier tecnología.

Lo importante para recordar es que hay dos extremos para desarrollar un sitio web interactivo con muchos datos. Un front end y un back end.

Cualquier cosa con .js o JQuery es tecnología front-end, sí, puede hacer el trabajo, pero la tecnología front-end no es tecnología back-end.

El back-end debería estar haciendo todo el trabajo, encontrar las cosas para poner en la página y el procesamiento … el front-end debería hacerlo bonito y validar las cosas que un usuario ha ingresado antes de llegar al back-end.

Por lo tanto, usaría el servidor SQL (2012 o superior) para el almacén de datos, usaría .net (mvc o formulario web no me molesta) y personalmente usaría extensivamente HTML5 y CSS4 para obtener el formato correcto, ad i Crearía algo de Java a mano para los bits adicionales, aunque mirándolo, parece que habría que hacer muy poco en JS que AJAX no podría lograr.

(cuanto más se carga en el front-end de un sitio web, más lentas son las cosas)

Si fuera a crear un sitio web similar a Quora ahora, ¿qué tecnologías utilizaría?

Al construir una startup, la velocidad de iteración es lo más importante. Entonces elegiría un lenguaje que me permita desarrollar las cosas lo más rápido posible. Entonces, para la API, principalmente iría con Elixir. Se escala muy bien, es tolerante a fallas y se enfoca en la productividad de los desarrolladores. Por otro lado, quora hace muchos análisis con respecto a temas preferidos y similares. Python sería el lenguaje de elección en la mayoría de los casos junto con Scala para el manejo de datos. Con respecto a las bases de datos, usaría principalmente Cassandra y Postgresql, dependiendo del tipo de datos. Para el front-end más probable TypeScript con NodeJS como un “front-end – back end”

Definitivamente, iría con Node.js, ya que es mucho más rápido en comparación con sus pares, en segundo lugar, proporciona una buena conectividad con NoSql, que es una gran ventaja.