Server y serverless
Nuestras aplicaciones eventualmente necesitan correr en algún lado. Ese "algún lado" típicamente se reduce a dos opciones: servidores tradicionales (donde vos sos el dueño de la casa) o ambientes serverless (donde sos un nómada de la nube). Ambos enfoques mantienen tu código corriendo en la nube, pero uno te da las llaves de la sala de servidores mientras que el otro te da una factura tipo Uber. Vamos a analizar estas opciones.
Comunicación entre sistemas
Cuando los sistemas necesitan hablar, tienen dos formas fundamentales de comunicarse: sincrónicamente (esperando respuestas inmediatas) o asincrónicamente (disparar y olvidar). Entender esta división te va a ayudar a debuggear problemas, elegir tecnologías y explicar decisiones arquitectónicas a tu equipo.
REST y RESTful
Hasta ahora en esta sección cubrimos los fundamentos de la comunicación entre APIs. Ahora veamos el estilo arquitectónico que subyace a la mayoría de las APIs web modernas: REST. Entender REST te ayuda a diseñar endpoints predecibles y escalables, y a reconocer cuando las afirmaciones de ser "RESTful" no se ajustan del todo a la realidad.
Interfaces e Implementaciones
Las interfaces y las implementaciones son conceptos fundamentales que te permiten escribir código flexible y fácil de testear. Una interface define qué hace algo, mientras que una implementación define cómo lo hace. Esta separación es la base de una arquitectura limpia.