t3chfest 2016 - Implementando microservicios, como y por que

Preview:

Citation preview

Except where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0/

Implementando MicroserviciosCómo y por qué

Leganés, 11 y 12 de febrero

Fátima Casaú Pérez

@fatimacasau

8 años de experiencia como ingeniero de software2 últimos años en Scrum MasterTecnologías Java, Spring, Groovy, GrailsGreach, Spring IO, SpringOne2GX, T3chFest, CAS, AOS…Madrid Spring User Group Hobby: Cocina y repostería

Punto de partida

Aplicaciones Monolíticas

Aplicaciones monolíticas

Aplicaciones monolíticas

http://martinfowler.com/articles/microservices.html

Aplicaciones monolíticas

http://martinfowler.com/articles/microservices.html

Aplicaciones monolíticas

http://martinfowler.com/articles/microservices.html

Aplicaciones monolíticas

Arquitectura 3 capas•UI•App•DataBase

http://martinfowler.com/articles/microservices.html

Aplicaciones monolíticas

Arquitectura 3 capas•UI•App•DataBase

http://martinfowler.com/articles/microservices.html

Manejo de una sola aplicación:● Desarrollo● Testing● Despliegue● Escalado

Aplicaciones monolíticas

Problemas

¿Por qué? Aplicaciones monolíticas vs. microservicios

Problemas• Añadir nuevas funcionalidades

¿Por qué? Aplicaciones monolíticas vs. microservicios

Problemas• Añadir nuevas funcionalidades

• Difícil de encajar

¿Por qué? Aplicaciones monolíticas vs. microservicios

Problemas• Añadir nuevas funcionalidades

• Difícil de encajar• Incremento de posibles errores

¿Por qué? Aplicaciones monolíticas vs. microservicios

Problemas• Añadir nuevas funcionalidades

• Difícil de encajar• Incremento de posibles errores• Mayores dependencias -> código más inestable y menos

mantenible

¿Por qué? Aplicaciones monolíticas vs. microservicios

Problemas• Añadir nuevas funcionalidades

• Difícil de encajar• Incremento de posibles errores• Mayores dependencias -> código más inestable y menos

mantenible• Re-desplegar toda la app

¿Por qué? Aplicaciones monolíticas vs. microservicios

Problemas• Añadir nuevas funcionalidades

• Difícil de encajar• Incremento de posibles errores• Mayores dependencias -> código más inestable y menos

mantenible• Re-desplegar toda la app• Bajo “Time to market”

¿Por qué? Aplicaciones monolíticas vs. microservicios

Problemas

¿Por qué? Aplicaciones monolíticas vs. microservicios

Problemas• Requerimientos no funcionales

¿Por qué? Aplicaciones monolíticas vs. microservicios

Problemas• Requerimientos no funcionales

• Escalabilidad

¿Por qué? Aplicaciones monolíticas vs. microservicios

Problemas• Requerimientos no funcionales

• Escalabilidad• Escalado en su totalidad

¿Por qué? Aplicaciones monolíticas vs. microservicios

Problemas• Requerimientos no funcionales

• Escalabilidad• Escalado en su totalidad

• Respuesta frente a fallos

¿Por qué? Aplicaciones monolíticas vs. microservicios

Problemas• Requerimientos no funcionales

• Escalabilidad• Escalado en su totalidad

• Respuesta frente a fallos• Un error o caída afecta a toda la app

¿Por qué? Aplicaciones monolíticas vs. microservicios

Solución:

¿Por qué? Aplicaciones monolíticas vs. microservicios

Solución: Microservicios

¿Por qué? Aplicaciones monolíticas vs. microservicios

Solución: Microservicios

¿Por qué? Aplicaciones monolíticas vs. microservicios

http://martinfowler.com/articles/microservices.html

Solución: Microservicios

¿Por qué? Aplicaciones monolíticas vs. microservicios

http://martinfowler.com/articles/microservices.html

Solución: Microservicios

¿Por qué? Aplicaciones monolíticas vs. microservicios

http://martinfowler.com/articles/microservices.html

Solución: Microservicios

¿Por qué? Aplicaciones monolíticas vs. microservicios

http://martinfowler.com/articles/microservices.html

Single Responsibility Principle: A class should have one, and only one, reason to change.

Agile Software Development, Principles, Patterns, and PracticesRobert C. Martin

Single Responsibility Principle

Eficiencia

Ventajas

Simplicidad

Time to market

Independencia

Heterogeneidad

Alta disponibilidad

Cubo de escalabilidad

"The Art of Scalability" Martin Abbott y Michael Fisher

"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

Ley de Conway

Organización en torno a capacidades de negocio

http://martinfowler.com/articles/microservices.html

Organización en torno a capacidades de negocio

http://martinfowler.com/articles/microservices.html

Automatización - Continuous Delivery

Agile - Devops Roadmap

Casos de éxito

Meetup: Arquitecturas basadas en microservicios, Miguel Garrido, Raúl Galán - https://youtu.be/2SnWpn1pCOs

¿Cómo? Arquitectura

¿Cómo? Desarrollo

EjemploDesarrollo de

microservicios con Spring Boot

(http://start.spring.io)(https://spring.io/guides/gs/accessing-data-rest)

Gracias!