Startup + serverless: Un matrimonio perfecto
En este artículo comparto una apreciación personal sobre la tecnología serverless y porqué considero que es muy importante para startups
Agenda
Qué es una startup? Definición, objetivos.
Evolución de la tecnología
Serverless. Qué es?, por qué utilizarlo?
App web en AWS, qué servicios utilizar?. Arquitectura
Herramientas
Qué es una startup? Definición, objetivos.
Para hablar de startups, me voy a basar mucho en un libro que considero que es clave para todo aquel que esté trabajando en tecnología hoy en día. El método lean startup de Eric Ries.
En este libro, el autor define a una startup como: "Es una institución humana diseñada para crear un nuevo producto o servicio bajo condiciones de incertidumbre extrema"
Para mitigar esta incertidumbre extrema de las startups, el autor introduce el concepto de aprendizaje validado, definiendolo como "Demostrar empíricamente que vamos por el buen camino, debemos aprender rápido y adaptarnos"
Claro que lograr que todo lo que hacemos sea validado por nuestros clientes no es simple, pero si logramos armar un circuito que lo permita podemos estar cada vez más cerca de cumplir este objetivo.
Este circuito, se basa en Construir, Medir, Aprender: Cuanto más rápido funciona el ciclo, más rápido aprendemos que quiere el mercado de nosotros.
Como conclusión de estas definiciones debemos:
- Lanzar un MVP rápido, poder hacer cambios incrementales
- Controlar muy bien los costos
Evolución de la tecnología
Quién posea, o esté cerca, de los 40 años seguramente tuvo que lidiar en su camino dentro de la industria de la tecnología con en viejo y querido On Premise!
Donde los equipos eran cuidados como hijos, incluso he visto equipos con nombres propios, del estilo "Optimus Prime".
En esa época no era tan simple crear un nuevo producto, bajo las premisas introducidas anteriormente, debiamos plantear el proyecto con una proyección muy precisa de crecimiento ya que debíamos comprar el hardware necesario para montar la infraestructura, y en caso que requerir más hardware el mismo podía tardar meses en estar disponible. En cuanto a los costos a afrontar, debíamos compar todos los equipos sin siquiera saber si esa loca idea realmente funcionaría.
Por lo tanto en aquella época, los costos, administración y la manera de escalar eran por decirlo suavemente pobres!
Con la llegada de la nube, todo esto cambió de manera drástica, como me gusta decir siempre "La tecnología cloud nos permite equivocarnos rápido y barato"
Con estas tecnologías podemos simplemente pedir cómputo o almacenamiento y tenerlo disponible en cuestión de minutos, por lo que las premisas del método Lean Startup son más acompañadas por la tecnología que se dispone.
La llegada de la nube "tradicional" nos trajo muchísima más agilidad, la posibilidad de quitar administración de todo ese hardware, y mejoro mucho el como escalamos. Desde el punto de vista de los costos la nube lo cambia todo, ya que ahora el pago es en general por uso y no requerimos pagar nada de antemano.
No nos quedemos con esto, hay una tecnología que nos permite simplificar algunas cosas más y abstraernos de otras. El mundo "SERVERLESS"
Serverless. Qué es?, por qué utilizarlo?
La tecnología serverless, muy de moda por estos tiempos, nos permite utilizar los servicios de cómputo, almacenamiento, bases de datos, etc. sin la necesidad de gestionar servidores.
Porqué es ideal para una startup?
- Al eliminar gran parte de la operación podremos enfocarnos en el producto, con esto ser mucho más ágiles.
- Obtenemos un producto que escala de manera automática, soportando altos picos de demanda.
- Modelo de pago por uso, los costos aumentan con el “éxito” del proyecto
- Utilizamos IaC, comenzamos a pensar en soluciones completas (infraestructura + código).
- Agilidad de despliegue de ambientes, agiliza la estrategias de CI/CD
App web en AWS, qué servicios utilizar?. Arquitectura
Para ver una arquitectura típica con tecnología serverless, les dejo mejor una imágen que vale mucho más que 1000 palabras
Herramientas
En cuanto a herramientas les dejo 2 jugadores que pueden ser muy útiles para el uso de esta tecnología permitiendo la mezcla de nuestro código junto con la infraestructura para que funcione, particularmente herramientas como pulumi creo que son el futuro ya que permiten escribir IaC con el mismo lenguaje de programación que escribimos el código lo que es una gran ventaja. De más está decir que el CDK de aws es perfectamente posible de utilizar con este fin.