4. Monolith
Pros
- Simplicidad para desarrollar
- Deploy sencillo
- Testing concentrado
- Escalamiento sencillo
- Consistencia de datos
Contras
- Código muy largo
- Features o corrección de errores lentos
- Código concentrado
- No utilizar la mejor herramienta para el trabajo a
desarrollar
- Cambiar de tecnología es complicado
- Problemas de compatibilidad con otras plataformas o
software
- La escalabilidad tiene que ser por toda la aplicación
- Caída completa de la aplicación
5. Monolith
Equipo de Desarrolladores
- De diversos tamaños y con diversas tareas,
- Comparten el mismo código, repositorio
- Integración de nuevos developers compleja según el largo de la aplicación
12. Microservices
Equipo de trabajo no mayor a
la cantidad de gente que
alimentarias con 2 pizzas
¿Qué pasa con el equipo?
Two Pizza team rule
- Jeff Bezos
14. Microservices
¿Y qué hay de mi base de datos?
Administración Descentralizada
de datos
- Datos por servicio
- Tecnología por servicio
- Sincronización mediante
Event - Sourcing
- CQRS
- Apache Kafka
- Pub / Sub
21. AWS
Cientos de equipos
+ Arquitectura Microservicios
+ Continuous Delivery
+ Multiple entornos de desarrollo
= 50 millones de deployments al año
(5708 por hora, o un deploy cada 0.63 segundos
26. Drawbacks
- Costoso
- Developers que sepan sobre Sistemas distribuidos
- IDE
- El stack de desarrollo puede ser demasiado para el
funcionamiento del servicio
- Partición y consistencia de datos
- Testing
27. Cómo migrar de monolítico a microservicios?
● Evalúa tu aplicación
● Rompela en componentes
● Ve del menor servicio al mayor servicio
● Todo lo nuevo se hace microservicio
28. Por dónde empiezo, qué necesito saber?
- Conocer completamente o a
profundidad un lenguaje de
programación
- Manejar con agilidad bases de datos
relacionales y no relacionales
- GIT
- Muy buen GIT
- No es broma
- Tener dominio sobre API REST
- Buena documentación de código y API’s
- Colas de mensajes (AMQP)
- Devops
- Webservers
- Docker
- Kubernetes / Docker Swarm-
- Cloud computing
- Arquitectura de software
- Algoritmia
- Trabajo en equipo y habilidades de
comunicación
En la ingeniería de software, una única aplicación de software en niveles en los que la interfaz de usuario y código de acceso a datos se combinan en un solo programa de una plataforma única.
Codigo largo
developers nuevos
sobrecarga de ide
sobrecarga del contenedor, inicio lento
costo de mantenimiento
a bug in any module, such as a memory leak,
Features o corrección de errores lentos
slowly continues deployment or integration
Escalamiento
toda la aplicación tiene acceso a toda la data
cacheo no efectivo al cachear toda la aplicación y aumentar la memoria para todo
cada parte de la aplicación tiene diferentes requerimientos
pequeños servicios enfocados a una sola cosa en específico y esa cosa la tienen que hacer bien. cada servicio se comunica mediante otros servicios
Ejemplo de la componentización
Hablar de los equipos de developers
explicar cómo se comunican los microservicios atravez de un api gateway para los distintos dispositivos y mediante restapi se comunican entre servicios, cada servicio tiene su lógica, sus librerías, su seguridad y su data