SlideShare une entreprise Scribd logo
1  sur  54
Télécharger pour lire hors ligne
Q u i t o , E n e r o 2 0 1 5
DIVIDE Y VENCERÁS
Introducción a los microservicios
María Gómez Aguirre
¿QUIÉN SOY?
▫︎Generalist dev & Agile
coach
▫︎3 años en TW
▫︎6+ años desarrollo
web y móvil
▫︎Trabajado en UK,
India, USA y Ecuador
▫︎Múltiples proyectos
usando microservicios
2
CONCEPTOS
3
DOMAIN DRIVEN DESIGN
▫︎Patrón de diseño de
software que nos ayuda
a representar el mundo
real en forma de código
▫︎Promueve la
colaboración entre los
expertos en el giro de
negocio y el equipo
técnico
▫︎Basado en la evolución
iterativa del modelo
4
INTEGRACIÓN CONTÍNUA (CI)
5
▫︎Práctica de desarrollo
▫︎Devs suben código a un
servidor de control de
versiones varias veces al
día
▫︎Cada check-in inicia una
serie de trabajos para
asegurar la calidad y
funcionalidad del código
http://www.meranetworks.com/sites/default/files/styles/large/public/images/20122012025124.png
ENTREGA CONTINUA (CD)
6
▫︎Prácticas diseñadas
para asegurar que el
software puede ser
desplegado en
producción de
manera segura
▫︎Cada cambio en el
código se trata
como un candidato
potencial a salir a
producción
http://en.wikipedia.org/wiki/Continuous_delivery#mediaviewer/File:Continuous_Delivery_process_diagram.png
DESPLIEGUE CONTÍNUO
7
▫︎Más allá de la entrega contínua
▫︎Cada cambio que pasa por el proceso se
despliega automáticamente en producción
▫︎No es una práctica recomendada para todas
las empresas
https://puppetlabs.com/sites/default/files/Continuous_Delivery_Continuous_Deployment.jpg
ARQUITECTURA EVOLUTIVA
8
t
Arquitectura Esperada
Realidad
t
Tradicional
Agile
http://about.me/faustodelatog
VIRTUALIZACIÓN EN DEMANDA
9
▫︎Capacidad de crear
nuevas máquinas
virtuales de manera
automática.
▫︎Reduce los tiempos de
aprovisionamiento de
nuevos servidores
AUTOMATIZACIÓN DE INFRAESTRUCTURAS
10
▫︎Creación de procesos
automáticos que
configuran servidores y
servicios.
▫︎Reduce fallos ya que el
mismo script puede ser
usado para varios
ambientes.
EQUIPOS PEQUEÑOS Y AUTÓNOMOS
11
▫︎You build it you run it!
▫︎La responsabilidad de
mantener el software en
producción se comparte
entre equipos de dev e
infra.
▫︎Equipos pequeños son
responsables de ciertas
partes del código.
https://twitter.com/jesse_white/status/557606536076226560
ARQUITECTURA ORIENTADA A SERVICIOS (SOA)
▫︎Patrón de diseño en el que múltiples
servicios colaboran para proveer ciertas
capacidades.
▫︎Un servicio es un proceso de sistema
operativo independiente.
▫︎Comunicaciones entre los servicios se
hacen a través de llamadas sobre la red.
12
ARQUITECTURA ORIENTADA A SERVICIOS (SOA)
13
Web
services
SOAP
ESB
MICROSERVICIOS
14
¿QUÉ SON?
▫︎Implementación de SOA
15
CARACTERÍSTICAS
▫︎Pequeño, enfocado en hacer una sola cosa
▫︎Proceso independiente
▫︎Comunicación a través de API’s agnósticas
▫︎Altamente desacoplado
16
HERRAMIENTAS QUE LOS HACEN POSIBLES
▫︎Entrega Continua
▫︎Automatización de infraestructuras
▫︎Virtualización por demanda
▫︎Equipos pequeños y autónomos
17
BENEFICIOS - FLEXIBILIDAD TECNOLÓGICA
18
▫︎La herramienta correcta
para el trabajo
▫︎Impulsa la innovación
con riesgos mínimos
BENEFICIOS - ESCALABILIDAD
19
Monolíticas Micro Servicios
http://about.me/faustodelatog
BENEFICIOS - ESCALABILIDAD
20
https://flic.kr/p/aDZvrM
BENEFICIOS - FACILIDAD DE DESPLIEGUE
▫︎Monolíticas -> Un cambio requiere que toda la
aplicación se despliegue.
▫︎Microservicios -> Un cambio solo requiere el
despliegue del servicio afectado
▫︎Despliegues más rápidos y menos arriesgados
▫︎Reduce el tiempo de salida a producción (time
to market)
21
BENEFICIOS - DISTRIBUCIÓN DE RESPONSABILIDADES
▫︎División de servicios entre equipos más
pequeños
▫︎Evita posibles conflictos en el código
▫︎Promueve la productividad
22
BENEFICIOS - REUSABILIDAD DE FUNCIONALIDADES
23
▫︎Un servicio puede ser
usado por múltiples
clientes.
http://expertintegratedsystemsblog.com/wp-content/uploads/2014/06/LEGO.jpg
BENEFICIOS - FACILIDAD DE REEMPLAZO
▫︎Al ser pequeños son más fácil de eliminar,
juntar o separar.
▫︎No existe el apego emocional al código.
24
RIESGOS
▫︎Mantenibilidad de la infraestructura
▫︎Acciones: automatizar la creación de nuevos microservicios.
▫︎Rendimiento
▫︎Acciones: pruebas de rendimiento y revisión de procesos
▫︎Despliegue
▫︎Acciones: uso de los mismos scripts o procesos automáticos para
desplegar en todos los ambientes
25
RIESGOS
▫︎Monitoreo y logging
▫︎Acciones: centralizar los logs (Logstash). Uso de métricas y herramientas de
consulta de estado (New Relic).
▫︎Dependencias
▫︎Acciones: pruebas de contrato
26
¿POR QUÉ NO USAR LIBRERÍAS?
▫︎Aportan reusabilidad y acceso a la misma
funcionalidad desde varios sitios.
▫︎Pero:
▫︎Tienen que estar escritas en el mismo lenguaje o correr en la misma
plataforma
▫︎Un cambio en una librería significa un despliegue en todos sus clientes
▫︎Conclusión:
▫︎Son una buena opción para evitar duplicidad en el código, pero no
deberíamos basar la arquitectura en ellas.
27
MANOS A LA OBRA
28
PAPEL DEL ARQUITECTO
29
PAPEL DEL ARQUITECTO TOWN PLANNER
30
PAPEL DEL ARQUITECTO TOWN PLANNER
▫︎No hace planos sino que traza líneas que
ayudan a delimitar zonas.
31
https://flic.kr/p/ofKn1e
PAPEL DEL ARQUITECTO TOWN PLANNER
▫︎Pasa tiempo con el equipo, entiende sus
desafíos y discute las ideas con ellos.
32
PAPEL DEL ARQUITECTO CITY PLANNER
▫︎Se asegura de que las funcionalidades
implementadas son las adecuadas y
agregan valor al cliente.
33
PAPEL DEL ARQUITECTO CITY PLANNER
▫︎Se adapta a los cambios (tanto del negocio
como técnicos)
34
¿CÓMO EMPIEZO?
35
DEFINICIÓN DE PRINCIPIOS Y PRÁCTICAS
36
couple of years. This can be printed nicely on a singlesheet of paper and shared around,
and each idea is simple enough to be held in the average developer’s head. There is of
course more detail behind each point here, but being able to articulate this in summary
form is very useful.
Figure 2-1. A real-world example of principles and practicesNewman, S., Building Microservices, Available at: http://shop.oreilly.com/product/0636920033158.do [Accessed February 2, 2015].
DEFINICIÓN DE ESTÁNDARES MÍNIMOS
▫︎Monitoreo
▫︎ Estado de los servicios
▫︎ Tiempos de respuesta
▫︎ ….
37
DEFINICIÓN DE ESTÁNDARES MÍNIMOS
▫︎Microcontainers
para ayudar al
desarrollo
▫︎ JVM: Dropwizard
▫︎ Ruby: Sinatra
▫︎ .NET: Nancy
38
DEFINICIÓN DE ESTÁNDARES MÍNIMOS
▫︎Interfaces
▫︎ 1 o 2 tecnologías
soportadas
▫︎ ¿Cómo manejamos
paginación?
▫︎ Versionamiento de
servicios
39
DEFINICIÓN DE ESTÁNDARES MÍNIMOS
▫︎Deuda técnica
▫︎ ¿Cómo la manejamos y
la damos seguimiento?
▫︎ ¿Cómo la socializamos?
40
DEFINICIÓN DE ESTÁNDARES MÍNIMOS
41
DEFINICIÓN DE ESTÁNDARES MÍNIMOS
▫︎Pruebas de contrato
▫︎ Para integración con otros servicios
42
http://martinfowler.com/bliki/images/integrationContractTest/sketch.png
ENTREGA CONTINUA
43
ENTREGA CONTINUA
44
GREENFIELD PROJECT
45
https://flic.kr/p/eZC6ps
GREENFIELD PROJECT
▫︎Empieza con un servicio hasta que el
sistema evolucione y te “pida” que lo
extraigas a otro.
46
BROWNFIELD PROJECT
47
https://flic.kr/p/4dMsJW
Mi Sistema
BROWN-FIELD PROJECT
▫︎Empieza por
identificar los
diferentes contextos
que existen en la
organización (ventas,
inventario, clientes….)
48
Ventas
Productos
Clientes
BROWN-FIELD PROJECT
▫︎Separa estos contextos en paquetes y trata
de analizar las dependencias a nivel de
código. Si existen, elimínalas.
49
Mi Sistema
BROWN-FIELD PROJECT
▫︎Elige el contexto que
más se va a
beneficiar si lo
separas (distribución
de trabajo, carga,
tiempos de
respuesta,
tecnología…)
50
Ventas
Productos
Clientes
BROWN-FIELD PROJECT
▫︎Elimina la integración a nivel de Bases de
datos (usa llamadas a servicios en vez de
llamadas a BD).
51
Figure 6-2. Foreign-key relationship
So how do we fix things here? Well, we need to make a change in two places. Firstly, we
need to stop the Finance code reaching into the LineItem table, as this table really
belongs to the Catalog code, and we don’t want database integration happening once
CatalogandFinanceareservicesintheirownrights.Thequickestwaytodothisisrather
than having the code in Finance reach into the LineItem table, instead have expose the
data via an API call in the Catalog package that the Finance code can call. This API call
will be the forerunner of a call we will make over the wire, as we see in Figure 6-3.
Figure 6-3. Post removal of the foreign key relationship
At this point it becomes clear that we may well end up having to make two database
calls to generate the report. This is correct. And the same thing will happen if these are
two separate services too. Typically concerns around performance get raised. I have a
fairly easy answer to that - how fast does your system need to be? And how fast is it
now? If you can test its current performance and know what good performance looks
like, then you should feel confident in making a change. Sometimes making one thing
slower in exchange for other things is the right thing to do, especially if slower is still
perfectly acceptable.
Butwhatabouttheforeignkeyrelationship?Well,welosethisalltogether.Thisbecomes
a constraint we need to now manage in our resulting services rather than in the database
level.
Example: Shared Static Data
Newman, S., Building Microservices, Available at: http://shop.oreilly.com/product/0636920033158.do [Accessed February 2, 2015].
YOU MUST BE THIS TALL TO DO MICROSERVICES
▫︎ Madurez técnica (TDD, o
por lo menos alta
cobertura de tests en
todos los niveles).
▫︎ No separación Devs vs
Infraestructura (if you
build it you own it)
▫︎ Integración y entrega
continua como elementos
básicos.
52
MAS INFO
▫︎Divide y Vencerás
53
@mariascandella
mgomez@thoughtworks.com
GRACIAS
maria-gomez.me

Contenu connexe

Tendances

¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?Paradigma Digital
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsErnesto Anaya
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferenciasMicael Gallego
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsEsteban Saavedra
 
[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)Ernesto Anaya
 
Despliegue plataforma wso2
Despliegue plataforma wso2Despliegue plataforma wso2
Despliegue plataforma wso2WSO2
 
Retos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosRetos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosDomingo Suarez Torres
 
Bilbostack 2020 - El camino de l a entrega en DevOps
Bilbostack 2020 - El camino de l a entrega en DevOpsBilbostack 2020 - El camino de l a entrega en DevOps
Bilbostack 2020 - El camino de l a entrega en DevOpsLuis Fraile
 
Introducción al protocolo AMQP
Introducción al  protocolo AMQPIntroducción al  protocolo AMQP
Introducción al protocolo AMQPAbraham Ntd
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosDomingo Suarez Torres
 
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
 
Automation strategy for the services provisioning, IECISA
Automation strategy for the services provisioning, IECISA Automation strategy for the services provisioning, IECISA
Automation strategy for the services provisioning, IECISA OpenNebula Project
 
OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 Micael Gallego
 
Dev ops conf 2015 12 factor app - 2nd gen
Dev ops conf 2015   12 factor app - 2nd genDev ops conf 2015   12 factor app - 2nd gen
Dev ops conf 2015 12 factor app - 2nd genFlavia Marinelli
 

Tendances (20)

Microservicios
MicroserviciosMicroservicios
Microservicios
 
Introducción a microservicios
Introducción a microserviciosIntroducción a microservicios
Introducción a microservicios
 
¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOps
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferencias
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)
 
Despliegue plataforma wso2
Despliegue plataforma wso2Despliegue plataforma wso2
Despliegue plataforma wso2
 
Retos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosRetos en la arquitectura de Microservicios
Retos en la arquitectura de Microservicios
 
Bilbostack 2020 - El camino de l a entrega en DevOps
Bilbostack 2020 - El camino de l a entrega en DevOpsBilbostack 2020 - El camino de l a entrega en DevOps
Bilbostack 2020 - El camino de l a entrega en DevOps
 
La nube. Cloud computting
La nube. Cloud computtingLa nube. Cloud computting
La nube. Cloud computting
 
Introducción al protocolo AMQP
Introducción al  protocolo AMQPIntroducción al  protocolo AMQP
Introducción al protocolo AMQP
 
¿Que son los microservicios?
¿Que son los microservicios?¿Que son los microservicios?
¿Que son los microservicios?
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de Microservicios
 
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
 
Automation strategy for the services provisioning, IECISA
Automation strategy for the services provisioning, IECISA Automation strategy for the services provisioning, IECISA
Automation strategy for the services provisioning, IECISA
 
Linkerd a fondo
Linkerd a fondoLinkerd a fondo
Linkerd a fondo
 
OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 OpenVidu Commitconf 2018
OpenVidu Commitconf 2018
 
Dev ops conf 2015 12 factor app - 2nd gen
Dev ops conf 2015   12 factor app - 2nd genDev ops conf 2015   12 factor app - 2nd gen
Dev ops conf 2015 12 factor app - 2nd gen
 
Data Ops
Data OpsData Ops
Data Ops
 

Similaire à Divide y Vencerás: introducción a los Microservicios

Planificando el Camino azure migracion
Planificando el Camino azure migracionPlanificando el Camino azure migracion
Planificando el Camino azure migracionIvan Martinez
 
Lagertha – Plataforma Bancaria (Orwell Group)
Lagertha – Plataforma Bancaria (Orwell Group)Lagertha – Plataforma Bancaria (Orwell Group)
Lagertha – Plataforma Bancaria (Orwell Group)MariaDB plc
 
Proyecto final grupal gp
Proyecto final grupal gpProyecto final grupal gp
Proyecto final grupal gpMaria Lobos
 
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
 
Jornada Workshop: "Gobernando IT en el Siglo XXI"
Jornada Workshop: "Gobernando IT en el Siglo XXI"Jornada Workshop: "Gobernando IT en el Siglo XXI"
Jornada Workshop: "Gobernando IT en el Siglo XXI"Mkt Manager Data Adviser
 
Metodología de desarrollo e integración contínua para proyectos de BPM
Metodología de desarrollo e integración contínua para proyectos de BPMMetodología de desarrollo e integración contínua para proyectos de BPM
Metodología de desarrollo e integración contínua para proyectos de BPMIntellego Chile
 
reduce-tech-debt-eguide.en.es.pdf
reduce-tech-debt-eguide.en.es.pdfreduce-tech-debt-eguide.en.es.pdf
reduce-tech-debt-eguide.en.es.pdfNicanor Sachahuaman
 
Perspectivas del uso de las tecnologias cloud
Perspectivas del uso de las tecnologias cloudPerspectivas del uso de las tecnologias cloud
Perspectivas del uso de las tecnologias cloudSocial You, S.L.
 
trabajofinalMejora de MetodosBet.docx
trabajofinalMejora de MetodosBet.docxtrabajofinalMejora de MetodosBet.docx
trabajofinalMejora de MetodosBet.docxBethDuranCisneros
 
Tgs wp-simplify cloudcomplexityr02-150615103851-lva1-app6891
Tgs wp-simplify cloudcomplexityr02-150615103851-lva1-app6891Tgs wp-simplify cloudcomplexityr02-150615103851-lva1-app6891
Tgs wp-simplify cloudcomplexityr02-150615103851-lva1-app6891Itconic
 
Tgs wp-simplify cloudcomplexity r02
Tgs wp-simplify cloudcomplexity r02Tgs wp-simplify cloudcomplexity r02
Tgs wp-simplify cloudcomplexity r02Itconic
 
NubeAzure.pdf
NubeAzure.pdfNubeAzure.pdf
NubeAzure.pdfhefloca
 
20230524_Tendencias en Modernizacion , innovacion y transformacion en la nube
20230524_Tendencias en Modernizacion , innovacion y transformacion en la nube20230524_Tendencias en Modernizacion , innovacion y transformacion en la nube
20230524_Tendencias en Modernizacion , innovacion y transformacion en la nubeRicardo González
 
La industria inteligente y su aplicación en la administracion de empresas
La industria inteligente y su aplicación en la administracion de empresasLa industria inteligente y su aplicación en la administracion de empresas
La industria inteligente y su aplicación en la administracion de empresasJeronimoCorrealMuril
 
Road2Cloud - OpenExpo 2018
Road2Cloud - OpenExpo 2018Road2Cloud - OpenExpo 2018
Road2Cloud - OpenExpo 2018Arsys
 

Similaire à Divide y Vencerás: introducción a los Microservicios (20)

Planificando el Camino azure migracion
Planificando el Camino azure migracionPlanificando el Camino azure migracion
Planificando el Camino azure migracion
 
Lagertha – Plataforma Bancaria (Orwell Group)
Lagertha – Plataforma Bancaria (Orwell Group)Lagertha – Plataforma Bancaria (Orwell Group)
Lagertha – Plataforma Bancaria (Orwell Group)
 
Proyecto final grupal gp
Proyecto final grupal gpProyecto final grupal gp
Proyecto final grupal gp
 
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
 
Jornada Workshop: "Gobernando IT en el Siglo XXI"
Jornada Workshop: "Gobernando IT en el Siglo XXI"Jornada Workshop: "Gobernando IT en el Siglo XXI"
Jornada Workshop: "Gobernando IT en el Siglo XXI"
 
11. corticon
11. corticon11. corticon
11. corticon
 
Zemsania IoT offering 2016
Zemsania IoT offering 2016Zemsania IoT offering 2016
Zemsania IoT offering 2016
 
Metodología de desarrollo e integración contínua para proyectos de BPM
Metodología de desarrollo e integración contínua para proyectos de BPMMetodología de desarrollo e integración contínua para proyectos de BPM
Metodología de desarrollo e integración contínua para proyectos de BPM
 
reduce-tech-debt-eguide.en.es.pdf
reduce-tech-debt-eguide.en.es.pdfreduce-tech-debt-eguide.en.es.pdf
reduce-tech-debt-eguide.en.es.pdf
 
Perspectivas del uso de las tecnologias cloud
Perspectivas del uso de las tecnologias cloudPerspectivas del uso de las tecnologias cloud
Perspectivas del uso de las tecnologias cloud
 
trabajofinalMejora de MetodosBet.docx
trabajofinalMejora de MetodosBet.docxtrabajofinalMejora de MetodosBet.docx
trabajofinalMejora de MetodosBet.docx
 
Tgs wp-simplify cloudcomplexityr02-150615103851-lva1-app6891
Tgs wp-simplify cloudcomplexityr02-150615103851-lva1-app6891Tgs wp-simplify cloudcomplexityr02-150615103851-lva1-app6891
Tgs wp-simplify cloudcomplexityr02-150615103851-lva1-app6891
 
Tgs wp-simplify cloudcomplexity r02
Tgs wp-simplify cloudcomplexity r02Tgs wp-simplify cloudcomplexity r02
Tgs wp-simplify cloudcomplexity r02
 
Gcg caso exito-dynamics-sl_micronext
Gcg caso exito-dynamics-sl_micronextGcg caso exito-dynamics-sl_micronext
Gcg caso exito-dynamics-sl_micronext
 
NubeAzure.pdf
NubeAzure.pdfNubeAzure.pdf
NubeAzure.pdf
 
PROCESO DE E-COMMERCE
PROCESO DE E-COMMERCEPROCESO DE E-COMMERCE
PROCESO DE E-COMMERCE
 
proceso de e-commerce
proceso de e-commerceproceso de e-commerce
proceso de e-commerce
 
20230524_Tendencias en Modernizacion , innovacion y transformacion en la nube
20230524_Tendencias en Modernizacion , innovacion y transformacion en la nube20230524_Tendencias en Modernizacion , innovacion y transformacion en la nube
20230524_Tendencias en Modernizacion , innovacion y transformacion en la nube
 
La industria inteligente y su aplicación en la administracion de empresas
La industria inteligente y su aplicación en la administracion de empresasLa industria inteligente y su aplicación en la administracion de empresas
La industria inteligente y su aplicación en la administracion de empresas
 
Road2Cloud - OpenExpo 2018
Road2Cloud - OpenExpo 2018Road2Cloud - OpenExpo 2018
Road2Cloud - OpenExpo 2018
 

Plus de Thoughtworks

Design System as a Product
Design System as a ProductDesign System as a Product
Design System as a ProductThoughtworks
 
Designers, Developers & Dogs
Designers, Developers & DogsDesigners, Developers & Dogs
Designers, Developers & DogsThoughtworks
 
Cloud-first for fast innovation
Cloud-first for fast innovationCloud-first for fast innovation
Cloud-first for fast innovationThoughtworks
 
More impact with flexible teams
More impact with flexible teamsMore impact with flexible teams
More impact with flexible teamsThoughtworks
 
Culture of Innovation
Culture of InnovationCulture of Innovation
Culture of InnovationThoughtworks
 
Developer Experience
Developer ExperienceDeveloper Experience
Developer ExperienceThoughtworks
 
When we design together
When we design togetherWhen we design together
When we design togetherThoughtworks
 
Hardware is hard(er)
Hardware is hard(er)Hardware is hard(er)
Hardware is hard(er)Thoughtworks
 
Customer-centric innovation enabled by cloud
 Customer-centric innovation enabled by cloud Customer-centric innovation enabled by cloud
Customer-centric innovation enabled by cloudThoughtworks
 
Amazon's Culture of Innovation
Amazon's Culture of InnovationAmazon's Culture of Innovation
Amazon's Culture of InnovationThoughtworks
 
When in doubt, go live
When in doubt, go liveWhen in doubt, go live
When in doubt, go liveThoughtworks
 
Don't cross the Rubicon
Don't cross the RubiconDon't cross the Rubicon
Don't cross the RubiconThoughtworks
 
Your test coverage is a lie!
Your test coverage is a lie!Your test coverage is a lie!
Your test coverage is a lie!Thoughtworks
 
Docker container security
Docker container securityDocker container security
Docker container securityThoughtworks
 
Redefining the unit
Redefining the unitRedefining the unit
Redefining the unitThoughtworks
 
Technology Radar Webinar UK - Vol. 22
Technology Radar Webinar UK - Vol. 22Technology Radar Webinar UK - Vol. 22
Technology Radar Webinar UK - Vol. 22Thoughtworks
 
A Tribute to Turing
A Tribute to TuringA Tribute to Turing
A Tribute to TuringThoughtworks
 
Rsa maths worked out
Rsa maths worked outRsa maths worked out
Rsa maths worked outThoughtworks
 

Plus de Thoughtworks (20)

Design System as a Product
Design System as a ProductDesign System as a Product
Design System as a Product
 
Designers, Developers & Dogs
Designers, Developers & DogsDesigners, Developers & Dogs
Designers, Developers & Dogs
 
Cloud-first for fast innovation
Cloud-first for fast innovationCloud-first for fast innovation
Cloud-first for fast innovation
 
More impact with flexible teams
More impact with flexible teamsMore impact with flexible teams
More impact with flexible teams
 
Culture of Innovation
Culture of InnovationCulture of Innovation
Culture of Innovation
 
Dual-Track Agile
Dual-Track AgileDual-Track Agile
Dual-Track Agile
 
Developer Experience
Developer ExperienceDeveloper Experience
Developer Experience
 
When we design together
When we design togetherWhen we design together
When we design together
 
Hardware is hard(er)
Hardware is hard(er)Hardware is hard(er)
Hardware is hard(er)
 
Customer-centric innovation enabled by cloud
 Customer-centric innovation enabled by cloud Customer-centric innovation enabled by cloud
Customer-centric innovation enabled by cloud
 
Amazon's Culture of Innovation
Amazon's Culture of InnovationAmazon's Culture of Innovation
Amazon's Culture of Innovation
 
When in doubt, go live
When in doubt, go liveWhen in doubt, go live
When in doubt, go live
 
Don't cross the Rubicon
Don't cross the RubiconDon't cross the Rubicon
Don't cross the Rubicon
 
Error handling
Error handlingError handling
Error handling
 
Your test coverage is a lie!
Your test coverage is a lie!Your test coverage is a lie!
Your test coverage is a lie!
 
Docker container security
Docker container securityDocker container security
Docker container security
 
Redefining the unit
Redefining the unitRedefining the unit
Redefining the unit
 
Technology Radar Webinar UK - Vol. 22
Technology Radar Webinar UK - Vol. 22Technology Radar Webinar UK - Vol. 22
Technology Radar Webinar UK - Vol. 22
 
A Tribute to Turing
A Tribute to TuringA Tribute to Turing
A Tribute to Turing
 
Rsa maths worked out
Rsa maths worked outRsa maths worked out
Rsa maths worked out
 

Dernier

Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 

Dernier (20)

Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 

Divide y Vencerás: introducción a los Microservicios

  • 1. Q u i t o , E n e r o 2 0 1 5 DIVIDE Y VENCERÁS Introducción a los microservicios María Gómez Aguirre
  • 2. ¿QUIÉN SOY? ▫︎Generalist dev & Agile coach ▫︎3 años en TW ▫︎6+ años desarrollo web y móvil ▫︎Trabajado en UK, India, USA y Ecuador ▫︎Múltiples proyectos usando microservicios 2
  • 4. DOMAIN DRIVEN DESIGN ▫︎Patrón de diseño de software que nos ayuda a representar el mundo real en forma de código ▫︎Promueve la colaboración entre los expertos en el giro de negocio y el equipo técnico ▫︎Basado en la evolución iterativa del modelo 4
  • 5. INTEGRACIÓN CONTÍNUA (CI) 5 ▫︎Práctica de desarrollo ▫︎Devs suben código a un servidor de control de versiones varias veces al día ▫︎Cada check-in inicia una serie de trabajos para asegurar la calidad y funcionalidad del código http://www.meranetworks.com/sites/default/files/styles/large/public/images/20122012025124.png
  • 6. ENTREGA CONTINUA (CD) 6 ▫︎Prácticas diseñadas para asegurar que el software puede ser desplegado en producción de manera segura ▫︎Cada cambio en el código se trata como un candidato potencial a salir a producción http://en.wikipedia.org/wiki/Continuous_delivery#mediaviewer/File:Continuous_Delivery_process_diagram.png
  • 7. DESPLIEGUE CONTÍNUO 7 ▫︎Más allá de la entrega contínua ▫︎Cada cambio que pasa por el proceso se despliega automáticamente en producción ▫︎No es una práctica recomendada para todas las empresas https://puppetlabs.com/sites/default/files/Continuous_Delivery_Continuous_Deployment.jpg
  • 9. VIRTUALIZACIÓN EN DEMANDA 9 ▫︎Capacidad de crear nuevas máquinas virtuales de manera automática. ▫︎Reduce los tiempos de aprovisionamiento de nuevos servidores
  • 10. AUTOMATIZACIÓN DE INFRAESTRUCTURAS 10 ▫︎Creación de procesos automáticos que configuran servidores y servicios. ▫︎Reduce fallos ya que el mismo script puede ser usado para varios ambientes.
  • 11. EQUIPOS PEQUEÑOS Y AUTÓNOMOS 11 ▫︎You build it you run it! ▫︎La responsabilidad de mantener el software en producción se comparte entre equipos de dev e infra. ▫︎Equipos pequeños son responsables de ciertas partes del código. https://twitter.com/jesse_white/status/557606536076226560
  • 12. ARQUITECTURA ORIENTADA A SERVICIOS (SOA) ▫︎Patrón de diseño en el que múltiples servicios colaboran para proveer ciertas capacidades. ▫︎Un servicio es un proceso de sistema operativo independiente. ▫︎Comunicaciones entre los servicios se hacen a través de llamadas sobre la red. 12
  • 13. ARQUITECTURA ORIENTADA A SERVICIOS (SOA) 13 Web services SOAP ESB
  • 16. CARACTERÍSTICAS ▫︎Pequeño, enfocado en hacer una sola cosa ▫︎Proceso independiente ▫︎Comunicación a través de API’s agnósticas ▫︎Altamente desacoplado 16
  • 17. HERRAMIENTAS QUE LOS HACEN POSIBLES ▫︎Entrega Continua ▫︎Automatización de infraestructuras ▫︎Virtualización por demanda ▫︎Equipos pequeños y autónomos 17
  • 18. BENEFICIOS - FLEXIBILIDAD TECNOLÓGICA 18 ▫︎La herramienta correcta para el trabajo ▫︎Impulsa la innovación con riesgos mínimos
  • 19. BENEFICIOS - ESCALABILIDAD 19 Monolíticas Micro Servicios http://about.me/faustodelatog
  • 21. BENEFICIOS - FACILIDAD DE DESPLIEGUE ▫︎Monolíticas -> Un cambio requiere que toda la aplicación se despliegue. ▫︎Microservicios -> Un cambio solo requiere el despliegue del servicio afectado ▫︎Despliegues más rápidos y menos arriesgados ▫︎Reduce el tiempo de salida a producción (time to market) 21
  • 22. BENEFICIOS - DISTRIBUCIÓN DE RESPONSABILIDADES ▫︎División de servicios entre equipos más pequeños ▫︎Evita posibles conflictos en el código ▫︎Promueve la productividad 22
  • 23. BENEFICIOS - REUSABILIDAD DE FUNCIONALIDADES 23 ▫︎Un servicio puede ser usado por múltiples clientes. http://expertintegratedsystemsblog.com/wp-content/uploads/2014/06/LEGO.jpg
  • 24. BENEFICIOS - FACILIDAD DE REEMPLAZO ▫︎Al ser pequeños son más fácil de eliminar, juntar o separar. ▫︎No existe el apego emocional al código. 24
  • 25. RIESGOS ▫︎Mantenibilidad de la infraestructura ▫︎Acciones: automatizar la creación de nuevos microservicios. ▫︎Rendimiento ▫︎Acciones: pruebas de rendimiento y revisión de procesos ▫︎Despliegue ▫︎Acciones: uso de los mismos scripts o procesos automáticos para desplegar en todos los ambientes 25
  • 26. RIESGOS ▫︎Monitoreo y logging ▫︎Acciones: centralizar los logs (Logstash). Uso de métricas y herramientas de consulta de estado (New Relic). ▫︎Dependencias ▫︎Acciones: pruebas de contrato 26
  • 27. ¿POR QUÉ NO USAR LIBRERÍAS? ▫︎Aportan reusabilidad y acceso a la misma funcionalidad desde varios sitios. ▫︎Pero: ▫︎Tienen que estar escritas en el mismo lenguaje o correr en la misma plataforma ▫︎Un cambio en una librería significa un despliegue en todos sus clientes ▫︎Conclusión: ▫︎Son una buena opción para evitar duplicidad en el código, pero no deberíamos basar la arquitectura en ellas. 27
  • 28. MANOS A LA OBRA 28
  • 30. PAPEL DEL ARQUITECTO TOWN PLANNER 30
  • 31. PAPEL DEL ARQUITECTO TOWN PLANNER ▫︎No hace planos sino que traza líneas que ayudan a delimitar zonas. 31 https://flic.kr/p/ofKn1e
  • 32. PAPEL DEL ARQUITECTO TOWN PLANNER ▫︎Pasa tiempo con el equipo, entiende sus desafíos y discute las ideas con ellos. 32
  • 33. PAPEL DEL ARQUITECTO CITY PLANNER ▫︎Se asegura de que las funcionalidades implementadas son las adecuadas y agregan valor al cliente. 33
  • 34. PAPEL DEL ARQUITECTO CITY PLANNER ▫︎Se adapta a los cambios (tanto del negocio como técnicos) 34
  • 36. DEFINICIÓN DE PRINCIPIOS Y PRÁCTICAS 36 couple of years. This can be printed nicely on a singlesheet of paper and shared around, and each idea is simple enough to be held in the average developer’s head. There is of course more detail behind each point here, but being able to articulate this in summary form is very useful. Figure 2-1. A real-world example of principles and practicesNewman, S., Building Microservices, Available at: http://shop.oreilly.com/product/0636920033158.do [Accessed February 2, 2015].
  • 37. DEFINICIÓN DE ESTÁNDARES MÍNIMOS ▫︎Monitoreo ▫︎ Estado de los servicios ▫︎ Tiempos de respuesta ▫︎ …. 37
  • 38. DEFINICIÓN DE ESTÁNDARES MÍNIMOS ▫︎Microcontainers para ayudar al desarrollo ▫︎ JVM: Dropwizard ▫︎ Ruby: Sinatra ▫︎ .NET: Nancy 38
  • 39. DEFINICIÓN DE ESTÁNDARES MÍNIMOS ▫︎Interfaces ▫︎ 1 o 2 tecnologías soportadas ▫︎ ¿Cómo manejamos paginación? ▫︎ Versionamiento de servicios 39
  • 40. DEFINICIÓN DE ESTÁNDARES MÍNIMOS ▫︎Deuda técnica ▫︎ ¿Cómo la manejamos y la damos seguimiento? ▫︎ ¿Cómo la socializamos? 40
  • 42. DEFINICIÓN DE ESTÁNDARES MÍNIMOS ▫︎Pruebas de contrato ▫︎ Para integración con otros servicios 42 http://martinfowler.com/bliki/images/integrationContractTest/sketch.png
  • 46. GREENFIELD PROJECT ▫︎Empieza con un servicio hasta que el sistema evolucione y te “pida” que lo extraigas a otro. 46
  • 48. Mi Sistema BROWN-FIELD PROJECT ▫︎Empieza por identificar los diferentes contextos que existen en la organización (ventas, inventario, clientes….) 48 Ventas Productos Clientes
  • 49. BROWN-FIELD PROJECT ▫︎Separa estos contextos en paquetes y trata de analizar las dependencias a nivel de código. Si existen, elimínalas. 49
  • 50. Mi Sistema BROWN-FIELD PROJECT ▫︎Elige el contexto que más se va a beneficiar si lo separas (distribución de trabajo, carga, tiempos de respuesta, tecnología…) 50 Ventas Productos Clientes
  • 51. BROWN-FIELD PROJECT ▫︎Elimina la integración a nivel de Bases de datos (usa llamadas a servicios en vez de llamadas a BD). 51 Figure 6-2. Foreign-key relationship So how do we fix things here? Well, we need to make a change in two places. Firstly, we need to stop the Finance code reaching into the LineItem table, as this table really belongs to the Catalog code, and we don’t want database integration happening once CatalogandFinanceareservicesintheirownrights.Thequickestwaytodothisisrather than having the code in Finance reach into the LineItem table, instead have expose the data via an API call in the Catalog package that the Finance code can call. This API call will be the forerunner of a call we will make over the wire, as we see in Figure 6-3. Figure 6-3. Post removal of the foreign key relationship At this point it becomes clear that we may well end up having to make two database calls to generate the report. This is correct. And the same thing will happen if these are two separate services too. Typically concerns around performance get raised. I have a fairly easy answer to that - how fast does your system need to be? And how fast is it now? If you can test its current performance and know what good performance looks like, then you should feel confident in making a change. Sometimes making one thing slower in exchange for other things is the right thing to do, especially if slower is still perfectly acceptable. Butwhatabouttheforeignkeyrelationship?Well,welosethisalltogether.Thisbecomes a constraint we need to now manage in our resulting services rather than in the database level. Example: Shared Static Data Newman, S., Building Microservices, Available at: http://shop.oreilly.com/product/0636920033158.do [Accessed February 2, 2015].
  • 52. YOU MUST BE THIS TALL TO DO MICROSERVICES ▫︎ Madurez técnica (TDD, o por lo menos alta cobertura de tests en todos los niveles). ▫︎ No separación Devs vs Infraestructura (if you build it you own it) ▫︎ Integración y entrega continua como elementos básicos. 52
  • 53. MAS INFO ▫︎Divide y Vencerás 53