SlideShare una empresa de Scribd logo
1 de 59
Descargar para leer sin conexión
1
MicroServicios
Techiepoint #2
Sergio Maurenzi
Arquitectura e Innovación – IT
Telecom Argentina
30-Abr-2015
Descomposición de Servicios
Arquitectura Monolítica vs. SOA vs. Microservicios
Características de los Microservicios
Ventajas / Desventajas
Primeras experiencias
Conclusión
AGENDA
Descomposición de Servicios
Arquitectura Monolítica vs. SOA vs. Microservicios
Características de los Microservicios
Ventajas / Desventajas
Primeras experiencias
Conclusión
AGENDA
Arquitectura Monolítica
Aplicación simple – tres capas
Arquitectura Monolítica - Simple CRM
• Simple de desarrollar - único ciclo de vida;
IDEs preparadas para una única aplicación
• Simples de Probar (testing) - pruebas
sobre una única aplicación
• Simples de desplegar - copiar un archivo o
un directorio, a un equipo (servidor)
• Simple de escalar - se pueden ejecutar
múltiples copias de la aplicación detrás de
un balanceador de carga.
Arquitectura Monolítica – Pros y Contras
Para aplicaciones
simples …
Para aplicaciones
complejas …
• Complejo manejar Cambios – por cada
cambio, à redesplegar toda la aplicación.
+Riesgos à +miedos à +tests à +tiempos à
+coordinación y +comunicación
• Mayores tiempos – el negocio debe esperar
• Calidad no garantizada – por dependencias
en el código.
• Escalabilidad y Resilencia disminuida – si
un módulo requiere escalar lo debemos hacer
para toda la aplicación. Si algo falla, todo deja
de funcionar.
SOA (Service Oriented Architecture)
La Arquitectura Orientada a Servicios (SOA) es un paradigma de arquitectura para
diseñar y desarrollar sistemas distribuidos. Las soluciones SOA han sido creadas para
satisfacer los objetivos de negocio los cuales incluyen facilidad y flexibilidad de
integración con sistemas legados, alineación directa a los procesos de negocio
reduciendo costos de implementación, innovación de servicios a clientes y una
adaptación ágil ante cambios incluyendo reacción temprana ante la competitividad.(*)
(*) Wikipedia
http://es.wikipedia.org/wiki/Arquitectura_orientada_a_servicios
Qué son los Microservicios?
Microservicios*: es un estilo de arquitectura, una
forma de desarrollar una aplicación, basado en un
conjunto de pequeños servicios, cada uno corriendo en
sus propios procesos y comunicándose mediante
mecanismos livianos, generalmente un recurso API de
HTTP.
Estos servicios son altamente desacoplados, construidos alrededor
de funcionalidades de negocio y desplegados de manera
independiente a través de una maquinaria de despliegue
completamente automatizada.
(*) Según Martin Fowler y James Lewis - Thoughtworks
http://martinfowler.com/articles/microservices.html
Arquitectura Monolítica vs. Microservicios
Una aplicación monolítica pone
todas sus funcionalidades en
un único proceso…
Una arquitectura de
microservicios pone cada
elemento de funcionalidad
en un servicio separado…
…y escala replicando lo
monolítico en múltiples servidores
…y escala distribuyendo dichos servicios a
través de los servidores, según se requiera
Monolítico SOA Microservicios
Monolítico vs. SOA vs. Microservicios
1990´s 2000´s 2010´s
Acoplamiento fuerte Acoplamiento débil Desacoplado
Ej. evolución arq. Monolítica a Microservicios
Monolítico C++ à Perl / C++ à Java / Scala à microservicios
Monolítico Perl à Monolítico C++ à Java à microservicios
Monolítico Rails à JS / Rails / Scala à microservicios
Monolítico Java à Java / Scala à microservicios
1) Rápido Crecimiento
2) Control de Costos
3) Aumentar la Velocidad
Drivers comunes
Descomposición de Servicios
Arquitectura Monolítica vs. Microservicios vs. SOA
Características de los Microservicios
Ventajas / Desventajas
Primeras experiencias
Conclusión
AGENDA
El cubo de escalamiento aplicativo
Eje Y: división por
función o servicio
Eje X: duplicación horizontal
Punto de
partida
Sin divisiones
Un Sistema/
Servicio
Monolítico
Muchos
Sistemas, cada
uno clonado y
balanceado x
carga
Sin divisiones
Más datos de
sector o
usuarios
Escalamiento
casi infinitoDivisión por
Servicio o
información
similar
Ej. escalamiento aplicativo en los 3 ejes
Single Responsibility Principle – Principio Responsabilidad Individual
“There should never be more than one
reason for a class to change”
Se deben reunir aquellas cosas que cambian
por la misma razón y separar aquellas cosas
que cambian por diferentes razones
(*) SRP - Principio de diseño de Programación Orientada a Objetos - Robert C. Martin
http://www.objectmentor.com/resources/articles/srp.pdf
Demasiadas
responsabilidades
en una sola cosa
pueden causar
problemas
Ej. simple: diseño de una clase que llama a un número
de móvil específico, con previa validación del mismo
Arquitectura Microservicios – Ej. CRM
Arquitectura Microservicios – Cómo interactúan los clientes?
Arquitectura Microservicios – Cómo interactúan los clientes?
Arquitectura Microservicios – Cómo interactúan los clientes?
Arquitectura Microservicios – Ej. CRM
Descomposición de Servicios
Arquitectura Monolítica vs. Microservicios vs. SOA
Características de los Microservicios
Ventajas / Desventajas
Primeras experiencias
Conclusión
AGENDA
Ventajas / Desventajas
Microservicios
• Servicios pequeños – mejor entendimiento
de los desarrolladores
• Despliegue independiente – autonomía y
velocidad en la cadena de despliegue
• Desarrollo escalable - organiza el esfuerzo
de desarrollo en varios equipos
• Aislamiento de fallas – se afecta sólo el
servicio donde se produce la falla
• Libre selección de tecnología – libera
compromiso tecnológico y habilita probar
nuevas tecnologías más fácilmente
Arquitectura Microservicios – Pros y Contras
• Mayor complejidad – desarrollo y testing mas
complejo por sistema distribuido
• Transacciones distribuidas por múltiples
servicios – manejo más complejo
• Complejidad en la implementación –
complejidad operativa de despliegue,
monitoreo y gestión
Descomposición de Servicios
Arquitectura Monolítica vs. SOA vs. Microservicios
Características de los Microservicios
Ventajas / Desventajas
Primeras experiencias
Conclusión
AGENDA
#1 Componentización a través de servicios
Componentes = Servicios, No Bibliotecas
Ley de Conway: "Any organization that designs a system (defined broadly) will produce
a design whose structure is copy of the organization's communication structure.”
-- Melvyn Conway, 1967
Especialistas UI
Especialistas
Middeware
DBAs
#2 Organizado en torno a capacidades de negocio
Organización Tradicional
#2 Organizado en torno a capacidades de negocio
Organización Microservicios
#2 Organizado en torno a capacidades de negocio
Organización en Netflix
Fuente: Adrian Cockcroft
#3 Productos, no Proyectos
#4 Extremos inteligentes, tuberías bobas
#4 Extremos inteligentes, tuberías bobas
Orquestación Coreografía
Vs.
Ej. Orquestación vs. Coreografía
1.  Crear registro de fidelidad/lealtad y acreditarle una
cantidad de puntos de bienvenida
2.  Enviarle un kit de bienvenida, a través del correo postal
3.  Enviarle un correo electrónico de bienvenida al cliente
Servicio CRM,
pasos posteriores
al alta de un
nuevo cliente
Ej. Orquestación vs. Coreografía, cont.
Ej. Orquestación vs. Coreografía, cont.
#5 Gobierno descentralizado
#6 Gestión de datos descentralizada Domain-
Driven
Design
• DDD es un patrón de diseño
• Dominio: contexto del problema real de negocio
• Modelo: abstracción del dominio
• Software design ≠ Code Design
• Metodologías: Waterfalls vs. Agile
• Colaboración entre expertos de dominio y
especialistas de software
• Idioma común = Ubiquitous Language
#6 Gestión de datos descentralizada CQRS
#6 Gestión de datos descentralizada Persistencia
Políglota
#7 Automatización de la infraestructura
Clave:
1.  Automatización
2.  Control de versiones
y gestión de las
configuraciones
3.  Arquitectura
#8 Diseño pensado en las fallas
bulkheads
circuit breakers
timeouts
#8 Diseño pensado en las fallas
timeouts
Ej. Portabilidad Numérica Móvil: Mensajes SOAP
portin
#8 Diseño pensado en las fallas
circuit breakers
#8 Diseño pensado en las fallas
circuit breakers
Ej. Problemas con robot “validar IMSI”
#8 Diseño pensado en las fallas
bulkheads
Ej. Separación ventas internas OC / externas AC
#8 Diseño pensado en las fallas
Descomposición de Servicios
Arquitectura Monolítica vs. SOA vs. Microservicios
Características de los Microservicios
Ventajas / Desventajas
Primeras experiencias
Conclusión
AGENDA
Hecho en casa
CRM Prepago
Web (FE)
API Gateway
•  Solución Front-End
ejecutada en el browser
utilizando JavaScript,
Angular, Jquery, Bootstrap.
•  Basada en Código Abierto
•  Tecnologías y prácticas de
uso en el mercado
•  Soporte comunitario de las
herramientas
•  Construcción de servicios
(FE / BE) por equipos
diferentes de desarrollo.
BOPCRM Prepago (BE)
Ej. CRM Prepago
Utiliza
consulta
completa
de línea
para el
estado
Consulta Lite de
saldo
Consulta histórico
de recargas
Consulta de
linea
Ej. CRM Prepago Web (FE)
Preventa /
CatálogoVenta
productos
Ej. CRM Prepago – Servicios Back End (BE)
Ej. CRM Prepago – Equipo
Descomposición de Servicios
Arquitectura Monolítica vs. SOA vs. Microservicios
Características de los Microservicios
Ventajas / Desventajas
Primeras experiencias
Conclusión
AGENDA
Recap. Microservicios
ü  Servicios pequeños
ü  Contexto acotado, hacen una cosa bien
ü  Organizados en torno a capacidades de negocio
ü  Extremos inteligentes, tuberías bobas
ü  Productos, no proyectos
ü  Tecnología heterogénea
ü  Gestión de datos descentralizada
ü  Automatización à Continuous Delivery, DevOps
ü  Diseño contemplando fallas à Organización Antifrágil
Conclusión
Los microservicios representan,
un nuevo estilo de diseño de software,
una nueva manera de optimizar en velocidad,
de reemplazar los silos por equipos de alto desempeño,
de generar una cultura de gran autonomía y
responsabilidad, en resumen…
de generar valor al negocio.
Muchas Gracias!
@sergiomaurenzi
sergiomaurenzi.blogspot.com.ar
sergio.maurenzi@personal.com.ar
ar.linkedin.com/in/sergiomaurenzi
Referencias
[1] Microservices - Martin Fowler / James Lewis
http://martinfowler.com/articles/microservices.html
[2] eBay Architecture - Randy Shoup & Dan Pritchett / Tony Ng
http://www.slideshare.net/RandyShoup/the-ebay-architecture-striking-a-balance-between-site-stability-feature-velocity-performance-and-cost
http://www.slideshare.net/tcng3716/ebay-architecture?next_slideshow=1
[3] Episode 216 - Modern Cloud-based platform - Adrian Cockcroft
http://www.se-radio.net/2014/12/episode-216-adrian-cockcroft-on-the-modern-cloud-based-platform/
[4] The Art of Scalability - Martin Abbott y Michael Fisher
http://theartofscalability.com
[5] Single Responsibility Principle - Robert C. Martin
http://programmer.97things.oreilly.com/wiki/index.php/The_Single_Responsibility_Principle
http://www.objectmentor.com/resources/articles/srp.pdf
[6] A pattern language for microservices - Chris Richardson
http://microservices.io/patterns/index.html
[7] The Conway's Law - The original paper - Melvin Conway
http://www.melconway.com/Home/Committees_Paper.html
[8] A conversation with Werner Vogels (Amazon CTO)
https://queue.acm.org/detail.cfm?id=1142065
[9] Domain-Driven Design
http://dddcommunity.org/learning-ddd/what_is_ddd/
http://www.infoq.com/resource/minibooks/domain-driven-design-quickly/en/pdf/DomainDrivenDesignQuicklyOnline.pdf
[10] Episode 218 - CQRS (Command Query Responsibility Segregation) - Udi Dahan
http://www.se-radio.net/2015/01/episode-218-udi-dahan-on-cqrs-command-query-responsibility-segregation/
Referencias, cont.
[11] Episode 221 - Continuous Delivery - Jez Humble
http://www.se-radio.net/2015/02/episode-221-jez-humble-on-continuous-delivery/
[12] The Facebook Release Process - Chuck Rossi, Presentation & video
http://www.infoq.com/presentations/Facebook-Release-Process
[13] Release It! - Design and Deploy Production-Ready Software - Michael T. Nygard, Excerpt and Review of the book
http://www.infoq.com/articles/nygard-release-it/
[14] Fault Tolerance in a High-volume Distributed System - The Netflix Tech Blog
http://techblog.netflix.com/2012/02/fault-tolerance-in-high-volume.html
[15] Introducing Hystrix for Resilience Engineering - The Netflix Tech Blog
http://techblog.netflix.com/2012/11/hystrix.html
[16] Antifragile - Nassim Nicholas Taleb
http://www.tematika.com/libros/ciencias_de_la_salud__naturales_y_divulgacion_cientifica--7/divulgacion_cientifica--1/en_general--1/
antifragil--565390.htm
[17] Chaos Monkey Released into the wild - The Netflix Tech Blog
http://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.html
[18] Tha Netflix Simian Army - The Netflix Tech Blog
http://techblog.netflix.com/search/label/chaos%20monkey
[19] Building Microservices, Designing Fine-grained Systems – Sam Newman
http://shop.oreilly.com/product/0636920033158.do
[20] Microservices: It’s not (only) the size that matters, it’s (also) how you use them - Tigerteam
https://www.tigerteam.dk/2014/microservices-its-not-only-the-size-that-matters-its-also-how-you-use-them-part-4/
Agradecimientos,
1.  Honeycomb: https://flic.kr/p/2UHtEd
2.  Stonehenge: https://flic.kr/p/5x4KLZ
3.  Belts and pulleys: https://flic.kr/p/Be77A
4.  The EKC Studio Scale. Eastman Kodak Company: https://flic.kr/p/9vxKRp
5.  Carnegie Mellon Philharmonic: https://flic.kr/p/aQE9vi
6.  Cirque Du Soleil: Ovo - Gran Carpa Santa Fe: https://flic.kr/p/aB1Gh3
7.  Stopwatch: https://flic.kr/p/81m4L5
8.  Circuit breaker: https://flic.kr/p/Ce71k
9.  Home Made Gingerbread: https://flic.kr/p/bkq5Qt
10.  Buque Containers Maersk: http://blogs.lainformacion.com/futuretech/files/2013/09/maersk2.jpg
Dibujos a mano alzada realizados con “Tayasui Sketches for Ipad”:
https://itunes.apple.com/us/app/tayasui-sketches-draw-paint/id641900855?mt=8

Más contenido relacionado

La actualidad más candente

Evaluacion de arquitecturas
Evaluacion de arquitecturasEvaluacion de arquitecturas
Evaluacion de arquitecturas
Samis Ambrocio
 
Desarrollo basado en patrones
Desarrollo basado en patronesDesarrollo basado en patrones
Desarrollo basado en patrones
Marvin Zumbado
 

La actualidad más candente (20)

Microservices architecture
Microservices architectureMicroservices architecture
Microservices architecture
 
Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To Microservices
 
Microservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and KafkaMicroservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and Kafka
 
Evaluacion de arquitecturas
Evaluacion de arquitecturasEvaluacion de arquitecturas
Evaluacion de arquitecturas
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
Aplicaciones Distribuidas
Aplicaciones DistribuidasAplicaciones Distribuidas
Aplicaciones Distribuidas
 
Princípios S.O.L.I.D.
Princípios S.O.L.I.D.Princípios S.O.L.I.D.
Princípios S.O.L.I.D.
 
Orquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixOrquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace Netflix
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
 
Sistemas distribuidos 2
Sistemas distribuidos 2Sistemas distribuidos 2
Sistemas distribuidos 2
 
Argentesting 2017 - Pruebas de software basadas en riesgos
Argentesting 2017 - Pruebas de software basadas en riesgosArgentesting 2017 - Pruebas de software basadas en riesgos
Argentesting 2017 - Pruebas de software basadas en riesgos
 
1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
 
MuleSoft y la Arquitectura Orientada a Microservicios (MSA)
MuleSoft y la Arquitectura Orientada a Microservicios (MSA)MuleSoft y la Arquitectura Orientada a Microservicios (MSA)
MuleSoft y la Arquitectura Orientada a Microservicios (MSA)
 
Architecture: Microservices
Architecture: MicroservicesArchitecture: Microservices
Architecture: Microservices
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architecture
 
Arquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidosArquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidos
 
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
 
Desarrollo basado en patrones
Desarrollo basado en patronesDesarrollo basado en patrones
Desarrollo basado en patrones
 
Diseño de software
Diseño de softwareDiseño de software
Diseño de software
 

Destacado

Comparativa iso 29119 PRESSMAN
Comparativa iso 29119 PRESSMANComparativa iso 29119 PRESSMAN
Comparativa iso 29119 PRESSMAN
Oscar Limachi
 
Procesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITILProcesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITIL
Oscar Limachi
 

Destacado (10)

Implementando una Arquitectura de Microservicios
Implementando una Arquitectura de MicroserviciosImplementando una Arquitectura de Microservicios
Implementando una Arquitectura de Microservicios
 
Arquitecturas de microservicios - Codemotion 2014
Arquitecturas de microservicios  -  Codemotion 2014Arquitecturas de microservicios  -  Codemotion 2014
Arquitecturas de microservicios - Codemotion 2014
 
Divide y Vencerás: introducción a los Microservicios
Divide y Vencerás: introducción a los MicroserviciosDivide y Vencerás: introducción a los Microservicios
Divide y Vencerás: introducción a los Microservicios
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de Microservicios
 
Comparativa iso 29119 PRESSMAN
Comparativa iso 29119 PRESSMANComparativa iso 29119 PRESSMAN
Comparativa iso 29119 PRESSMAN
 
2 Aenor Solo Pruebas 2009
2 Aenor Solo Pruebas 20092 Aenor Solo Pruebas 2009
2 Aenor Solo Pruebas 2009
 
Procesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITILProcesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITIL
 
Programación de Drones (Vehículos aéreos no tripulados)
Programación de Drones (Vehículos aéreos no tripulados)Programación de Drones (Vehículos aéreos no tripulados)
Programación de Drones (Vehículos aéreos no tripulados)
 
MicroServices: Advantages ans Disadvantages
MicroServices: Advantages ans DisadvantagesMicroServices: Advantages ans Disadvantages
MicroServices: Advantages ans Disadvantages
 
From SOA to MSA
From SOA to MSAFrom SOA to MSA
From SOA to MSA
 

Similar a Microservicios

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
 

Similar a Microservicios (20)

Microservicios y Gestion de APIs
Microservicios y Gestion de APIsMicroservicios y Gestion de APIs
Microservicios y Gestion de APIs
 
¿Que son los microservicios?
¿Que son los microservicios?¿Que son los microservicios?
¿Que son los microservicios?
 
Open southcode arquitectura microservicios
Open southcode   arquitectura microserviciosOpen southcode   arquitectura microservicios
Open southcode arquitectura microservicios
 
Microservicios con Net Core y Azure Service Fabric
Microservicios con Net Core y Azure Service FabricMicroservicios con Net Core y Azure Service Fabric
Microservicios con Net Core y Azure Service Fabric
 
Trabajo de microservicios
Trabajo de microserviciosTrabajo de microservicios
Trabajo de microservicios
 
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
 
Trabajo de microservicios
Trabajo de microserviciosTrabajo de microservicios
Trabajo de microservicios
 
M vs m
M vs mM vs m
M vs m
 
An evening with... Microservices - Session 1
An evening with... Microservices - Session 1An evening with... Microservices - Session 1
An evening with... Microservices - Session 1
 
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...
 
SOA en la Práctica: WCF & WSSF
SOA en la Práctica: WCF & WSSFSOA en la Práctica: WCF & WSSF
SOA en la Práctica: WCF & WSSF
 
Patrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración ModernaPatrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración Moderna
 
Evolución TI en el sector de Telecomunicaciones
Evolución TI en el sector de TelecomunicacionesEvolución TI en el sector de Telecomunicaciones
Evolución TI en el sector de Telecomunicaciones
 
Presentacion Capaintermedia
Presentacion CapaintermediaPresentacion Capaintermedia
Presentacion Capaintermedia
 
Introducción SOA - Cloud Computing
Introducción SOA - Cloud ComputingIntroducción SOA - Cloud Computing
Introducción SOA - Cloud Computing
 
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
 
Casos exito santiago toribio almatech
Casos exito santiago toribio almatechCasos exito santiago toribio almatech
Casos exito santiago toribio almatech
 
Arquitectura_de_microservicios.pdf
Arquitectura_de_microservicios.pdfArquitectura_de_microservicios.pdf
Arquitectura_de_microservicios.pdf
 
¿Qué debemos hacer desde Tecnología para estar alineados con la Transformac...
¿Qué debemos hacer desde Tecnología para estar alineados con la Transformac...¿Qué debemos hacer desde Tecnología para estar alineados con la Transformac...
¿Qué debemos hacer desde Tecnología para estar alineados con la Transformac...
 
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 

Microservicios

  • 1. 1 MicroServicios Techiepoint #2 Sergio Maurenzi Arquitectura e Innovación – IT Telecom Argentina 30-Abr-2015
  • 2. Descomposición de Servicios Arquitectura Monolítica vs. SOA vs. Microservicios Características de los Microservicios Ventajas / Desventajas Primeras experiencias Conclusión AGENDA
  • 3. Descomposición de Servicios Arquitectura Monolítica vs. SOA vs. Microservicios Características de los Microservicios Ventajas / Desventajas Primeras experiencias Conclusión AGENDA
  • 7. • Simple de desarrollar - único ciclo de vida; IDEs preparadas para una única aplicación • Simples de Probar (testing) - pruebas sobre una única aplicación • Simples de desplegar - copiar un archivo o un directorio, a un equipo (servidor) • Simple de escalar - se pueden ejecutar múltiples copias de la aplicación detrás de un balanceador de carga. Arquitectura Monolítica – Pros y Contras Para aplicaciones simples … Para aplicaciones complejas … • Complejo manejar Cambios – por cada cambio, à redesplegar toda la aplicación. +Riesgos à +miedos à +tests à +tiempos à +coordinación y +comunicación • Mayores tiempos – el negocio debe esperar • Calidad no garantizada – por dependencias en el código. • Escalabilidad y Resilencia disminuida – si un módulo requiere escalar lo debemos hacer para toda la aplicación. Si algo falla, todo deja de funcionar.
  • 8. SOA (Service Oriented Architecture) La Arquitectura Orientada a Servicios (SOA) es un paradigma de arquitectura para diseñar y desarrollar sistemas distribuidos. Las soluciones SOA han sido creadas para satisfacer los objetivos de negocio los cuales incluyen facilidad y flexibilidad de integración con sistemas legados, alineación directa a los procesos de negocio reduciendo costos de implementación, innovación de servicios a clientes y una adaptación ágil ante cambios incluyendo reacción temprana ante la competitividad.(*) (*) Wikipedia http://es.wikipedia.org/wiki/Arquitectura_orientada_a_servicios
  • 9. Qué son los Microservicios? Microservicios*: es un estilo de arquitectura, una forma de desarrollar una aplicación, basado en un conjunto de pequeños servicios, cada uno corriendo en sus propios procesos y comunicándose mediante mecanismos livianos, generalmente un recurso API de HTTP. Estos servicios son altamente desacoplados, construidos alrededor de funcionalidades de negocio y desplegados de manera independiente a través de una maquinaria de despliegue completamente automatizada. (*) Según Martin Fowler y James Lewis - Thoughtworks http://martinfowler.com/articles/microservices.html
  • 10. Arquitectura Monolítica vs. Microservicios Una aplicación monolítica pone todas sus funcionalidades en un único proceso… Una arquitectura de microservicios pone cada elemento de funcionalidad en un servicio separado… …y escala replicando lo monolítico en múltiples servidores …y escala distribuyendo dichos servicios a través de los servidores, según se requiera
  • 11. Monolítico SOA Microservicios Monolítico vs. SOA vs. Microservicios 1990´s 2000´s 2010´s Acoplamiento fuerte Acoplamiento débil Desacoplado
  • 12. Ej. evolución arq. Monolítica a Microservicios Monolítico C++ à Perl / C++ à Java / Scala à microservicios Monolítico Perl à Monolítico C++ à Java à microservicios Monolítico Rails à JS / Rails / Scala à microservicios Monolítico Java à Java / Scala à microservicios 1) Rápido Crecimiento 2) Control de Costos 3) Aumentar la Velocidad Drivers comunes
  • 13. Descomposición de Servicios Arquitectura Monolítica vs. Microservicios vs. SOA Características de los Microservicios Ventajas / Desventajas Primeras experiencias Conclusión AGENDA
  • 14. El cubo de escalamiento aplicativo Eje Y: división por función o servicio Eje X: duplicación horizontal Punto de partida Sin divisiones Un Sistema/ Servicio Monolítico Muchos Sistemas, cada uno clonado y balanceado x carga Sin divisiones Más datos de sector o usuarios Escalamiento casi infinitoDivisión por Servicio o información similar
  • 16. Single Responsibility Principle – Principio Responsabilidad Individual “There should never be more than one reason for a class to change” Se deben reunir aquellas cosas que cambian por la misma razón y separar aquellas cosas que cambian por diferentes razones (*) SRP - Principio de diseño de Programación Orientada a Objetos - Robert C. Martin http://www.objectmentor.com/resources/articles/srp.pdf Demasiadas responsabilidades en una sola cosa pueden causar problemas Ej. simple: diseño de una clase que llama a un número de móvil específico, con previa validación del mismo
  • 18. Arquitectura Microservicios – Cómo interactúan los clientes?
  • 19. Arquitectura Microservicios – Cómo interactúan los clientes?
  • 20. Arquitectura Microservicios – Cómo interactúan los clientes?
  • 22. Descomposición de Servicios Arquitectura Monolítica vs. Microservicios vs. SOA Características de los Microservicios Ventajas / Desventajas Primeras experiencias Conclusión AGENDA
  • 24. • Servicios pequeños – mejor entendimiento de los desarrolladores • Despliegue independiente – autonomía y velocidad en la cadena de despliegue • Desarrollo escalable - organiza el esfuerzo de desarrollo en varios equipos • Aislamiento de fallas – se afecta sólo el servicio donde se produce la falla • Libre selección de tecnología – libera compromiso tecnológico y habilita probar nuevas tecnologías más fácilmente Arquitectura Microservicios – Pros y Contras • Mayor complejidad – desarrollo y testing mas complejo por sistema distribuido • Transacciones distribuidas por múltiples servicios – manejo más complejo • Complejidad en la implementación – complejidad operativa de despliegue, monitoreo y gestión
  • 25. Descomposición de Servicios Arquitectura Monolítica vs. SOA vs. Microservicios Características de los Microservicios Ventajas / Desventajas Primeras experiencias Conclusión AGENDA
  • 26. #1 Componentización a través de servicios Componentes = Servicios, No Bibliotecas
  • 27. Ley de Conway: "Any organization that designs a system (defined broadly) will produce a design whose structure is copy of the organization's communication structure.” -- Melvyn Conway, 1967 Especialistas UI Especialistas Middeware DBAs #2 Organizado en torno a capacidades de negocio Organización Tradicional
  • 28. #2 Organizado en torno a capacidades de negocio Organización Microservicios
  • 29. #2 Organizado en torno a capacidades de negocio Organización en Netflix Fuente: Adrian Cockcroft
  • 30. #3 Productos, no Proyectos
  • 31. #4 Extremos inteligentes, tuberías bobas
  • 32. #4 Extremos inteligentes, tuberías bobas Orquestación Coreografía Vs.
  • 33. Ej. Orquestación vs. Coreografía 1.  Crear registro de fidelidad/lealtad y acreditarle una cantidad de puntos de bienvenida 2.  Enviarle un kit de bienvenida, a través del correo postal 3.  Enviarle un correo electrónico de bienvenida al cliente Servicio CRM, pasos posteriores al alta de un nuevo cliente
  • 34. Ej. Orquestación vs. Coreografía, cont.
  • 35. Ej. Orquestación vs. Coreografía, cont.
  • 37. #6 Gestión de datos descentralizada Domain- Driven Design • DDD es un patrón de diseño • Dominio: contexto del problema real de negocio • Modelo: abstracción del dominio • Software design ≠ Code Design • Metodologías: Waterfalls vs. Agile • Colaboración entre expertos de dominio y especialistas de software • Idioma común = Ubiquitous Language
  • 38. #6 Gestión de datos descentralizada CQRS
  • 39. #6 Gestión de datos descentralizada Persistencia Políglota
  • 40. #7 Automatización de la infraestructura Clave: 1.  Automatización 2.  Control de versiones y gestión de las configuraciones 3.  Arquitectura
  • 41. #8 Diseño pensado en las fallas bulkheads circuit breakers timeouts
  • 42. #8 Diseño pensado en las fallas timeouts Ej. Portabilidad Numérica Móvil: Mensajes SOAP portin
  • 43. #8 Diseño pensado en las fallas circuit breakers
  • 44. #8 Diseño pensado en las fallas circuit breakers Ej. Problemas con robot “validar IMSI”
  • 45. #8 Diseño pensado en las fallas bulkheads Ej. Separación ventas internas OC / externas AC
  • 46. #8 Diseño pensado en las fallas
  • 47. Descomposición de Servicios Arquitectura Monolítica vs. SOA vs. Microservicios Características de los Microservicios Ventajas / Desventajas Primeras experiencias Conclusión AGENDA
  • 49. CRM Prepago Web (FE) API Gateway •  Solución Front-End ejecutada en el browser utilizando JavaScript, Angular, Jquery, Bootstrap. •  Basada en Código Abierto •  Tecnologías y prácticas de uso en el mercado •  Soporte comunitario de las herramientas •  Construcción de servicios (FE / BE) por equipos diferentes de desarrollo. BOPCRM Prepago (BE) Ej. CRM Prepago
  • 50. Utiliza consulta completa de línea para el estado Consulta Lite de saldo Consulta histórico de recargas Consulta de linea Ej. CRM Prepago Web (FE)
  • 51. Preventa / CatálogoVenta productos Ej. CRM Prepago – Servicios Back End (BE)
  • 52. Ej. CRM Prepago – Equipo
  • 53. Descomposición de Servicios Arquitectura Monolítica vs. SOA vs. Microservicios Características de los Microservicios Ventajas / Desventajas Primeras experiencias Conclusión AGENDA
  • 54. Recap. Microservicios ü  Servicios pequeños ü  Contexto acotado, hacen una cosa bien ü  Organizados en torno a capacidades de negocio ü  Extremos inteligentes, tuberías bobas ü  Productos, no proyectos ü  Tecnología heterogénea ü  Gestión de datos descentralizada ü  Automatización à Continuous Delivery, DevOps ü  Diseño contemplando fallas à Organización Antifrágil
  • 55. Conclusión Los microservicios representan, un nuevo estilo de diseño de software, una nueva manera de optimizar en velocidad, de reemplazar los silos por equipos de alto desempeño, de generar una cultura de gran autonomía y responsabilidad, en resumen… de generar valor al negocio.
  • 57. Referencias [1] Microservices - Martin Fowler / James Lewis http://martinfowler.com/articles/microservices.html [2] eBay Architecture - Randy Shoup & Dan Pritchett / Tony Ng http://www.slideshare.net/RandyShoup/the-ebay-architecture-striking-a-balance-between-site-stability-feature-velocity-performance-and-cost http://www.slideshare.net/tcng3716/ebay-architecture?next_slideshow=1 [3] Episode 216 - Modern Cloud-based platform - Adrian Cockcroft http://www.se-radio.net/2014/12/episode-216-adrian-cockcroft-on-the-modern-cloud-based-platform/ [4] The Art of Scalability - Martin Abbott y Michael Fisher http://theartofscalability.com [5] Single Responsibility Principle - Robert C. Martin http://programmer.97things.oreilly.com/wiki/index.php/The_Single_Responsibility_Principle http://www.objectmentor.com/resources/articles/srp.pdf [6] A pattern language for microservices - Chris Richardson http://microservices.io/patterns/index.html [7] The Conway's Law - The original paper - Melvin Conway http://www.melconway.com/Home/Committees_Paper.html [8] A conversation with Werner Vogels (Amazon CTO) https://queue.acm.org/detail.cfm?id=1142065 [9] Domain-Driven Design http://dddcommunity.org/learning-ddd/what_is_ddd/ http://www.infoq.com/resource/minibooks/domain-driven-design-quickly/en/pdf/DomainDrivenDesignQuicklyOnline.pdf [10] Episode 218 - CQRS (Command Query Responsibility Segregation) - Udi Dahan http://www.se-radio.net/2015/01/episode-218-udi-dahan-on-cqrs-command-query-responsibility-segregation/
  • 58. Referencias, cont. [11] Episode 221 - Continuous Delivery - Jez Humble http://www.se-radio.net/2015/02/episode-221-jez-humble-on-continuous-delivery/ [12] The Facebook Release Process - Chuck Rossi, Presentation & video http://www.infoq.com/presentations/Facebook-Release-Process [13] Release It! - Design and Deploy Production-Ready Software - Michael T. Nygard, Excerpt and Review of the book http://www.infoq.com/articles/nygard-release-it/ [14] Fault Tolerance in a High-volume Distributed System - The Netflix Tech Blog http://techblog.netflix.com/2012/02/fault-tolerance-in-high-volume.html [15] Introducing Hystrix for Resilience Engineering - The Netflix Tech Blog http://techblog.netflix.com/2012/11/hystrix.html [16] Antifragile - Nassim Nicholas Taleb http://www.tematika.com/libros/ciencias_de_la_salud__naturales_y_divulgacion_cientifica--7/divulgacion_cientifica--1/en_general--1/ antifragil--565390.htm [17] Chaos Monkey Released into the wild - The Netflix Tech Blog http://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.html [18] Tha Netflix Simian Army - The Netflix Tech Blog http://techblog.netflix.com/search/label/chaos%20monkey [19] Building Microservices, Designing Fine-grained Systems – Sam Newman http://shop.oreilly.com/product/0636920033158.do [20] Microservices: It’s not (only) the size that matters, it’s (also) how you use them - Tigerteam https://www.tigerteam.dk/2014/microservices-its-not-only-the-size-that-matters-its-also-how-you-use-them-part-4/
  • 59. Agradecimientos, 1.  Honeycomb: https://flic.kr/p/2UHtEd 2.  Stonehenge: https://flic.kr/p/5x4KLZ 3.  Belts and pulleys: https://flic.kr/p/Be77A 4.  The EKC Studio Scale. Eastman Kodak Company: https://flic.kr/p/9vxKRp 5.  Carnegie Mellon Philharmonic: https://flic.kr/p/aQE9vi 6.  Cirque Du Soleil: Ovo - Gran Carpa Santa Fe: https://flic.kr/p/aB1Gh3 7.  Stopwatch: https://flic.kr/p/81m4L5 8.  Circuit breaker: https://flic.kr/p/Ce71k 9.  Home Made Gingerbread: https://flic.kr/p/bkq5Qt 10.  Buque Containers Maersk: http://blogs.lainformacion.com/futuretech/files/2013/09/maersk2.jpg Dibujos a mano alzada realizados con “Tayasui Sketches for Ipad”: https://itunes.apple.com/us/app/tayasui-sketches-draw-paint/id641900855?mt=8