Por qué se parte una aplicación en servicios, qué se gana y qué problema nuevo aparece del lado del cliente.
→ avanzar · S notas del orador · F pantalla completa · O vista general
Deslizá hacia abajo para recorrerla. Las simulaciones se activan al llegar a cada una.
github.com/gastonprieto/presentacion-microserviciosUna sola aplicación hace todo: usuarios, órdenes y pagos son módulos del mismo programa. El cliente conoce una sola dirección: tienda.com.
Llega un pico de pagos. La única forma de atenderlo es clonar la app entera.
Cambia una línea de pagos. Para que llegue a producción hay que redeployar la app entera, copia por copia.
Un bug en pagos cuelga el proceso. Todas las copias corren el mismo código: se caen todas.
Los módulos del monolito pasan a ser programas separados, que se hablan por la red.
Las mismas pruebas de antes, ahora servicio por servicio.
“Las organizaciones diseñan sistemas que copian su estructura de comunicación.” — Ley de Conway, 1967
Cada servicio tiene su propia dirección, y el cliente (el navegador, la app del celular) tiene que conocerlas todas.
El cliente le habla solo a la app web, en tienda.com. Ella llama a cada servicio y arma la página.
La misma página, con las mismas tres llamadas. Lo único que cambia es cómo las hace la app web.
Se cae Órdenes. ¿La página sale igual, o falla entera? Lo decide el orquestador.
Funciona, pero todo lo que cambia atrás pasa por la app web.
Simple, pero se escala, se deploya y se cae todo junto.
Cada parte escala, se deploya y falla por su cuenta, con su tecnología y su equipo.
El cliente conoce una sola dirección: la app web llama a los servicios, decide el orden y qué hacer si falta una parte. A cambio, cada servicio nuevo es código y deploy suyo, y si se cae, cae todo.
En el Architecture Playground armás un sistema con las piezas que vimos (clientes, servicios, load balancers, proxies, cachés, colas, brokers) y lo ponés bajo carga.
Arrancá por el preset Orden de compra y compará la versión orquestada con la coreografiada.
Abrir el playground →🐳 En el repo también hay un laboratorio con Docker para probar lo mismo con servicios de verdad.