¿Cuáles son algunas buenas formas de diseñar la arquitectura de software para aplicaciones sin servidor?

Es imposible responder esto sin conocer la naturaleza de la aplicación. Muchas cosas pueden afectar una arquitectura viable:

  • El número de conexiones externas que se admitirán simultáneamente;
  • Tiempo de conexión;
  • Volumen de datos en cada dirección;
  • Patrón de ráfaga de datos;
  • Propósito de la aplicación;
  • …y así.

Pongamos un ejemplo concreto de mis áreas de especialización. Para una aplicación de Internet de las cosas que se ejecuta en Amazon Web Services, puede usar AWS IoT para comunicarse con las cosas y manejar la gestión y la transición de estado, con Lambda para reaccionar a los cambios, y tal vez DynamoDB o Redshift para almacenar datos de volumen.

Y luego el front end sería una aplicación RESTful, con elementos estáticos servidos desde S3 y partes dinámicas manejadas por API Gateway que despacha eventos Lambda para consultar la base de datos, como describe este práctico artículo de Import.io.