sgce 2014 micro services

46
µ services Domingo Suarez Torres @domix

Upload: domingo-suarez-torres

Post on 24-Apr-2015

790 views

Category:

Technology


0 download

DESCRIPTION

Material de la charla impartida en SGCE 2014 sobre micro services

TRANSCRIPT

Page 1: SGCE 2014 micro services

µ services

Domingo Suarez Torres @domix

Page 2: SGCE 2014 micro services

$ whoami

Page 3: SGCE 2014 micro services

$ whoami

• Parte del inmobiliario de Software Gurú

Page 4: SGCE 2014 micro services

$ whoami

• JVM Developer

• Chief Architect @ Grupo Expansión

Page 5: SGCE 2014 micro services

Agenda

• SOA

• REST

• micro services

Page 6: SGCE 2014 micro services

Service Oriented Architecture

Page 7: SGCE 2014 micro services

SOA• SOA implica demasiadas cosas. En un mundo

ideal:

• Deseable que las aplicaciones desaparezcan

• Existen core services que proveen lógica de negocio y datos

• UI que sirven de agregadores y aplican presentaciones.

Page 8: SGCE 2014 micro services

SOA• SOA implica demasiadas cosas.

• Comunicación entre sistemas usando una estructura estándar, generalmente un dialecto basado en XML. "CORBA with angle brackets"

• WS-*. Infierno de XML.

• Mensajería asíncrona para transferir documentos. Enterprise Application Integration (EAI)

Page 9: SGCE 2014 micro services

SOA• Riesgos y problemas principales:

• Demasiada carga, muchas veces innecesaria.

• Costosas implementaciones, tanto en consultoría como en herramientas y runtimes. No olvidemos la operación.

• Complejidad innecesaria.

• Vendor lock-in

Page 10: SGCE 2014 micro services

Alternativas al típico SOA

• Soluciones in-house usando frameworks típicos

• OpenSource runtimes & tools

Page 11: SGCE 2014 micro services

¿Necesitamos SOA?

Page 12: SGCE 2014 micro services

¿Que tipo de organización eres?

Page 13: SGCE 2014 micro services

REST

• Todo lo que puedo decirles sobre REST probablemente sea una mentira (refraseando a un amigo @tomaslin)

Page 14: SGCE 2014 micro services

RESTafarians dicen:

Page 15: SGCE 2014 micro services

REST

• JSON sobre HTTP

• ¿Hypermedia?

• Hypermedia APIs

Page 16: SGCE 2014 micro services

designinghypermediaapis.com

Page 17: SGCE 2014 micro services

Developer Experience

• En el SXSW de 2014 Jeremiah Lee hablo de ‘Developer Experience’ DX

http://developerexperience.org

Page 18: SGCE 2014 micro services

http://dx.jeremiahlee.com

Page 19: SGCE 2014 micro services

Diseño de APIs REST simples

Page 20: SGCE 2014 micro services

http://dx.jeremiahlee.com

Page 21: SGCE 2014 micro services

Micro services

Page 22: SGCE 2014 micro services

µ services• Estilo arquitectónico

• Cada servicio funcional o un conjunto muy pequeño se ejecutan como procesos independientes.

• Generalmente usan protocolos ligeros y estándar como HTTP.

• Despliegue independiente.

• Pueden o no contener todos los recursos que necesitan. Es decir usan otros servicios para funcionar.

Page 23: SGCE 2014 micro services

µ services

• Pueden estar escritos en diferentes lenguajes y ejecutarse en diversos runtimes.

• Pueden usar diferentes mecanismos de almacenaje. Relacionales o no-relacionales.

• Es común que los datos no estén centralizados.

Page 24: SGCE 2014 micro services

µ services• El enfoque es muy similar a SOA.

• La idea principal es no tener paquetes monolíticos de servicios desplegables.

• Los paquetes monolíticos de servicios es la manera natural de construir servicios.

• Con el tiempo es difícil mantener un paquete monolítico.

• Base enorme de código. Paquetes enormes para el despliegue que toma bastante tiempo en despliegue.

Page 25: SGCE 2014 micro services

Servicios monolíticos• Cambios “pequeños” necesitan desplegar el

paquete completo.

• Dependiendo el entorno y la deuda técnica, muchas veces implica hacer despliegues en horas no productivas y tener downtimes.

• A la larga el código termina muy acoplado entre servicios internos.

Page 26: SGCE 2014 micro services

Componentes en µ services• La idea es construir componentes, siempre ha sido

nuestro sueño poder rehusar y conectar componentes existentes.

• Hemos logrado esto parcialmente usando librerías de componentes. Que al final se convierten en dependencias de nuestros servicios. Con todo lo que ello implica.

• Los servicios son componentes que se ejecutan fuera de nuestros procesos. Solo conocemos la interfaz.

Page 27: SGCE 2014 micro services

Diseño• En diseños monolíticos, es común que existan

diversos equipos acorde a cada capa definida. Vista, lógica de negocio, datos, etc.

• Algunos cambios implican que todos los equipos participen, para una organización significa costo.

• La organización para construir microservices implica que el equipo sea cross-functional, con habilidades para cubrir todas las capas necesarias para cada servicio. Los servicios se organizan en torno a la capacidad de negocio.

Page 28: SGCE 2014 micro services

µ services es sobre el ownership del producto

Page 29: SGCE 2014 micro services

Toolkits

Page 30: SGCE 2014 micro services
Page 31: SGCE 2014 micro services

Dropwizard• Muy maduro, Yammer lo usa.

• Basado en estándares como JAX-RS con Jersey

• Jackson para JSON

• Muy amistoso para DevOps, usa Metrics para monitorear salud de los servicios.

• Incluye Jetty y no necesita un AppServer para ejecutarse. !Mira mamá, sin AppServer¡

Page 32: SGCE 2014 micro services
Page 33: SGCE 2014 micro services
Page 34: SGCE 2014 micro services
Page 35: SGCE 2014 micro services

Ratpack

Page 36: SGCE 2014 micro services

Ratpack

• Súper simple toolkit para crear webapps, como APIs

• Construido sobre Apache Netty. !Mira mamá, sin AppServer¡

Page 37: SGCE 2014 micro services
Page 38: SGCE 2014 micro services

Spring Boot

• Usa la base de Spring Framework

• Soporte para todas las tecnologías de Pivotal

• Se ejecuta sobre Apache Tomcat empotrado

• !Mira mamá, sin AppServer¡

Page 39: SGCE 2014 micro services

Despliegue

Page 40: SGCE 2014 micro services

The AppServer is DEAD

Page 41: SGCE 2014 micro services

DevOps• ¿Recuerdan que el tema de microservices es

sobre ownership?

• También en despliegue, no solo se trata de entregar el código y dejar que los SysAdmins se hagan pelotas.

• Los servicios deben incluir monitoreo para que la operación sea más sencilla.

Page 42: SGCE 2014 micro services

API management• Ciertos requerimientos no funcionales no deben ser

implementados en los microservices.

• Existen diversas herramientas para aplicar ciertos servicios necesarios como:

• Directorio/Descubrimiento

• Seguridad

• Monitoreo

• Métricas

• Escalamiento/Aprovisionamiento

Page 43: SGCE 2014 micro services

Una opción más

• Al final la organización debe analizar que opción es la ideal para si misma.

• SOAP/WS-* no son la única opción.

• ESB es fantástico si se usa adecuadamente con mensajería.

Page 44: SGCE 2014 micro services

Y como dice el @chochosmx: !

“No hagan WebServices por convivir”

Page 45: SGCE 2014 micro services

Preguntas

[email protected]

!http://twitter.com/domix

Page 46: SGCE 2014 micro services

Créditos de las fotos• https://www.flickr.com/photos/kenmainr/9099640785

• https://www.flickr.com/photos/katsrcool/12311382904

• https://www.flickr.com/photos/universalpops/6830228354

• https://www.flickr.com/photos/jeezny/3477733058

• https://www.flickr.com/photos/estherase/128983854

• https://www.flickr.com/photos/thelord89/8375835939/

• https://www.flickr.com/photos/seattlemunicipalarchives/2516780900

• https://www.flickr.com/photos/dvids/9523755479