¿Cómo podría crear una aplicación web Django como Codecademy?

Este sería un proyecto complicado, pero una versión simple sería sencilla:

  1. Necesita pasar el código de usuario al servidor mediante una llamada AJAX.
  2. Debe tener un intérprete ejecutándose en su servidor y debe almorzar un intérprete y pasar el código del usuario a este intérprete
  3. Enviaría la salida del intérprete a un usuario (tal vez formatee de alguna manera)

¿Suena fácil? Ahora piensa en algunas cosas.

  • Una sola llamada AJAX creará una conexión HTTP, enviará datos y esperará un resultado. ¿Qué sucede si el código que está ejecutando un usuario está involucrado y demorará un par de minutos en ejecutarse? Entonces necesitas tener algo más complicado. Una solución sería tener un recurso REST POST / submit-code que ejecute un proceso de interpretación e inmediatamente devuelva una identificación única para la ejecución del código. Entonces tendría otro recurso para obtener el estado y el resultado, tal vez algo como GET / status / . Deberá escribir un código JavaScript para verificar periódicamente el estado de la tarea en el servidor. El servidor tendría que almacenar qué ID de tarea corresponde a qué proceso en el servidor.
  • ¿Qué sucede si los usuarios desean ejecutar tareas escritas en diferentes lenguajes de programación? Luego, deberá instalar múltiples intérpretes / compiladores en su máquina y cada uno de ellos deberá usarse de manera diferente
  • Qué sucede si un usuario intenta ejecutar un código malicioso (por ejemplo, intente eliminar todos los archivos en su servidor). Debe pensarlo y de alguna manera aislar un proceso que está ejecutando. Es posible que deba crear un usuario del sistema con permisos muy limitados y prohibir el acceso a la red, el sistema de archivos, etc.
  • ¿Qué pasa si su servicio se vuelve increíblemente popular y una máquina no es suficiente para ejecutar todas las tareas de los usuarios? Entonces necesita tener una flota de máquinas para ejecutar sus tareas. Esto agrega una capa de complejidad ya que tendrá que hacer un seguimiento de qué máquina ejecuta qué tareas. Puede usar una base de datos para almacenar esta información.
  • Ahora imagine que su servicio es MUY popular y lo está ejecutando en miles de ejecutores. Verá que muy a menudo algunas máquinas se caen por varias razones (falla de energía, falla del sistema operativo, falla del disco). Pero sus usuarios son muy exigentes y quieren que ejecute sus tareas sin importar qué. Para hacer esto, necesitará rastrear el estado de cada host ejecutor y si falla, reinicie todas las tareas que se estaban ejecutando en un host diferente. Para hacer esto, también debe almacenar la entrada del usuario que proporcionó.
  • Ahora imagine que a veces tiene pocos usuarios usando su servicio al mismo tiempo, pero a veces tiene una miríada de usuarios atacando sus sistemas. De lo que necesita usar la computación en la nube y el escalado automático para iniciar / detener dinámicamente a sus ejecutores

More Interesting

¿Cuáles son algunas plataformas de alojamiento para la aplicación web Django?

¿Por qué ya no está de moda poner una captura de pantalla de su aplicación en la página de inicio de su sitio web de promoción?

¿Cuál es la mejor pila de JavaScript moderna para el desarrollo de aplicaciones web?

¿Las aplicaciones web siguen siendo una cosa en 2017?

¿Cuáles son las ventajas y desventajas del proceso de impresión web?

¿Qué es un sistema GDS de puerto de viaje?

Cómo escribir una página web que se parece a una aplicación

Cómo crear un buen formulario web de conversión

¿Cuáles son algunas herramientas, consejos, mejores prácticas y consejos para alguien que es nuevo en proyectos de aplicaciones web?

¿Cuánto cuesta construir un sitio web de transmisión de películas? Las características principales incluirían dispositivos compatibles como computadoras portátiles, páginas de clientes donde navegan por catálogos y compran / alquilan películas. y páginas finales. ¿Cuál es el rango de precios probable?

No sé nada sobre desarrollo web, ¿es posible conseguir un trabajo simplemente siguiendo el desarrollo web front-end de Treehouse y la pista de desarrollo de Rails?

Reto académico para asegurar el procesamiento de texto HTML: puede ir en contra de la idea de la web, pero ¿es esto posible?

¿Cómo debería un buen equipo comenzar a desarrollar cualquier tipo de aplicación web?

¿Qué demora tanto el soporte HTML5 fuera de línea en aplicaciones en la nube de Google como Gmail, Docs, Calendar y Reader?

¿Cuáles son las especificaciones del servidor (RAM, CPU) para aplicaciones web famosas como booking.com, etc.?