SlideShare une entreprise Scribd logo
1  sur  32
Mecanismos y patrones para acelerar
adopción en arquitecturas de
microservicios
Miguel Enriquez
@eldermael
Unidos compartiendo y aprendiendo
#SGVirtual
Plataformas Tecnológicas
Una plataforma tecnológica es el conjunto de
tecnologías que funcionan como el contexto en el
que las aplicaciones de una compañía corren.
El entorno de ejecución de tus microservicios:
● Proveedor de nube
● Soluciones PaaS
● Entornos de ejecución
Y funcionalidades transversales (cross-cutting
concerns):
● Autenticacion y Autorizacion
● Seguimiento y Registro
● Auditoria
Patrones de Microservicios
Manejo de Datos
● Base de datos por servicio
● Sagas
● Composicion de APIs
● CQRS
● ...
Despliegue
● Servicio por VM/Contenedor
● Serverless
● Plataforma de despliegue
● ...
Source: https://microservices.io/
Funcionalidad transversal:
● Chasis de microservicios
● Configuracion externalizada
Entregando Microservicios: Aceleradores
Patrones y mecanismos que ayudan a
reducir la fricción y acelerar adopción
de la plataforma tecnológica
● Crear microservicios
● Desplegar en la plataforma
● Mantener servicios actualizados
● Acceder a las características de
la plataforma
Aceleradores: Mecanismos y Patrones
Iniciadores de proyectos
● Plantillas de proyectos
● Generadores de proyectos
Herramientas de Flujos de Entrega
● Integraciones con sistemas de construcción
automatizada
● Bibliotecas compartidas para Pipelines
● Interfaces de línea de comandos para flujos de trabajo
● Imagenes compartidas para construcción de servicios
Microlibs
Herramientas para Refactorización Distribuida
Iniciadores de
Proyectos
Iniciadores de Proyectos
Para crear nuevos microservicios rápido, es necesario tener plantillas
conceptuales como arquitectura de referencia. Estas plantillas son un ejemplo de
cómo se estructuraría un microservicio que corra en la plataforma tecnológica.
● Crear microservicios con una arquitectura establecida
● Tener arquitectura de referencia hecha a medida para la plataforma
● Desarrollar características de la plataforma y la arquitectura
Plantillas de Microservicio
Son proyectos que sirven como un plano esquemático de un microservicio listo
para ser liberado a producción dentro de la plataforma.
Suele haber una relación entre las plantillas y los tipos de servicios:
● Servicios atómicos
● Servicios de composición de APIs
● Microfrontends
● Orquestadores de Sagas
Implementando todos ellos las funcionalidades transversales.
Generadores de Microservicios
El siguiente paso después de tener
plantillas es crear nuevos
microservicios automatizadamente con
unos cuantos parámetros:+
● Clonar una plantilla
● Renombrar el proyecto
● Generar nuevos manifiestos para
despliegue
● Aprovisionar infraestructura
● ...
Beneficios de usar Plantillas y Generadores
● El desarrollo de nuevos productos y la innovación se vuelve más fácil y
menos costoso
● La necesidad de reinventar funcionalidad transversal se vuelve menor o es
eliminada
● Acceso a una arquitectura de referencia probada dentro de la plataforma
digital
● Se puede llegar a eliminar la iteración cero en un nuevo proyecto
● Se permite experimentar con un costo reducido
Herramientas para
Flujos de Entrega
Herramientas para Flujos de Entrega
Las líneas de ensamblaje de integración y
entrega continua (CI/CD Pipelines) son
aceptadas hoy en día como el verdadero patrón
para liberar software. Pero…
● Con docenas de microservicios, ¿Se
requieren docenas de líneas de
ensamblaje?
● ¿Son las líneas de ensamblaje software
también?
● ¿Que se utiliza para imponer políticas en
toda la plataforma?
Integraciones con Sistemas de Construcción Automatizada
Integrar el sistema de construcción
automatizada con la plataforma permite aplicar
políticas en todos los microservicios a la vez.
● Estandarizar la creación de artefactos y
los tipos de artefactos
● Recolección de métricas
● Imponer tareas comunes
○ Pruebas adicionales
○ Manejo de dependencias
○ Aplicar políticas de seguridad dentro de la
plataforma
Pipelines en Microservicios
La creación de microservicios implica que haya
tantas líneas de ensamblaje como
microservicios pero, ¿Qué pasa realmente?
● En realidad solo hay unas cuantas líneas
de ensamblaje, para cada tipo de servicio
● El codigo para construcción, despliegue y
liberacion suele estar duplicado en todos
los microservicios
● El software usado para entregar los
microservicios también debe ser probado
y las bibliotecas compartidas permiten
recuperar capacidad de pruebas
Bibliotecas Compartidas para Pipelines y Despliegue a Producción
Las bibliotecas compartidas de líneas de
ensamblaje permiten reusar código para liberar
microservicios
● Proveen un “camino pavimentado hacia
produccion”
● Plantillas para cada tipo de microservicio
dentro de la plataforma que se pueden
reusar
● Requieren flexibilidad para acomodar
servicios que probablemente no necesitan
todos los pasos o etapas
Desventajas de las Bibliotecas Compartidas para Pipelines
Mientras que la estandarización del proceso de
entrega continua en microservicios trae
beneficios, también tiene desventajas:
● Pérdida de capacidad de pruebas en
modo local
● Dependencia excesiva en el servidor de
CI/CD
● Aumento de complejidad y liberación de
nuevas versiones del flujo
● Modelos muy lineales
Definición de Flujos en Comandos para Consola
Para evitar el acoplamiento con el Servidor de
Integración Continua y poder ejecutar las etapas
del pipeline localmente, se pueden crear
comandos para consola que ejecuten los flujos
necesarios para desplegar microservicios.
El uso del paradigma de “Convención sobre
Configuración” ayuda a tener CLIs que trabajen
con los flujos estándar de la plataforma para
acelerar la adopción.
Beneficios de Utilidades de Línea de Comandos
● Probar flujos fuera del servidor de CI/CD
● El ciclo de vida de la aplicación es independiente de la plataforma
y se puede usar localmente por desarrolladores
● Se consolidan las herramientas para construcción de
microservicios
● Flujos probados para construir y desplegar microservicios se
hacen disponibles para todos los desarrolladores
Proliferación de Imágenes con Herramientas de Construcción
La proliferación de herramientas para construir
microservicios viene con un alto costo:
● Múltiples imágenes para una sola
herramienta
● Múltiples imágenes de una herramienta
con versiones específicas
● Actualizar varias imágenes con la misma
herramienta implica mucha duplicación y
esfuerzo
● Fijar versiones es una especie de deuda
técnica
Imagenes Unicas para Construccion de Microservicios
● Único punto de actualización de
herramientas
● Un agente para construcción con menos
cambio de contexto entre etapas
● Menos problemas al versionar y/o
actualizar las herramientas para construir
los microservicios y las bibliotecas con las
que se usan las herramientas
Microlibs
Plataformas Tecnológicas y Funcionalidad Transversal (Cross-cutting
concerns)
Una regla de los microservicios es “compartir
nada”. Al mismo tiempo, una plataforma
tecnológica implementa varias de las
funcionalidades transversales de una
arquitectura de microservicios.
Si no se comparte código en lo absoluto entre
microservicios, los equipos tienden a reinventar
funcionalidades transversales.
Logging
Tracing
AuthZ/AuthN
Error Detection /
Reporting
Metrics
Collection
Microlibs - Compartir [poco] código entre Microservicios
Una microbiblioteca implementa las
funcionalidades transversales de la plataforma y
las concentra en un solo lugar.
● Esto provee a los equipos a cargo del
desarrollo de microservicios con una
solución a un problema común
● Consolida lo que potencialmente es deuda
técnica una vez que se requiere dar
mantenimiento a la implementación de
esa funcionalidad
Logging
Tracing
AuthZ/AuthN
Error Detection /
Reporting
Metrics
Collection
Refactorización
Distribuida
Arquitectura de
Microservicios Tiene un problema en común:
Desvio (Drift)
Drift causa que las Plataformas Tecnológicas caigan
La naturaleza orgánica del software es lo que causa la deuda técnica distribuida y
hace que los ingenieros de plataformas entren en modo mantenimiento.
Algunos sintomas:
● Docenas de líneas de ensamblaje diferentes
● Múltiples versiones de una biblioteca corriendo dentro de una plataforma
● Microservicios que no pasan su línea de ensamblaje al pasar el tiempo
¿Porque se generan desvíos entre microservicios? ¿Que es Drift?
Es porque compartimos código y configuraciones
Delivery Drift: pasa cuando tus microservicios no pueden ser construidos y
liberados con la misma línea de ensamblaje (pipeline) después de un tiempo
Dependency Drift: es cuando se comparten diferentes versiones de la misma
biblioteca en varios microservicios
Configuration Drift: ocurre cuando compartes configuraciones entre muchos
microservicios
Refactorización Distribuida, Crear Convergencia
La refactorización es un problema
distribuido porque debemos refactorizar
a través de varios microservicios para
evitar tener rezagados.
Convergencia entre versiones,
configuraciones y codigo de entrega
para mantener una plataforma estable.
“If it works, don’t fix it” esta mal 😱😱😱
¿Porque la Refactorización Distribuida?
El Desvio entre microservicios es la
raiza de todos los males
● Lleva a la “osificación”, esto es, los
servicios se estancan y no pueden
ser liberados con las nuevas
características de la plataforma
● El costo de mantenimiento sube
con el tiempo, se incrementa si no
se resuelve.
Herramientas para Refactorización Distribuida
Atomist provee un “API para el
software” que permite crear editores de
código basados en AST y
microgramaticas
Snyk trata de actualizar bibliotecas, se
enfoca en seguridad
Netflix skunkworks funciona como
parches para codigo, pero solo en Java
Muchas Gracias!
Redes Sociales:
Twitter: @eldermael
Blogging
https://medium.com/@eldermael
Podcast:
Pirate Dev Radio
https://anchor.fm/pirate-dev-radio
https://www.youtube.com/channel/UCIQ_yengMK59I2b
sL3443sg
Libro:
https://github.com/ElderMael/patternsfordeliveringmicroservices

Contenu connexe

Tendances

Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Micael Gallego
 
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)Micael Gallego
 
Microservicios sobre tecnologías Pivotal y VMware
Microservicios sobre tecnologías Pivotal y VMwareMicroservicios sobre tecnologías Pivotal y VMware
Microservicios sobre tecnologías Pivotal y VMwareAntonio Gallego
 
WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015Micael Gallego
 
Herramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos softwareHerramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos softwareJose Manuel Ortega Candel
 
Hack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonHack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonCarlos Azaustre
 
Corriendo SQL Server en Docker
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en DockerJavier Villegas
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosMicael Gallego
 
Microservicios y contenedores Docker
Microservicios y contenedores DockerMicroservicios y contenedores Docker
Microservicios y contenedores DockerPlain Concepts
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Micael Gallego
 
Presentacion OpenShift by RedHat
Presentacion OpenShift by RedHatPresentacion OpenShift by RedHat
Presentacion OpenShift by RedHatJosé Pino
 
Docker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbdayDocker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbdayMario IC
 
Introduccion Power BI Report Server
Introduccion Power BI Report ServerIntroduccion Power BI Report Server
Introduccion Power BI Report ServerEduardo Castro
 
Introducción a Cake PHP Framework
Introducción a Cake PHP FrameworkIntroducción a Cake PHP Framework
Introducción a Cake PHP FrameworkJomicast
 

Tendances (20)

Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019
 
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)
 
Microservicios sobre tecnologías Pivotal y VMware
Microservicios sobre tecnologías Pivotal y VMwareMicroservicios sobre tecnologías Pivotal y VMware
Microservicios sobre tecnologías Pivotal y VMware
 
WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015
 
Cruz uliseslarragaramirezcv
Cruz uliseslarragaramirezcvCruz uliseslarragaramirezcv
Cruz uliseslarragaramirezcv
 
DevOps: una breve introducción
DevOps: una breve introducciónDevOps: una breve introducción
DevOps: una breve introducción
 
Herramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos softwareHerramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos software
 
ALKAID-Herramientas-de-Desarrollo-Software
ALKAID-Herramientas-de-Desarrollo-SoftwareALKAID-Herramientas-de-Desarrollo-Software
ALKAID-Herramientas-de-Desarrollo-Software
 
Hack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonHack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un Hackathon
 
Corriendo SQL Server en Docker
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en Docker
 
GWT
GWTGWT
GWT
 
Exposicion GWT
Exposicion GWTExposicion GWT
Exposicion GWT
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
 
Microservicios y contenedores Docker
Microservicios y contenedores DockerMicroservicios y contenedores Docker
Microservicios y contenedores Docker
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
 
Presentacion OpenShift by RedHat
Presentacion OpenShift by RedHatPresentacion OpenShift by RedHat
Presentacion OpenShift by RedHat
 
Docker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbdayDocker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbday
 
Open edge mobile
Open edge mobileOpen edge mobile
Open edge mobile
 
Introduccion Power BI Report Server
Introduccion Power BI Report ServerIntroduccion Power BI Report Server
Introduccion Power BI Report Server
 
Introducción a Cake PHP Framework
Introducción a Cake PHP FrameworkIntroducción a Cake PHP Framework
Introducción a Cake PHP Framework
 

Similaire à Mecanismos y patrones para acelerar adopción en arquitecturas de microservicios

.Net Conf UY 2017: Un paseo por Azure Service Fabric
.Net Conf UY 2017: Un paseo por Azure Service Fabric.Net Conf UY 2017: Un paseo por Azure Service Fabric
.Net Conf UY 2017: Un paseo por Azure Service FabricGuillermo Javier Bellmann
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions SpanishCDS
 
Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...
Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...
Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...MongoDB
 
Microservicios con ASP.NET Core
Microservicios con ASP.NET CoreMicroservicios con ASP.NET Core
Microservicios con ASP.NET CoreEduardo Campañó
 
Reestructuración y Optimización de una de una Aplicación Monolítica.
Reestructuración y Optimización de una de una Aplicación Monolítica.Reestructuración y Optimización de una de una Aplicación Monolítica.
Reestructuración y Optimización de una de una Aplicación Monolítica.Matias Cappato
 
Patrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración ModernaPatrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración ModernaFrancisco Arturo Viveros
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsErnesto Anaya
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicasGerardo Linares
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Eduardo Castro
 
Webinar - Moderniza tu proceso de desarrollo con Oracle Cloud y DevOps
Webinar - Moderniza tu proceso de desarrollo con Oracle Cloud y DevOpsWebinar - Moderniza tu proceso de desarrollo con Oracle Cloud y DevOps
Webinar - Moderniza tu proceso de desarrollo con Oracle Cloud y DevOpsavanttic Consultoría Tecnológica
 
Meetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architectureMeetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architectureDomingo Suarez Torres
 
Microservicios en la nube: un paseo por Azure Service Fabric - .NET Conf CL v...
Microservicios en la nube: un paseo por Azure Service Fabric - .NET Conf CL v...Microservicios en la nube: un paseo por Azure Service Fabric - .NET Conf CL v...
Microservicios en la nube: un paseo por Azure Service Fabric - .NET Conf CL v...Guillermo Javier Bellmann
 
Derribando la torre de marfil - Plain Concepts Dev Day
Derribando la torre de marfil - Plain Concepts Dev DayDerribando la torre de marfil - Plain Concepts Dev Day
Derribando la torre de marfil - Plain Concepts Dev DayPlain Concepts
 
Novedades .Net Core - NetBaires
Novedades .Net Core - NetBairesNovedades .Net Core - NetBaires
Novedades .Net Core - NetBairesfernando sonego
 

Similaire à Mecanismos y patrones para acelerar adopción en arquitecturas de microservicios (20)

.Net Conf UY 2017: Un paseo por Azure Service Fabric
.Net Conf UY 2017: Un paseo por Azure Service Fabric.Net Conf UY 2017: Un paseo por Azure Service Fabric
.Net Conf UY 2017: Un paseo por Azure Service Fabric
 
M vs m
M vs mM vs m
M vs m
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions Spanish
 
Azure Functions
Azure FunctionsAzure Functions
Azure Functions
 
Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...
Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...
Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...
 
Microservicios con ASP.NET Core
Microservicios con ASP.NET CoreMicroservicios con ASP.NET Core
Microservicios con ASP.NET Core
 
Reestructuración y Optimización de una de una Aplicación Monolítica.
Reestructuración y Optimización de una de una Aplicación Monolítica.Reestructuración y Optimización de una de una Aplicación Monolítica.
Reestructuración y Optimización de una de una Aplicación Monolítica.
 
Patrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración ModernaPatrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración Moderna
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOps
 
Microservicios
MicroserviciosMicroservicios
Microservicios
 
Microservicios.pptx
Microservicios.pptxMicroservicios.pptx
Microservicios.pptx
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
 
Poc
PocPoc
Poc
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker
 
Webinar - Moderniza tu proceso de desarrollo con Oracle Cloud y DevOps
Webinar - Moderniza tu proceso de desarrollo con Oracle Cloud y DevOpsWebinar - Moderniza tu proceso de desarrollo con Oracle Cloud y DevOps
Webinar - Moderniza tu proceso de desarrollo con Oracle Cloud y DevOps
 
Meetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architectureMeetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architecture
 
Desarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud NativeDesarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud Native
 
Microservicios en la nube: un paseo por Azure Service Fabric - .NET Conf CL v...
Microservicios en la nube: un paseo por Azure Service Fabric - .NET Conf CL v...Microservicios en la nube: un paseo por Azure Service Fabric - .NET Conf CL v...
Microservicios en la nube: un paseo por Azure Service Fabric - .NET Conf CL v...
 
Derribando la torre de marfil - Plain Concepts Dev Day
Derribando la torre de marfil - Plain Concepts Dev DayDerribando la torre de marfil - Plain Concepts Dev Day
Derribando la torre de marfil - Plain Concepts Dev Day
 
Novedades .Net Core - NetBaires
Novedades .Net Core - NetBairesNovedades .Net Core - NetBaires
Novedades .Net Core - NetBaires
 

Plus de Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 

Plus de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Dernier

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 

Dernier (11)

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

Mecanismos y patrones para acelerar adopción en arquitecturas de microservicios

  • 1. Mecanismos y patrones para acelerar adopción en arquitecturas de microservicios Miguel Enriquez @eldermael Unidos compartiendo y aprendiendo #SGVirtual
  • 2. Plataformas Tecnológicas Una plataforma tecnológica es el conjunto de tecnologías que funcionan como el contexto en el que las aplicaciones de una compañía corren. El entorno de ejecución de tus microservicios: ● Proveedor de nube ● Soluciones PaaS ● Entornos de ejecución Y funcionalidades transversales (cross-cutting concerns): ● Autenticacion y Autorizacion ● Seguimiento y Registro ● Auditoria
  • 3. Patrones de Microservicios Manejo de Datos ● Base de datos por servicio ● Sagas ● Composicion de APIs ● CQRS ● ... Despliegue ● Servicio por VM/Contenedor ● Serverless ● Plataforma de despliegue ● ... Source: https://microservices.io/ Funcionalidad transversal: ● Chasis de microservicios ● Configuracion externalizada
  • 4. Entregando Microservicios: Aceleradores Patrones y mecanismos que ayudan a reducir la fricción y acelerar adopción de la plataforma tecnológica ● Crear microservicios ● Desplegar en la plataforma ● Mantener servicios actualizados ● Acceder a las características de la plataforma
  • 5. Aceleradores: Mecanismos y Patrones Iniciadores de proyectos ● Plantillas de proyectos ● Generadores de proyectos Herramientas de Flujos de Entrega ● Integraciones con sistemas de construcción automatizada ● Bibliotecas compartidas para Pipelines ● Interfaces de línea de comandos para flujos de trabajo ● Imagenes compartidas para construcción de servicios Microlibs Herramientas para Refactorización Distribuida
  • 7. Iniciadores de Proyectos Para crear nuevos microservicios rápido, es necesario tener plantillas conceptuales como arquitectura de referencia. Estas plantillas son un ejemplo de cómo se estructuraría un microservicio que corra en la plataforma tecnológica. ● Crear microservicios con una arquitectura establecida ● Tener arquitectura de referencia hecha a medida para la plataforma ● Desarrollar características de la plataforma y la arquitectura
  • 8. Plantillas de Microservicio Son proyectos que sirven como un plano esquemático de un microservicio listo para ser liberado a producción dentro de la plataforma. Suele haber una relación entre las plantillas y los tipos de servicios: ● Servicios atómicos ● Servicios de composición de APIs ● Microfrontends ● Orquestadores de Sagas Implementando todos ellos las funcionalidades transversales.
  • 9. Generadores de Microservicios El siguiente paso después de tener plantillas es crear nuevos microservicios automatizadamente con unos cuantos parámetros:+ ● Clonar una plantilla ● Renombrar el proyecto ● Generar nuevos manifiestos para despliegue ● Aprovisionar infraestructura ● ...
  • 10. Beneficios de usar Plantillas y Generadores ● El desarrollo de nuevos productos y la innovación se vuelve más fácil y menos costoso ● La necesidad de reinventar funcionalidad transversal se vuelve menor o es eliminada ● Acceso a una arquitectura de referencia probada dentro de la plataforma digital ● Se puede llegar a eliminar la iteración cero en un nuevo proyecto ● Se permite experimentar con un costo reducido
  • 12. Herramientas para Flujos de Entrega Las líneas de ensamblaje de integración y entrega continua (CI/CD Pipelines) son aceptadas hoy en día como el verdadero patrón para liberar software. Pero… ● Con docenas de microservicios, ¿Se requieren docenas de líneas de ensamblaje? ● ¿Son las líneas de ensamblaje software también? ● ¿Que se utiliza para imponer políticas en toda la plataforma?
  • 13. Integraciones con Sistemas de Construcción Automatizada Integrar el sistema de construcción automatizada con la plataforma permite aplicar políticas en todos los microservicios a la vez. ● Estandarizar la creación de artefactos y los tipos de artefactos ● Recolección de métricas ● Imponer tareas comunes ○ Pruebas adicionales ○ Manejo de dependencias ○ Aplicar políticas de seguridad dentro de la plataforma
  • 14. Pipelines en Microservicios La creación de microservicios implica que haya tantas líneas de ensamblaje como microservicios pero, ¿Qué pasa realmente? ● En realidad solo hay unas cuantas líneas de ensamblaje, para cada tipo de servicio ● El codigo para construcción, despliegue y liberacion suele estar duplicado en todos los microservicios ● El software usado para entregar los microservicios también debe ser probado y las bibliotecas compartidas permiten recuperar capacidad de pruebas
  • 15. Bibliotecas Compartidas para Pipelines y Despliegue a Producción Las bibliotecas compartidas de líneas de ensamblaje permiten reusar código para liberar microservicios ● Proveen un “camino pavimentado hacia produccion” ● Plantillas para cada tipo de microservicio dentro de la plataforma que se pueden reusar ● Requieren flexibilidad para acomodar servicios que probablemente no necesitan todos los pasos o etapas
  • 16. Desventajas de las Bibliotecas Compartidas para Pipelines Mientras que la estandarización del proceso de entrega continua en microservicios trae beneficios, también tiene desventajas: ● Pérdida de capacidad de pruebas en modo local ● Dependencia excesiva en el servidor de CI/CD ● Aumento de complejidad y liberación de nuevas versiones del flujo ● Modelos muy lineales
  • 17. Definición de Flujos en Comandos para Consola Para evitar el acoplamiento con el Servidor de Integración Continua y poder ejecutar las etapas del pipeline localmente, se pueden crear comandos para consola que ejecuten los flujos necesarios para desplegar microservicios. El uso del paradigma de “Convención sobre Configuración” ayuda a tener CLIs que trabajen con los flujos estándar de la plataforma para acelerar la adopción.
  • 18. Beneficios de Utilidades de Línea de Comandos ● Probar flujos fuera del servidor de CI/CD ● El ciclo de vida de la aplicación es independiente de la plataforma y se puede usar localmente por desarrolladores ● Se consolidan las herramientas para construcción de microservicios ● Flujos probados para construir y desplegar microservicios se hacen disponibles para todos los desarrolladores
  • 19. Proliferación de Imágenes con Herramientas de Construcción La proliferación de herramientas para construir microservicios viene con un alto costo: ● Múltiples imágenes para una sola herramienta ● Múltiples imágenes de una herramienta con versiones específicas ● Actualizar varias imágenes con la misma herramienta implica mucha duplicación y esfuerzo ● Fijar versiones es una especie de deuda técnica
  • 20. Imagenes Unicas para Construccion de Microservicios ● Único punto de actualización de herramientas ● Un agente para construcción con menos cambio de contexto entre etapas ● Menos problemas al versionar y/o actualizar las herramientas para construir los microservicios y las bibliotecas con las que se usan las herramientas
  • 22. Plataformas Tecnológicas y Funcionalidad Transversal (Cross-cutting concerns) Una regla de los microservicios es “compartir nada”. Al mismo tiempo, una plataforma tecnológica implementa varias de las funcionalidades transversales de una arquitectura de microservicios. Si no se comparte código en lo absoluto entre microservicios, los equipos tienden a reinventar funcionalidades transversales. Logging Tracing AuthZ/AuthN Error Detection / Reporting Metrics Collection
  • 23. Microlibs - Compartir [poco] código entre Microservicios Una microbiblioteca implementa las funcionalidades transversales de la plataforma y las concentra en un solo lugar. ● Esto provee a los equipos a cargo del desarrollo de microservicios con una solución a un problema común ● Consolida lo que potencialmente es deuda técnica una vez que se requiere dar mantenimiento a la implementación de esa funcionalidad Logging Tracing AuthZ/AuthN Error Detection / Reporting Metrics Collection
  • 25. Arquitectura de Microservicios Tiene un problema en común: Desvio (Drift)
  • 26. Drift causa que las Plataformas Tecnológicas caigan La naturaleza orgánica del software es lo que causa la deuda técnica distribuida y hace que los ingenieros de plataformas entren en modo mantenimiento. Algunos sintomas: ● Docenas de líneas de ensamblaje diferentes ● Múltiples versiones de una biblioteca corriendo dentro de una plataforma ● Microservicios que no pasan su línea de ensamblaje al pasar el tiempo
  • 27. ¿Porque se generan desvíos entre microservicios? ¿Que es Drift? Es porque compartimos código y configuraciones Delivery Drift: pasa cuando tus microservicios no pueden ser construidos y liberados con la misma línea de ensamblaje (pipeline) después de un tiempo Dependency Drift: es cuando se comparten diferentes versiones de la misma biblioteca en varios microservicios Configuration Drift: ocurre cuando compartes configuraciones entre muchos microservicios
  • 28. Refactorización Distribuida, Crear Convergencia La refactorización es un problema distribuido porque debemos refactorizar a través de varios microservicios para evitar tener rezagados. Convergencia entre versiones, configuraciones y codigo de entrega para mantener una plataforma estable. “If it works, don’t fix it” esta mal 😱😱😱
  • 29. ¿Porque la Refactorización Distribuida? El Desvio entre microservicios es la raiza de todos los males ● Lleva a la “osificación”, esto es, los servicios se estancan y no pueden ser liberados con las nuevas características de la plataforma ● El costo de mantenimiento sube con el tiempo, se incrementa si no se resuelve.
  • 30. Herramientas para Refactorización Distribuida Atomist provee un “API para el software” que permite crear editores de código basados en AST y microgramaticas Snyk trata de actualizar bibliotecas, se enfoca en seguridad Netflix skunkworks funciona como parches para codigo, pero solo en Java
  • 32. Redes Sociales: Twitter: @eldermael Blogging https://medium.com/@eldermael Podcast: Pirate Dev Radio https://anchor.fm/pirate-dev-radio https://www.youtube.com/channel/UCIQ_yengMK59I2b sL3443sg Libro: https://github.com/ElderMael/patternsfordeliveringmicroservices