Para el backend de una aplicación, ¿debería usar un servidor web http y un servidor de aplicaciones TCP o eliminar la capa del servidor de aplicaciones y hablar directamente con el servidor de actores Akka que maneja la lógica?

Depende mucho de tus necesidades.
Si esta es una idea nueva, implemente lo que sea más rápido para lanzarlo rápidamente y validar su idea.
Puede agregar cualquier capa más tarde.

También depende de otra funcionalidad que pueda tener. Si su aplicación tiene administración de usuarios, funcionalidad dinámica del sitio web y otros, entonces el servidor de aplicaciones es imprescindible y definitivamente lo diseñaría como un intermediario para el servidor de actores.

Mi preferencia personal es comenzar con el servidor de aplicaciones (incluso sin servidor web) ya que ajusta todas las llamadas de manera consistente y organizada y actúa como un punto de partida para otros servicios. el servidor de aplicaciones también contiene la capa del cliente (suponiendo que no se trate de páginas html estáticas), así que comience desde allí y agregue funcionalidad y capas según sea necesario.

PD
El uso de los marcos y métodos correctos puede facilitar el cableado y la integración.

Como la mayoría de las cosas, la respuesta es “Depende”. Si su aplicación es compleja e implementa reglas comerciales altamente configurables que representan decenas de miles de líneas de código, separe la lógica de la presentación. Sin embargo, si la aplicación tiene solo miles de líneas de código, puede combinar la presentación y la aplicación juntas. Hay ventajas en ambas direcciones. La complejidad de la solución está impulsada por la complejidad del problema.

Ponga todo en la misma VM para comenzar. Use Spray para las cosas de su servidor HTTP. Ya es sólida como una dependencia externa, y pronto será la biblioteca HTTP oficial de Akka. Si, en el futuro, necesita escalar, gracias a la transparencia de ubicación de Akka, puede alojar fácilmente componentes en otros servidores.

Al ser de la vieja escuela, tengo que preguntar: ¿por qué el servidor web incluso necesita estar en el camino? Cada capa, cada módulo es una pena. Menos es más.

De acuerdo con Paul. Además de la complejidad, el uso de un nivel separado para la capa de lógica de negocios ayudará desde una perspectiva de implementación para escalar en función de sus necesidades de rendimiento.

Mi preferencia personal es usar una solución más simple sobre una más compleja.