SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
REDISCOVER THE MEANING OF
TECHNOLOGY
Dev Day: Más
que Código
28.03.2019
2
9:30 Cómo petarlo con Blockchain en 45'
10:15 Derribando la torre de marfil
11:00 CAFÉ Y NETWORKING
11:30 Kubernetes 101
12:15 Desplegar en la nube y no morir en el intento
13:00 Depende ¿de qué depende?
Agenda
3
28.03.2019
Dev Day:
Más que Código
Alejandro González y Jesús María Escudero
Derribando la torre de marfil
Developers @ PlainConcepts
4
Jesús María EscuderoAlejandro González
Developer Developer
@glez4lex @jm_escudero
5
Una advertencia
Microservicios no es una bala de plata
6
• Cómo ir separando nuestra aplicación en microservicios
• Ventajas y opciones que nos ofrece
• Puntos clave a tener en cuenta
• Retos que añade (y algunas posibles soluciones)
Qué vamos a ver
@plainconcepts 7
El paso de una aplicación monolítica a una aplicación
basada en microservicios
de Sam Newman
Arquitectura inicial:
• Una SPA como aplicación cliente
• Un API REST que expone toda la lógica de:
RRHH, stock, operaciones y autenticación de
usuarios
• Una aplicación de gestión de las copias de
seguridad
• Una aplicación de reporting
El punto de partida
@plainconcepts 8
La torre de marfil
Una aplicación de una empresa de logística que se
encarga de:
• Gestionar el stock, la operativa de almacén y
recursos humanos
• Autenticar a los usuarios que la manejan
• Visualizar reporting para la toma de decisiones
estratégicas
El punto de partida
@plainconcepts 9
La torre de marfil
Dificultades que tienen:
• Refactorizar es extremadamente costoso
• Necesitan un stack tecnológico óptimo
• Desplegar nuevas características y parches es
lento y bloqueante
• Copias de seguridad eternas debido al tamaño
de la base de datos
• Dificultad para integrarse con servicios de
terceros (p. ej. autenticación), debido alto grado
de acoplamiento
• Dificultad para dimensionar correctamente los
recursos de la solución para hacer frente a picos
como el Black Friday, sin disparar los costes
• Otros equipos que trabajan en aplicaciones en
otros departamentos encuentran complicado
integrarse
¿Os suenan?
• Poder utilizar autenticación de terceros
• Usar un sistema de autenticación probado y
depurado
• Cumplir legislación en cuanto a almacenar
información sensible de usuarios
• Mejorar la seguridad de la información de los
usuarios
• Poder extender la autenticación de forma más o
menos transparente a otras APIs y productos que
desarrollen en el futuro
Servicio de Seguridad
@plainconcepts 10
RETO
• Creamos un servicio de Single Sign On
• Usaremos Identity Server (probado y testeado)
• Aislamos con infraestructura específica ese
servicio: red virtual, firewall, limitar accesos de
desarrolladores…
• Separamos la base de datos
• Encriptamos la información sensible de usuarios
• Las copias de seguridad se encriptan
automáticamente y se guardan en un sitio
especial (con accesos especiales)
• Nuestro punto de entrada de autenticación será
este. Si añadimos otros modos de autenticación,
nos aislamos de esos cambios
Servicio de Seguridad
@plainconcepts 11
SOLUCIÓN
• Hemos añadido complejidad de infraestructura
• Hemos separado la base de datos
• Podemos usar tipos distintos de bases de datos
• Las copias de seguridad se harán más rápidas
• Si la aplicación quiere datos de los usuarios, tendrá que comunicarse con este servicio para obtenerla → hay que
definir cómo se van a comunicar los servicios entre sí
Servicio de Seguridad
@plainconcepts 12
A TENER EN CUENTA, ADVERTENCIAS, NOTAS
• El modelo de BBDD y la tecnología limitan las
posibilidades de reporting
• La aplicación de reporting se tiene que integrar
a nivel de BBDD, convirtiendo la misma en un API
compartida y generando un grado altísimo de
acoplamiento
• El equipo que desarrolla la solución tiene menos
experiencia en esta área del negocio que el
equipo que desarrolla la aplicación de reporting
• El flujo de trabajo de la solución y sus tiempos
influyen fuertemente en la capacidad de
evolucionar el reporting
Servicio de Business Intelligence
@plainconcepts 13
RETO
• Desarrollar un nuevo microservicio de Reporting
que expondrá un API pública que compartirán
ambas soluciones
• Incorporar un producto de BBDD óptimo para el
caso: NoSQL
• Transferir la responsabilidad de este
microservicio al equipo de reporting
• Dividir el despliegue, de forma que el nuevo
microservicio tendrá su propio pipeline
Servicio de Business Intelligence
@plainconcepts 14
SOLUCIÓN
• La integración a nivel de API requiere una buena comunicación entre ambos equipos y seguir algunas buenas
prácticas como implementar documentación a nivel de API (con Swagger p. ej.) o versionado semántico
• La incorporación de datos para alimentar al API de reporting se puede resolver mediante el patrón de bombeo
de datos
Servicio de Business Intelligence
@plainconcepts 15
PUNTOS CLAVE
• Recursos humanos tiene un equipo de desarrollo
propio que mantiene una aplicación Java que
tendría que integrarse también
• Seguimos teniendo problemas de dimensionado
cuando vienen picos de trabajo y los costes
siguen siendo mejorables
• Tenemos bastantes problemas de concurrencia y
de rendimiento en operaciones aparentemente
sencillas
Rompiendo el negocio
@plainconcepts 16
RETO
• Desarrollar un nuevo microservicio de RRHH
• Desarrollar un nuevo microservicio de
Operaciones
• Transferir la responsabilidad de RRHH al equipo
dedicado
• Actualizar el stack: el nuevo servicio de RRHH se
desarrollará en Java
• Actualizar el stack de Operaciones: Go sobre
una base de datos de grafos
Rompiendo el negocio
@plainconcepts 17
SOLUCIÓN
• La integración entre los nuevos servicios se hará a través de un bus de eventos, de forma que reducimos el
acoplamiento al mínimo, pero: el código de los clientes que deberán interpretar los eventos deberá ser altamente
tolerante para evitar los problemas de integración y deberemos emplear buenas prácticas para facilitar la misma.
• La integración con la(s) aplicación cliente se hará a través de un API REST específica que orquestará la composición
de las operaciones contra los microservicios requeridos (empleando tecnologías como GraphQL.)
• El despliegue se vuelve aún más complejo.
• Gestionar el logging a su vez también.
Rompiendo el negocio
@plainconcepts 18
PUNTOS CLAVE
• Queremos que los proveedores puedan acceder
a nuestra API de operaciones
• No queremos que exponer esa API nos impida
evolucionar nuestra aplicación
• No queremos que nuestros cambios afecten a los
proveedores
• Queremos tener una documentación actualizada
de nuestra API
Exponiendo nuestras API
@plainconcepts 19
RETO
• Vamos a exponer al exterior algunos endpoints
del API de operaciones
• Vamos a generar documentación en Swagger
para que los proveedores sepan siempre cómo
usar la última versión
• Añadiremos un API Gateway para que redirija
las versiones al servicio que corresponda, para
aislar al proveedor de lo que hay por detrás (y
también a nosotros mismos, que somos
consumidores)
Exponiendo nuestras API
@plainconcepts 20
SOLUCIÓN
• Hay que securizar el acceso (con el servicio de seguridad).
• Hay que generar API Keys para los proveedores.
• Se complica la gestión de los servicios porque tenemos que gestionar distintas versiones de un mismo servicio.
• Herramienta automática para que genere una documentación estándar. En .NET, por ejemplo, Swashbuckle para
Swagger.
• Hay que monitorizar el uso de cada versión, porque podemos tener que deprecarlas cuando ya no se usen.
Exponiendo nuestras API
@plainconcepts 21
A TENER EN CUENTA, ADVERTENCIAS, NOTAS
• Queremos que nuestra aplicación escale con
lógica.
• Queremos escalar los servicios que lo necesiten
cuando lo necesiten (Navidad, Back Friday…)
Escalando nuestra aplicación
@plainconcepts 22
RETO
• Desplegar cada servicio en una máquina distinta
• Vamos a desplegar en la nube (Azure, AWS, Google Cloud…), que nos permite aumentar/reducir las características
de cada una de esas máquinas (CPU, memoria…) y poder pagar solamente por lo que gastemos
• Vamos a monitorizar los recursos que consume cada servicio, para poder anticipar cuándo necesitaremos más o
menos recursos en esas máquinas
• Vamos a mirar a ver si alguna funcionalidad podría aislarse incluso más (envío de correos electrónicos a
proveedores) y se pudiera usar como si fuera serverless (Azure Functions, AWS Lambdas…), porque en estos casos
solamente pagaremos por uso de esa función.
• En los momentos en los que ya no podamos escalar dentro de la misma máquina, levantaremos varias instancias de
los servicios en máquinas distintas. Necesitaremos un API Gateway para centralizar el flujo.
• Vamos a cachear algunas peticiones que son muy comunes y no cambian mucho (por ejemplo, el listado de
estanterías de un almacén)
Escalando nuestra aplicación
@plainconcepts 23
SOLUCIONES
• Hay que aprovisionar cada una de las máquinas con lo que los servicios
necesitan.
• Lo ideal es automatizar el aumento/la disminución de
recursos/máquinas
• Hay que orquestar la comunicación entre los servicios (hay que tener
cuidado cuando las IP de cada servicio puedan cambiar o pueda
haber varias instancias del mismo servicio)
• Necesito estadísticas de uso y de estado de las máquinas
• Si cacheamos información, hay que tener mucho cuidado y planificar
qué se cachea (y en qué formato) y cuando se regenera esa
información.
Escalando nuestra aplicación
@plainconcepts 24
A TENER EN CUENTA, ADVERTENCIAS, NOTAS
TOOLING
• Packer
• Ansible
• Docker
• Kubernetes
• Azure Container Registry
• Nginx
• Redis
Integración entre servicios
@plainconcepts 25
OPCIONES
A favor En contra
Cola de eventos • Puedo añadir fácilmente nuevos servicios
que se suscriban a esos eventos
• El productor no sabe quién le consume
• Mantener transacciones puede ser
duro
Llamadas directas
(REST API, RPC…)
• Fácil para gestionar transacciones • Aún así, hay que desarrollar
mecanismos de rollback
Data-pump • Más fácil de todos • No es real-time
Orquestación • Es más sencilla que la cola de eventos o
las llamadas directas
• Alto grado de acoplamiento
• Queremos garantizar que el código de
desarrollo funciona
• Queremos certificar lo antes posible que los
últimos cambios de un servicio no rompen la
integración con el resto de los servicios
• El despliegue debe ser individual para cada
servicio y lo más rápido posible
Integración continua/despliegue continuo
@plainconcepts 26
RETO
• Cada servicio es un proyecto independiente.
• Cada servicio tiene, como poco un pipeline de build, donde: comprobamos el código de manera estática,
compilamos (si aplica), ejecutamos tests y generamos un artefacto potencialmente desplegable.
• Creamos varios entornos, por donde va a ir pasando el artefacto, hasta que eventualmente pase a producción
Integración continua/despliegue continuo
@plainconcepts 27
SOLUCIONES
Compilar, tests rápidos,
generar artefactos
Tests de larga
duración
UAT Tests de
rendimiento
Entorno de
producción
• Cualquier push generará un artefacto que es candidato a estar en
producción
• Mantener el pipeline de build en verde es prioritario
• Aunque sean distintos, hay que configurar entornos (desarrollo, build,
testing, UAT, producción) lo más similares posible
• Esos entornos deben ser creables de manera automática (esos entornos
deben ser versionables)
• Debo evitar cambiar esos entornos de manera manual
• Al tener un proyecto para cada servicio, se complica un poco el
desarrollo (los desarrolladores tendrán que tener arrancados varios
servicios). Podríamos usar contenedores para los servicios que no estemos
implementando.
Integración continua/despliegue continuo
@plainconcepts 28
A TENER EN CUENTA, ADVERTENCIAS, NOTAS
TOOLING
• Terraform
• Docker
• Jenkins
• Azure DevOps
Foto Final
@plainconcepts 29
• Gestión centralizada de logs
• Backup de base de datos
• Tests
• Gestión de la caché
• …
Todavía hay más
@plainconcepts 30
Jesús María EscuderoAlejandro González
Developer Developer
@glez4lex
aggutierrez@plainconcepts.com
@jm_escudero
jmescudero@plainconcepts.com
31
Si quieres unirte a nuestro equipo echa un vistazo a
las ofertas de trabajo que tenemos publicadas
actualmente en nuestro LinkedIn o página web.
¡ESTAMOS
CRECIENDO!
32@plainconcepts
www.plainconcepts.com
BARCELONA SEVILLA LONDON BILBAO DUBÁI SEATTLE
MADRID LEÓN AMSTERDAM FRANKFURT CORUÑA
¡MUCHAS GRACIAS!
www.plainconcepts.com
@plainconcepts

Contenu connexe

Tendances

Azure bajo control: Claves de una buena gobernanza
Azure bajo control: Claves de una buena gobernanzaAzure bajo control: Claves de una buena gobernanza
Azure bajo control: Claves de una buena gobernanzaPlain Concepts
 
Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Eduard Tomàs
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!Paradigma Digital
 
Cloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesCloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesDomingo Suarez Torres
 
DevOps Spain 2019. Carlos Landeras-Plain Concepts
DevOps Spain 2019. Carlos Landeras-Plain ConceptsDevOps Spain 2019. Carlos Landeras-Plain Concepts
DevOps Spain 2019. Carlos Landeras-Plain ConceptsatSistemas
 
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAKCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAEduard Tomàs
 
Santiago de Chile - Seguridad Continua en Cloud Computing
Santiago de Chile - Seguridad Continua en Cloud ComputingSantiago de Chile - Seguridad Continua en Cloud Computing
Santiago de Chile - Seguridad Continua en Cloud ComputingWalter Vargas
 
La Vida de un Desarrollador con Kubernetes y Azure
La Vida de un Desarrollador con Kubernetes y AzureLa Vida de un Desarrollador con Kubernetes y Azure
La Vida de un Desarrollador con Kubernetes y AzureChristian Melendez
 
Virtualizacion
VirtualizacionVirtualizacion
VirtualizacionLoni29
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlimaAngel Nuñez
 
SQL Server Cross Platform Portable con Docker
SQL Server Cross Platform Portable con DockerSQL Server Cross Platform Portable con Docker
SQL Server Cross Platform Portable con DockerChristian Melendez
 

Tendances (20)

Azure bajo control: Claves de una buena gobernanza
Azure bajo control: Claves de una buena gobernanzaAzure bajo control: Claves de una buena gobernanza
Azure bajo control: Claves de una buena gobernanza
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
 
Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
 
Cloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesCloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a Kubernetes
 
Bases de Datos en Kubernetes
Bases de Datos en KubernetesBases de Datos en Kubernetes
Bases de Datos en Kubernetes
 
Introducción a Kubernetes
Introducción a KubernetesIntroducción a Kubernetes
Introducción a Kubernetes
 
DevOps Spain 2019. Carlos Landeras-Plain Concepts
DevOps Spain 2019. Carlos Landeras-Plain ConceptsDevOps Spain 2019. Carlos Landeras-Plain Concepts
DevOps Spain 2019. Carlos Landeras-Plain Concepts
 
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAKCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Santiago de Chile - Seguridad Continua en Cloud Computing
Santiago de Chile - Seguridad Continua en Cloud ComputingSantiago de Chile - Seguridad Continua en Cloud Computing
Santiago de Chile - Seguridad Continua en Cloud Computing
 
Contenedores como Servicio con Docker
Contenedores como Servicio con DockerContenedores como Servicio con Docker
Contenedores como Servicio con Docker
 
La Vida de un Desarrollador con Kubernetes y Azure
La Vida de un Desarrollador con Kubernetes y AzureLa Vida de un Desarrollador con Kubernetes y Azure
La Vida de un Desarrollador con Kubernetes y Azure
 
CSIC
CSIC CSIC
CSIC
 
Virtualizacion
VirtualizacionVirtualizacion
Virtualizacion
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlima
 
Docker containers-itb-2021
Docker containers-itb-2021Docker containers-itb-2021
Docker containers-itb-2021
 
Kubernetes 101
Kubernetes   101Kubernetes   101
Kubernetes 101
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
 
SQL Server Cross Platform Portable con Docker
SQL Server Cross Platform Portable con DockerSQL Server Cross Platform Portable con Docker
SQL Server Cross Platform Portable con Docker
 

Similaire à Derribando la torre de marfil - Plain Concepts Dev Day

KronOps - Perfil Corporativo
KronOps - Perfil CorporativoKronOps - Perfil Corporativo
KronOps - Perfil CorporativoKronOps
 
Lagertha – Plataforma Bancaria (Orwell Group)
Lagertha – Plataforma Bancaria (Orwell Group)Lagertha – Plataforma Bancaria (Orwell Group)
Lagertha – Plataforma Bancaria (Orwell Group)MariaDB plc
 
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...ssuserc860fb
 
Trabajo fin de master Dirección TI
Trabajo fin de master Dirección TITrabajo fin de master Dirección TI
Trabajo fin de master Dirección TIManolo Crespo
 
Visual Studio 2010 Ligthswitch + AZURE + Zero Code
Visual Studio 2010 Ligthswitch + AZURE + Zero CodeVisual Studio 2010 Ligthswitch + AZURE + Zero Code
Visual Studio 2010 Ligthswitch + AZURE + Zero CodeBruno Capuano
 
Lynxwork OpenStack Services
Lynxwork OpenStack ServicesLynxwork OpenStack Services
Lynxwork OpenStack ServicesArturo Vargas
 
Servicios de OpenStack
Servicios de OpenStack Servicios de OpenStack
Servicios de OpenStack Arturo Vargas
 
Transformación Digital en clave Cloud, ALM y DevOps
Transformación Digital en clave Cloud, ALM y DevOpsTransformación Digital en clave Cloud, ALM y DevOps
Transformación Digital en clave Cloud, ALM y DevOpsatSistemas
 
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
 
Provisionamiento de un RAC de 2 nodos en la nube de Oracle.
Provisionamiento de un RAC de 2 nodos en la nube de Oracle.Provisionamiento de un RAC de 2 nodos en la nube de Oracle.
Provisionamiento de un RAC de 2 nodos en la nube de Oracle.Lorenzo Jose Mota Garcia
 
Commit conf arquitectura-microservicios_v1.0
Commit conf  arquitectura-microservicios_v1.0Commit conf  arquitectura-microservicios_v1.0
Commit conf arquitectura-microservicios_v1.0Alfredo García Lavilla
 
La transformación digital en clave Cloud, ALM y Machine Learning
La transformación digital en clave Cloud, ALM y Machine LearningLa transformación digital en clave Cloud, ALM y Machine Learning
La transformación digital en clave Cloud, ALM y Machine LearningatSistemas
 
Escalando con SQL Server hasta la nube, un trayecto necesario - Adrian Miranda
Escalando con SQL Server hasta la nube, un trayecto necesario - Adrian MirandaEscalando con SQL Server hasta la nube, un trayecto necesario - Adrian Miranda
Escalando con SQL Server hasta la nube, un trayecto necesario - Adrian MirandaSpanishPASSVC
 
Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...
Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...
Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...Amazon Web Services LATAM
 

Similaire à Derribando la torre de marfil - Plain Concepts Dev Day (20)

IaaS + PaaS Cloud Solutions
IaaS + PaaS Cloud Solutions IaaS + PaaS Cloud Solutions
IaaS + PaaS Cloud Solutions
 
Cloud Computing VS SOA
Cloud Computing VS SOACloud Computing VS SOA
Cloud Computing VS SOA
 
KronOps - Perfil Corporativo
KronOps - Perfil CorporativoKronOps - Perfil Corporativo
KronOps - Perfil Corporativo
 
Lagertha – Plataforma Bancaria (Orwell Group)
Lagertha – Plataforma Bancaria (Orwell Group)Lagertha – Plataforma Bancaria (Orwell Group)
Lagertha – Plataforma Bancaria (Orwell Group)
 
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
 
Trabajo fin de master Dirección TI
Trabajo fin de master Dirección TITrabajo fin de master Dirección TI
Trabajo fin de master Dirección TI
 
Visual Studio 2010 Ligthswitch + AZURE + Zero Code
Visual Studio 2010 Ligthswitch + AZURE + Zero CodeVisual Studio 2010 Ligthswitch + AZURE + Zero Code
Visual Studio 2010 Ligthswitch + AZURE + Zero Code
 
Lynxwork OpenStack Services
Lynxwork OpenStack ServicesLynxwork OpenStack Services
Lynxwork OpenStack Services
 
Servicios de OpenStack
Servicios de OpenStack Servicios de OpenStack
Servicios de OpenStack
 
Descubriendo windows azure
Descubriendo windows azureDescubriendo windows azure
Descubriendo windows azure
 
Transformación Digital en clave Cloud, ALM y DevOps
Transformación Digital en clave Cloud, ALM y DevOpsTransformación Digital en clave Cloud, ALM y DevOps
Transformación Digital en clave Cloud, ALM y DevOps
 
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
 
Provisionamiento de un RAC de 2 nodos en la nube de Oracle.
Provisionamiento de un RAC de 2 nodos en la nube de Oracle.Provisionamiento de un RAC de 2 nodos en la nube de Oracle.
Provisionamiento de un RAC de 2 nodos en la nube de Oracle.
 
Commit conf arquitectura-microservicios_v1.0
Commit conf  arquitectura-microservicios_v1.0Commit conf  arquitectura-microservicios_v1.0
Commit conf arquitectura-microservicios_v1.0
 
API Agregadas
API AgregadasAPI Agregadas
API Agregadas
 
La transformación digital en clave Cloud, ALM y Machine Learning
La transformación digital en clave Cloud, ALM y Machine LearningLa transformación digital en clave Cloud, ALM y Machine Learning
La transformación digital en clave Cloud, ALM y Machine Learning
 
Escalando con SQL Server hasta la nube, un trayecto necesario - Adrian Miranda
Escalando con SQL Server hasta la nube, un trayecto necesario - Adrian MirandaEscalando con SQL Server hasta la nube, un trayecto necesario - Adrian Miranda
Escalando con SQL Server hasta la nube, un trayecto necesario - Adrian Miranda
 
Nuevas tendencias
Nuevas tendenciasNuevas tendencias
Nuevas tendencias
 
Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...
Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...
Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...
 
¿Que son los microservicios?
¿Que son los microservicios?¿Que son los microservicios?
¿Que son los microservicios?
 

Plus de Plain Concepts

R y Python con Power BI, la ciencia y el análisis de datos, juntos
R y Python con Power BI, la ciencia y el análisis de datos, juntosR y Python con Power BI, la ciencia y el análisis de datos, juntos
R y Python con Power BI, la ciencia y el análisis de datos, juntosPlain Concepts
 
Video kills the radio star: e-mail is crap and needed disruption
 Video kills the radio star: e-mail is crap and needed disruption Video kills the radio star: e-mail is crap and needed disruption
Video kills the radio star: e-mail is crap and needed disruptionPlain Concepts
 
Cómo redefinir tu organización con IA
Cómo redefinir tu organización con IACómo redefinir tu organización con IA
Cómo redefinir tu organización con IAPlain Concepts
 
Dx29: assisting genetic disease diagnosis with physician-focused AI pipelines
Dx29: assisting genetic disease diagnosis with physician-focused AI pipelinesDx29: assisting genetic disease diagnosis with physician-focused AI pipelines
Dx29: assisting genetic disease diagnosis with physician-focused AI pipelinesPlain Concepts
 
¿Qué es real? Cuando la IA intenta engañar al ojo humano
¿Qué es real? Cuando la IA intenta engañar al ojo humano¿Qué es real? Cuando la IA intenta engañar al ojo humano
¿Qué es real? Cuando la IA intenta engañar al ojo humanoPlain Concepts
 
Inteligencia artificial para detectar el cáncer de mama
Inteligencia artificial para  detectar el cáncer de mamaInteligencia artificial para  detectar el cáncer de mama
Inteligencia artificial para detectar el cáncer de mamaPlain Concepts
 
¿Está tu compañía preparada para el reto de la Inteligencia Artificial?
¿Está tu compañía preparada para el reto de la Inteligencia Artificial?¿Está tu compañía preparada para el reto de la Inteligencia Artificial?
¿Está tu compañía preparada para el reto de la Inteligencia Artificial?Plain Concepts
 
Cognitive Services en acción
Cognitive Services en acciónCognitive Services en acción
Cognitive Services en acciónPlain Concepts
 
El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...
El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...
El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...Plain Concepts
 
What if AI was your daughter?
What if AI was your daughter?What if AI was your daughter?
What if AI was your daughter?Plain Concepts
 
Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...
Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...
Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...Plain Concepts
 
Revolucionando la experiencia de cliente con Big Data e IA
Revolucionando la experiencia de cliente con Big Data e IARevolucionando la experiencia de cliente con Big Data e IA
Revolucionando la experiencia de cliente con Big Data e IAPlain Concepts
 
Recuperación de información para solicitantes de empleo
Recuperación de información para solicitantes de empleoRecuperación de información para solicitantes de empleo
Recuperación de información para solicitantes de empleoPlain Concepts
 
La nueva revolución Industrial: Inteligencia Artificial & IoT Edge
La nueva revolución Industrial: Inteligencia Artificial & IoT EdgeLa nueva revolución Industrial: Inteligencia Artificial & IoT Edge
La nueva revolución Industrial: Inteligencia Artificial & IoT EdgePlain Concepts
 
DotNet 2019 | Sherry List - Azure Cognitive Services with Native Script
DotNet 2019 | Sherry List - Azure Cognitive Services with Native ScriptDotNet 2019 | Sherry List - Azure Cognitive Services with Native Script
DotNet 2019 | Sherry List - Azure Cognitive Services with Native ScriptPlain Concepts
 
DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...
DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...
DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...Plain Concepts
 
DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...
DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...
DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...Plain Concepts
 
El camino a las Cloud Native Apps - Introduction
El camino a las Cloud Native Apps - IntroductionEl camino a las Cloud Native Apps - Introduction
El camino a las Cloud Native Apps - IntroductionPlain Concepts
 
El camino a las Cloud Native Apps - Azure AI
El camino a las Cloud Native Apps - Azure AIEl camino a las Cloud Native Apps - Azure AI
El camino a las Cloud Native Apps - Azure AIPlain Concepts
 

Plus de Plain Concepts (20)

R y Python con Power BI, la ciencia y el análisis de datos, juntos
R y Python con Power BI, la ciencia y el análisis de datos, juntosR y Python con Power BI, la ciencia y el análisis de datos, juntos
R y Python con Power BI, la ciencia y el análisis de datos, juntos
 
Video kills the radio star: e-mail is crap and needed disruption
 Video kills the radio star: e-mail is crap and needed disruption Video kills the radio star: e-mail is crap and needed disruption
Video kills the radio star: e-mail is crap and needed disruption
 
Cómo redefinir tu organización con IA
Cómo redefinir tu organización con IACómo redefinir tu organización con IA
Cómo redefinir tu organización con IA
 
Dx29: assisting genetic disease diagnosis with physician-focused AI pipelines
Dx29: assisting genetic disease diagnosis with physician-focused AI pipelinesDx29: assisting genetic disease diagnosis with physician-focused AI pipelines
Dx29: assisting genetic disease diagnosis with physician-focused AI pipelines
 
¿Qué es real? Cuando la IA intenta engañar al ojo humano
¿Qué es real? Cuando la IA intenta engañar al ojo humano¿Qué es real? Cuando la IA intenta engañar al ojo humano
¿Qué es real? Cuando la IA intenta engañar al ojo humano
 
Inteligencia artificial para detectar el cáncer de mama
Inteligencia artificial para  detectar el cáncer de mamaInteligencia artificial para  detectar el cáncer de mama
Inteligencia artificial para detectar el cáncer de mama
 
¿Está tu compañía preparada para el reto de la Inteligencia Artificial?
¿Está tu compañía preparada para el reto de la Inteligencia Artificial?¿Está tu compañía preparada para el reto de la Inteligencia Artificial?
¿Está tu compañía preparada para el reto de la Inteligencia Artificial?
 
Cognitive Services en acción
Cognitive Services en acciónCognitive Services en acción
Cognitive Services en acción
 
El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...
El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...
El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...
 
What if AI was your daughter?
What if AI was your daughter?What if AI was your daughter?
What if AI was your daughter?
 
Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...
Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...
Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...
 
Revolucionando la experiencia de cliente con Big Data e IA
Revolucionando la experiencia de cliente con Big Data e IARevolucionando la experiencia de cliente con Big Data e IA
Revolucionando la experiencia de cliente con Big Data e IA
 
IA Score en InfoJobs
IA Score en InfoJobsIA Score en InfoJobs
IA Score en InfoJobs
 
Recuperación de información para solicitantes de empleo
Recuperación de información para solicitantes de empleoRecuperación de información para solicitantes de empleo
Recuperación de información para solicitantes de empleo
 
La nueva revolución Industrial: Inteligencia Artificial & IoT Edge
La nueva revolución Industrial: Inteligencia Artificial & IoT EdgeLa nueva revolución Industrial: Inteligencia Artificial & IoT Edge
La nueva revolución Industrial: Inteligencia Artificial & IoT Edge
 
DotNet 2019 | Sherry List - Azure Cognitive Services with Native Script
DotNet 2019 | Sherry List - Azure Cognitive Services with Native ScriptDotNet 2019 | Sherry List - Azure Cognitive Services with Native Script
DotNet 2019 | Sherry List - Azure Cognitive Services with Native Script
 
DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...
DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...
DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...
 
DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...
DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...
DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...
 
El camino a las Cloud Native Apps - Introduction
El camino a las Cloud Native Apps - IntroductionEl camino a las Cloud Native Apps - Introduction
El camino a las Cloud Native Apps - Introduction
 
El camino a las Cloud Native Apps - Azure AI
El camino a las Cloud Native Apps - Azure AIEl camino a las Cloud Native Apps - Azure AI
El camino a las Cloud Native Apps - Azure AI
 

Dernier

TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfJoseAlejandroPerezBa
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfangelinebocanegra1
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfodalistar77
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETGermán Küber
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxPaolaCarolinaCarvaja
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfcastrodanna185
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx Emialexsolar
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2montoyagabriela340
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.marianarodriguezc797
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSLincangoKevin
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....Aaron Betancourt
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfalejandrogomezescoto
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidaddanik1023m
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosLCristinaForchue
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...OLGAMILENAMONTAEZNIO
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfOBr.global
 

Dernier (20)

BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier FolchBEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdf
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdf
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docx
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdf
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx E
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2
 
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura SilvaBEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidad
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
 

Derribando la torre de marfil - Plain Concepts Dev Day

  • 1. REDISCOVER THE MEANING OF TECHNOLOGY
  • 2. Dev Day: Más que Código 28.03.2019 2
  • 3. 9:30 Cómo petarlo con Blockchain en 45' 10:15 Derribando la torre de marfil 11:00 CAFÉ Y NETWORKING 11:30 Kubernetes 101 12:15 Desplegar en la nube y no morir en el intento 13:00 Depende ¿de qué depende? Agenda 3
  • 4. 28.03.2019 Dev Day: Más que Código Alejandro González y Jesús María Escudero Derribando la torre de marfil Developers @ PlainConcepts 4
  • 5. Jesús María EscuderoAlejandro González Developer Developer @glez4lex @jm_escudero 5
  • 6. Una advertencia Microservicios no es una bala de plata 6
  • 7. • Cómo ir separando nuestra aplicación en microservicios • Ventajas y opciones que nos ofrece • Puntos clave a tener en cuenta • Retos que añade (y algunas posibles soluciones) Qué vamos a ver @plainconcepts 7 El paso de una aplicación monolítica a una aplicación basada en microservicios de Sam Newman
  • 8. Arquitectura inicial: • Una SPA como aplicación cliente • Un API REST que expone toda la lógica de: RRHH, stock, operaciones y autenticación de usuarios • Una aplicación de gestión de las copias de seguridad • Una aplicación de reporting El punto de partida @plainconcepts 8 La torre de marfil
  • 9. Una aplicación de una empresa de logística que se encarga de: • Gestionar el stock, la operativa de almacén y recursos humanos • Autenticar a los usuarios que la manejan • Visualizar reporting para la toma de decisiones estratégicas El punto de partida @plainconcepts 9 La torre de marfil Dificultades que tienen: • Refactorizar es extremadamente costoso • Necesitan un stack tecnológico óptimo • Desplegar nuevas características y parches es lento y bloqueante • Copias de seguridad eternas debido al tamaño de la base de datos • Dificultad para integrarse con servicios de terceros (p. ej. autenticación), debido alto grado de acoplamiento • Dificultad para dimensionar correctamente los recursos de la solución para hacer frente a picos como el Black Friday, sin disparar los costes • Otros equipos que trabajan en aplicaciones en otros departamentos encuentran complicado integrarse ¿Os suenan?
  • 10. • Poder utilizar autenticación de terceros • Usar un sistema de autenticación probado y depurado • Cumplir legislación en cuanto a almacenar información sensible de usuarios • Mejorar la seguridad de la información de los usuarios • Poder extender la autenticación de forma más o menos transparente a otras APIs y productos que desarrollen en el futuro Servicio de Seguridad @plainconcepts 10 RETO
  • 11. • Creamos un servicio de Single Sign On • Usaremos Identity Server (probado y testeado) • Aislamos con infraestructura específica ese servicio: red virtual, firewall, limitar accesos de desarrolladores… • Separamos la base de datos • Encriptamos la información sensible de usuarios • Las copias de seguridad se encriptan automáticamente y se guardan en un sitio especial (con accesos especiales) • Nuestro punto de entrada de autenticación será este. Si añadimos otros modos de autenticación, nos aislamos de esos cambios Servicio de Seguridad @plainconcepts 11 SOLUCIÓN
  • 12. • Hemos añadido complejidad de infraestructura • Hemos separado la base de datos • Podemos usar tipos distintos de bases de datos • Las copias de seguridad se harán más rápidas • Si la aplicación quiere datos de los usuarios, tendrá que comunicarse con este servicio para obtenerla → hay que definir cómo se van a comunicar los servicios entre sí Servicio de Seguridad @plainconcepts 12 A TENER EN CUENTA, ADVERTENCIAS, NOTAS
  • 13. • El modelo de BBDD y la tecnología limitan las posibilidades de reporting • La aplicación de reporting se tiene que integrar a nivel de BBDD, convirtiendo la misma en un API compartida y generando un grado altísimo de acoplamiento • El equipo que desarrolla la solución tiene menos experiencia en esta área del negocio que el equipo que desarrolla la aplicación de reporting • El flujo de trabajo de la solución y sus tiempos influyen fuertemente en la capacidad de evolucionar el reporting Servicio de Business Intelligence @plainconcepts 13 RETO
  • 14. • Desarrollar un nuevo microservicio de Reporting que expondrá un API pública que compartirán ambas soluciones • Incorporar un producto de BBDD óptimo para el caso: NoSQL • Transferir la responsabilidad de este microservicio al equipo de reporting • Dividir el despliegue, de forma que el nuevo microservicio tendrá su propio pipeline Servicio de Business Intelligence @plainconcepts 14 SOLUCIÓN
  • 15. • La integración a nivel de API requiere una buena comunicación entre ambos equipos y seguir algunas buenas prácticas como implementar documentación a nivel de API (con Swagger p. ej.) o versionado semántico • La incorporación de datos para alimentar al API de reporting se puede resolver mediante el patrón de bombeo de datos Servicio de Business Intelligence @plainconcepts 15 PUNTOS CLAVE
  • 16. • Recursos humanos tiene un equipo de desarrollo propio que mantiene una aplicación Java que tendría que integrarse también • Seguimos teniendo problemas de dimensionado cuando vienen picos de trabajo y los costes siguen siendo mejorables • Tenemos bastantes problemas de concurrencia y de rendimiento en operaciones aparentemente sencillas Rompiendo el negocio @plainconcepts 16 RETO
  • 17. • Desarrollar un nuevo microservicio de RRHH • Desarrollar un nuevo microservicio de Operaciones • Transferir la responsabilidad de RRHH al equipo dedicado • Actualizar el stack: el nuevo servicio de RRHH se desarrollará en Java • Actualizar el stack de Operaciones: Go sobre una base de datos de grafos Rompiendo el negocio @plainconcepts 17 SOLUCIÓN
  • 18. • La integración entre los nuevos servicios se hará a través de un bus de eventos, de forma que reducimos el acoplamiento al mínimo, pero: el código de los clientes que deberán interpretar los eventos deberá ser altamente tolerante para evitar los problemas de integración y deberemos emplear buenas prácticas para facilitar la misma. • La integración con la(s) aplicación cliente se hará a través de un API REST específica que orquestará la composición de las operaciones contra los microservicios requeridos (empleando tecnologías como GraphQL.) • El despliegue se vuelve aún más complejo. • Gestionar el logging a su vez también. Rompiendo el negocio @plainconcepts 18 PUNTOS CLAVE
  • 19. • Queremos que los proveedores puedan acceder a nuestra API de operaciones • No queremos que exponer esa API nos impida evolucionar nuestra aplicación • No queremos que nuestros cambios afecten a los proveedores • Queremos tener una documentación actualizada de nuestra API Exponiendo nuestras API @plainconcepts 19 RETO
  • 20. • Vamos a exponer al exterior algunos endpoints del API de operaciones • Vamos a generar documentación en Swagger para que los proveedores sepan siempre cómo usar la última versión • Añadiremos un API Gateway para que redirija las versiones al servicio que corresponda, para aislar al proveedor de lo que hay por detrás (y también a nosotros mismos, que somos consumidores) Exponiendo nuestras API @plainconcepts 20 SOLUCIÓN
  • 21. • Hay que securizar el acceso (con el servicio de seguridad). • Hay que generar API Keys para los proveedores. • Se complica la gestión de los servicios porque tenemos que gestionar distintas versiones de un mismo servicio. • Herramienta automática para que genere una documentación estándar. En .NET, por ejemplo, Swashbuckle para Swagger. • Hay que monitorizar el uso de cada versión, porque podemos tener que deprecarlas cuando ya no se usen. Exponiendo nuestras API @plainconcepts 21 A TENER EN CUENTA, ADVERTENCIAS, NOTAS
  • 22. • Queremos que nuestra aplicación escale con lógica. • Queremos escalar los servicios que lo necesiten cuando lo necesiten (Navidad, Back Friday…) Escalando nuestra aplicación @plainconcepts 22 RETO
  • 23. • Desplegar cada servicio en una máquina distinta • Vamos a desplegar en la nube (Azure, AWS, Google Cloud…), que nos permite aumentar/reducir las características de cada una de esas máquinas (CPU, memoria…) y poder pagar solamente por lo que gastemos • Vamos a monitorizar los recursos que consume cada servicio, para poder anticipar cuándo necesitaremos más o menos recursos en esas máquinas • Vamos a mirar a ver si alguna funcionalidad podría aislarse incluso más (envío de correos electrónicos a proveedores) y se pudiera usar como si fuera serverless (Azure Functions, AWS Lambdas…), porque en estos casos solamente pagaremos por uso de esa función. • En los momentos en los que ya no podamos escalar dentro de la misma máquina, levantaremos varias instancias de los servicios en máquinas distintas. Necesitaremos un API Gateway para centralizar el flujo. • Vamos a cachear algunas peticiones que son muy comunes y no cambian mucho (por ejemplo, el listado de estanterías de un almacén) Escalando nuestra aplicación @plainconcepts 23 SOLUCIONES
  • 24. • Hay que aprovisionar cada una de las máquinas con lo que los servicios necesitan. • Lo ideal es automatizar el aumento/la disminución de recursos/máquinas • Hay que orquestar la comunicación entre los servicios (hay que tener cuidado cuando las IP de cada servicio puedan cambiar o pueda haber varias instancias del mismo servicio) • Necesito estadísticas de uso y de estado de las máquinas • Si cacheamos información, hay que tener mucho cuidado y planificar qué se cachea (y en qué formato) y cuando se regenera esa información. Escalando nuestra aplicación @plainconcepts 24 A TENER EN CUENTA, ADVERTENCIAS, NOTAS TOOLING • Packer • Ansible • Docker • Kubernetes • Azure Container Registry • Nginx • Redis
  • 25. Integración entre servicios @plainconcepts 25 OPCIONES A favor En contra Cola de eventos • Puedo añadir fácilmente nuevos servicios que se suscriban a esos eventos • El productor no sabe quién le consume • Mantener transacciones puede ser duro Llamadas directas (REST API, RPC…) • Fácil para gestionar transacciones • Aún así, hay que desarrollar mecanismos de rollback Data-pump • Más fácil de todos • No es real-time Orquestación • Es más sencilla que la cola de eventos o las llamadas directas • Alto grado de acoplamiento
  • 26. • Queremos garantizar que el código de desarrollo funciona • Queremos certificar lo antes posible que los últimos cambios de un servicio no rompen la integración con el resto de los servicios • El despliegue debe ser individual para cada servicio y lo más rápido posible Integración continua/despliegue continuo @plainconcepts 26 RETO
  • 27. • Cada servicio es un proyecto independiente. • Cada servicio tiene, como poco un pipeline de build, donde: comprobamos el código de manera estática, compilamos (si aplica), ejecutamos tests y generamos un artefacto potencialmente desplegable. • Creamos varios entornos, por donde va a ir pasando el artefacto, hasta que eventualmente pase a producción Integración continua/despliegue continuo @plainconcepts 27 SOLUCIONES Compilar, tests rápidos, generar artefactos Tests de larga duración UAT Tests de rendimiento Entorno de producción
  • 28. • Cualquier push generará un artefacto que es candidato a estar en producción • Mantener el pipeline de build en verde es prioritario • Aunque sean distintos, hay que configurar entornos (desarrollo, build, testing, UAT, producción) lo más similares posible • Esos entornos deben ser creables de manera automática (esos entornos deben ser versionables) • Debo evitar cambiar esos entornos de manera manual • Al tener un proyecto para cada servicio, se complica un poco el desarrollo (los desarrolladores tendrán que tener arrancados varios servicios). Podríamos usar contenedores para los servicios que no estemos implementando. Integración continua/despliegue continuo @plainconcepts 28 A TENER EN CUENTA, ADVERTENCIAS, NOTAS TOOLING • Terraform • Docker • Jenkins • Azure DevOps
  • 30. • Gestión centralizada de logs • Backup de base de datos • Tests • Gestión de la caché • … Todavía hay más @plainconcepts 30
  • 31. Jesús María EscuderoAlejandro González Developer Developer @glez4lex aggutierrez@plainconcepts.com @jm_escudero jmescudero@plainconcepts.com 31
  • 32. Si quieres unirte a nuestro equipo echa un vistazo a las ofertas de trabajo que tenemos publicadas actualmente en nuestro LinkedIn o página web. ¡ESTAMOS CRECIENDO! 32@plainconcepts
  • 33. www.plainconcepts.com BARCELONA SEVILLA LONDON BILBAO DUBÁI SEATTLE MADRID LEÓN AMSTERDAM FRANKFURT CORUÑA