¿Cuál es el rol del framework web backend con AngularJS en la interfaz?

En este momento, estoy desarrollando el back-end para una aplicación web inicialmente simple para la que tengo la intención de usar AngularJS en la interfaz. Mucho de lo que escribo puede ser obvio para usted, pero no creo que pueda agregar mucho a sus afirmaciones incrustadas.

Para mi aplicación, la API REST del backend es la única función del backend, pero admitir la API REST implica proporcionar la mayoría de las funciones no relacionadas con la interfaz de usuario de la aplicación. Esto incluye autenticación, junto con lectura / escritura en la base de datos y almacenamiento de imágenes. Eventualmente, puedo agregar algo de lógica de análisis de datos que ciertamente será manejada por el backend.

En general, mientras que una arquitectura MVC del lado del cliente como AngularJS proporciona una experiencia de usuario fluida y receptiva, el backend es el único componente en el que se puede confiar, por lo que cualquier operación que deba realizarse de manera segura debe ser manejada por el backend. Si bien generalmente hay alguna validación de entrada en el cliente para informar al usuario, el backend debe volver a verificar todo. Además, aunque delegar el procesamiento al cliente es muy escalable, cualquier tarea que requiera muchos recursos y que se beneficie de una arquitectura concurrente y distribuida con almacenamiento en caché compartido probablemente tendrá que ser manejada en el backend. Ciertamente, también se trata de proteger los recursos compartidos, no solo en términos de seguridad, sino también para las protecciones relacionadas con el rendimiento, como el almacenamiento en caché y las colas.

Todo lo que debe incluirse en el lado del cliente es la lógica de visualización específica de la interfaz de usuario. AngularJS / AJAX / etc. permite que esta separación sea mucho más completa que las páginas generadas por plantillas de back-end (junto con clientes no basados ​​en la web, como aplicaciones iOS), pero nunca se confiará en el cliente para manejar datos.