intive Argentina Blog

Diseñá tu infraestructura serverless en 10 cómodos pasos

En otro artículo hablamos de qué es la “Arquitectura Serverless”. Ahora, en éste, querido lector, nos enfocaremos en cómo plantearla.

Para esto necesitamos:

  1. 2½ tazas de harina.
  2. 1½ tazas de azúcar granulada.
  3. 1 taza de chocolate en polvo.
  4. 2 cucharaditas de polvo de hornear.
  5. ½ cucharadita de bicarbonato de sodio.
  6. ½ cucharadita de sal fina.
  7. 1 taza de aceite vegetal.
  8. 1 taza de leche fría.

Con todos los ingredientes, combinalos y tenés una deliciosa torta de chocolate, perfecto para poder tomarte un mate, un té o café, que vamos a necesitar junto a una hoja y lápiz, para definir nuestra arquitectura.

1. Define tus funcionalidades

Mi recomendación, en caso de que sea tu primera experiencia, es que empieces por funcionalidades sencillas, que sepas que puedes delegar e implementar. Esto te servirá para poder entender cómo funciona este mundo sin servidores. Considera una funcionalidad puntual: subir una imagen, devolver una imagen, guardar un registro, procesar uno o varios datos.

Tené en cuenta que una funcionalidad puede ser reutilizable para otra más grande. O una parte de ella puede contener un elemento complicado, que puede ser una sub-funcionalidad susceptible de ser separada. Esto es algo difícil de identificar en algunos casos, por lo que deberás analizar los beneficios de separarla o mantenerla unida.

2. Piensa en secuencias

Cuando entiendas la funcionalidad, pensá en una secuencia, donde cada evento dispara el siguiente. Cada funcionalidad tiene que ser concreto y puntual. Una técnica útil es diagramar la funcionalidad, para entender cómo sería su flujo de eventos. Si no lográs hacerlo, revisá la secuencia nuevamente y buscá simplificar.

Cada evento debería poder modificar o mover la información al siguiente y, esto debería ser representado como una cadena de sucesos. Cada elemento de la secuencia debería ser independiente de los demás, así al modificarlo no se afecta la totalidad del proceso.

3. Conocé tu nube

Identifica qué servicios de la nube podés utilizar. Muchos te proporcionan ventajas pero también costos. Por eso es importante entender el modelo de cobro y las capacidades de cada uno. Considerá aplicar pruebas de concepto puntuales, para identificar cómo configurar un servicio de la manera menos dolorosa posible.

4. Buscá delegar responsabilidades

Pensá qué servicios pueden ser útiles para tu propuesta, y qué conocimientos exigen. Considerá que no hay obligación de usar todos los servicios disponibles, ni mucho menos a utilizar una máquina virtual. El niño Jesús no va a llorar si decidís implementar una arquitectura híbrida (Santa Claus sí lo hace, pero él está en el Polo Norte y ya no nos trae regalos, así que no nos importa), pero considerá inclinarte más por un servicio proporcionado por la nube, en lugar de un servicio que debas administrar por tu cuenta.

5. Entendé tus puntos de control

Cada evento modifica o mueve la información. Tus puntos de control al menos, monitoreables. Si un evento no se ejecuta como se espera, debería poderse recuperar y volver al flujo normal. Así que, considerá cómo volver a normalizar el proceso desde un punto de control en tu secuencia, ya sea volviendo a un elemento anterior o, en el peor de los casos, empezando desde el principio.

6. Considerá un esquema de permisos

Cada servicio que utilicemos no debería ser expuesto a elementos externos. Si lo fuera, estaríamos incurriendo en una falla de seguridad para nuestra arquitectura. Siempre considerá los permisos mínimos requeridos para que un evento logre disparar el siguiente. Puede ser algo tedioso y complicado pero, al mismo tiempo, esta práctica nos proporciona confianza en nuestra arquitectura.

7. Primero, probá por partes

En el momento de implementar, probá recorrer la secuencia empezando en cada uno de los eventos. Se podría decir que hablamos de una prueba de integración de los servicios. Con cada uno de los elementos conectados entre sí, la seguridad y la capacidad de recuperación deberían ser comprobables.

8. Relajate

Así de simple: relajate. Recordá documentar y buscar la retroalimentación de otros miembros de tu equipo.

9. Reiterá hasta que estés conforme con el resultado

Busca mantener las cosas sencillas. Volvé a pasos anteriores en esta lista hasta que sientas seguridad del flujo de eventos.

10. Buscá una configuración óptima a partir de pruebas

Cada servicio ofrece distintas configuraciones, para escenarios diferentes. También posee gastos variables, lo que puede impactar en el costo total de una funcionalidad. Un objetivo de usar serverless es mantener costos bajos pero, una mala configuración puede provocar que el importe de la factura no sea el esperado.

En el diseño de cualquier arquitectura, preguntarnos cómo conformarla es la parte difícil. Lograr una arquitectura madura requiere siempre de varias interacciones y mucha retroalimentación.

Rodolfo Cordero

Rodolfo Cordero es desarrollador en la compañía desde junio de 2016. Es Licenciado en Desarrollo de Software, graduado de la Universidad Latina de Costa Rica, país del cual es oriundo. Asiduo lector y melómano, hizo cursos de coctelería y barismo, habilidades con las que deleita al staff de intive en los afters organizados por la compañía.

Deja un comentario