webinar arquitectura de microservicios

Post on 11-Jan-2017

281 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

Webinar “Arquitectura de Microservicios”

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

Expositor: Domingo Suárez (México)

Ingeniero de software por 17 años, trabajando principalmente en el

ecosistema JVM para diferentes sectores como Financiero, Medios de

comunicación, eCommerce y consultoría.

He sido expositor en congresos como SOALatam (Perú), Spring IO

(Madrid),Grails eXchange (Londres), BarcelonaJUG, Mexico City JVM Group.

Actualmente soy CTO en una compañía de Inteligencia Artificial

desarrollando tecnología con Deep Learning y sistemas distribuidos.

@domix

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

Acerca de Nosotros

Empresa líder de capacitación en las principales y más

reconocidas tecnologías, metodologías y marcos de

referencia de TI, tales como SOA, BPM, Cloud, Arquitectura

Empresarial TOGAF, Hadoop-Big Data de Cloudera,

Certificaciones ISO: ISO 27001, ISO 31000, ISO 22301, ISO

27005, entre otros. Proveemos entrenamiento en toda la

región.

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

Te invitamos a participar en nuestro próximo curso on-line en vivo

Microservices Workshop

Inicio 30 de mayo. Informes: informes@cac-ti.com

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

Agenda

• SOA • REST • Microservices • Arquitectura • Frameworks • Herramientas

Service Oriented Architecture

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.

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)

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

Alternativas al típico SOA

• Soluciones in-house usando frameworks típicos

• OpenSource runtimes & tools

¿Necesitamos SOA?

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

¿Que tipo de organización eres?

REST

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

RESTafarians dicen:

REST

• JSON sobre HTTP

• ¿Hypermedia?

• Hypermedia APIs

designinghypermediaapis.com

Developer Experience

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

http://developerexperience.org

http://dx.jeremiahlee.com

Diseño de APIs REST simples

Micro services

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

Microservices

• 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 o mensajería (JMS, AMQP, etc).

• Despliegue independiente. • Pueden o no contener todos los recursos que

necesitan. Es decir usan otros servicios para funcionar.

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

Microservices

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

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

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

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

Microservices

• 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.

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

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.

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

Componentes en Microservices

• La idea es construir componentes, siempre ha sido nuestro sueño poder rehusar y conectar componentes existentes.

• Hemos logrado esto parcialmente usando bibliotecas 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.

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

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.

Arquitectura

Toolkits

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

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¡

Ratpack@Grab('org.slf4j:slf4j-simple:1.7.16') @Grab('io.ratpack:ratpack-groovy:1.2.0') import static ratpack.groovy.Groovy.ratpack

ratpack { handlers { get(":name") { render "Hello $pathTokens.name!" } get { render "Hello World!" } } }

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

Ratpack

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

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

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

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¡

Despliegue

The AppServer is DEAD

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

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

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

Cosas a observar

• Complejidad de un sistema distribuido • Hacer testing es mas complejo • Transacciones distribuidas. Difícil

implementar • Deployment • Consumo de recursos

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

Sistemas distribuidos (Falacias)

• La red es confiable. • La latencia es cero. • Ancho de banda es infinita. • La red es segura. • Topología no cambia. • Hay un administrador. • El costo del transporte es cero. • La red es homogénea.

HerramientasFacilitando el computo distribuido

https://github.com/Netflix/hystrix

Spring CloudIntegra un conjunto de herramientas para sistemas

distribuidos, a pesar del nombre no solo sirve para el cloud

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

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.

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

Te invitamos a participar en nuestro próximo curso on-line en vivo

Microservices Workshop

Inicio 30 de mayo. Informes: informes@cac-ti.com

Centro de Alta Capacitación en Tecnologías de la Información E-mail: informes@cac-ti.com Web: http://www.cac-ti.com

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

top related