Aprendí una pequeña lección (por las malas). Hice una aplicación de procesamiento de números que se ejecuta en los servicios en la nube de Ubuntu AWS EC2 (utiliza potentes GPU) y quería crear una interfaz para ella solo para ver su progreso en tiempo real.Debido al hecho de que necesitaba datos en tiempo real, era obvio que necesitaba websockets para impulsar las actualizaciones.
Comenzó con una prueba de concepto y funcionó muy bien. Pero luego, cuando queríamos que estuviera disponible para el público, tuvimos que agregar una sesión de usuario, por lo que necesitábamos funciones de inicio de sesión. Y no importa cómo se mire, el websocket tiene que saber con qué usuario trata, por lo que que tomamos el atajo de usar los websockets para autenticar a los usuarios . Parecía obvio y conveniente.
De hecho, tuvimos que pasar un tiempo en silencio para que las conexiones fueran confiables. Comenzamos con algunos tutoriales baratos de websocket, pero descubrimos que nuestra implementación no podía reconectarse automáticamente cuando se interrumpía la conexión. Todo eso mejoró cuando cambiamos a socket-io.¡Socket-io es imprescindible!
Habiendo dicho todo eso, para ser honesto, creo nos perdimos algunas características geniales de socket-io. Socket-io tiene mucho más que ofrecer, y estoy seguro de que si lo tiene en cuenta en su diseño inicial, podrá sacarle más partido. Por el contrario, acabamos de reemplazar los viejos websockets con la funcionalidad websocket de socket-io, y eso fue todo. (sin habitaciones, sin canales, ...) Un rediseño podría haber hecho todo más poderoso. Pero no tuvimos tiempo para eso. Eso es algo para recordar para nuestro próximo proyecto.
Luego comenzamos a almacenar cada vez más datos (historial de usuarios, facturas, transacciones, ...). Lo almacenamos todo en una base de datos de AWS dynamodb, y OTRA VEZ, usamos socket-io para comunicar las operaciones CRUD desde el front-end al backend. Creo que nos equivocamos de camino. Fue un error.
- Porque poco después descubrimos que los servicios en la nube de Amazon (AWS) ofrecen excelentes herramientas de balanceo de carga / escalado para aplicaciones RESTful .
- Ahora tenemos la impresión de que necesitamos escribir mucho código para realizar los apretones de manos de las operaciones CRUD.
- Recientemente implementamos la integración de Paypal. Logramos que funcionara. Pero nuevamente, todos los tutoriales lo están haciendo con API RESTful . Tuvimos que reescribir / repensar sus ejemplos para implementarlos con websockets. Sin embargo, lo hicimos funcionar bastante rápido. Pero parece que vamos en contra de la corriente.
Habiendo dicho todo eso, saldremos en vivo la semana que viene. Llegamos a tiempo, todo funciona. Y es rápido, pero ¿escalará?