Si tuviera que iniciar una nueva aplicación web a gran escala hoy, ¿qué marco utilizaría?

Gracias por el A2A!

Obviamente, hay más de una forma de resolver este problema. Para el front-end, elegiría AngularJS para cualquier SPA, o Nunjucks para plantillas del lado del servidor. (Descargo de responsabilidad: no he usado Nunjucks en este momento, pero probablemente pronto haré que se vea increíble).

El back-end es en realidad más interesante, y habría dos rutas distintas en mi libro de jugadas, según los requisitos:

  1. Node.js
    1. Hapi o Express
    2. Pasaporte para autenticación
    3. Mocha + Chai + Sinon para probar
    4. MongoDB + Mangosta
      1. Consideraría a fondo si MongoDB es incluso aplicable. Es increíble para los casos de uso correctos, pero no es el final de todo.
    5. Grunt para construir
  2. Plataforma Java
    1. Spring MVC + Jackson
    2. Spring Security para autenticación
    3. JUnit + Mockito para probar
    4. PostgreSQL + JPA 2.1
    5. Maven

Estoy interesado en ver lo que otros tienen en su lista de deseos. Especialmente para la base de datos y el marco front-end.

Simon S.

Dependerá de si tiene que ser en tiempo real y realmente interactivo, pero probablemente iría con esta pila:

  1. HapiJS para el backend
  2. ReactJS para la interfaz de usuario con Redux como mi implementación de flujo
  3. Mocha como marco de prueba
  4. Enzima como utilidad de prueba para mis componentes React
  5. BabelJS para transpilar mi código JavaScript
  6. Webpack como mi herramienta de compilación

No estoy seguro de si aún elegiría un servidor GraphQL, parece realmente poderoso para aplicaciones web a gran escala. Creo que en este momento iría por Falcor.

Lo que yo / el equipo ya sepa.

Cada aplicación web de “escala web” tendrá diferentes cuellos de botella con los que tendrá que lidiar cuando sean evidentes.

A veces eso significa migrar cómo se construye una gran parte de su sistema.

Rompería el problema de tal manera que una pequeña red de microservicios (en su mayoría escrita en un NodeJS actualizado) pueda entregar API (documentadas usando Swagger) a una aplicación de consola que no tiene base de datos y que ofrece una API consolidada a las capas de la interfaz de usuario. Convertiría cada micro servicio en la ‘fuente de la verdad’ para los datos de los que es responsable y mantendría los servicios sincronizados mediante un simple mecanismo pub-sub. Para la interfaz de usuario web, usaría componentes React y Redux. Usaría Redis para sesiones comunes y PostgreSQL para cualquier trabajo pesado de DB. Me alojaría en Heroku o AWS. Usaría Mocha para pruebas unitarias. Usaría Travis-CI para CI y GitHub para control de fuente y gestión de versiones. Usaría Gulp como herramienta de compilación y NPM como administrador de paquetes.