Microservicios sobre tecnologías Pivotal y VMware

Post on 11-Feb-2017

321 views 1 download

Transcript of Microservicios sobre tecnologías Pivotal y VMware

MEETUP: Microservicios sobre tecnologías Pivotal y VMware

Madrid, 28 de octubre de 2015#userviciosmadrid

service creation

service deployment

service management

service consumption

herramientas desarrolladores

plataformas desarrolladores

automatización integración

hacia producción

service automation &

brokerageIT service mgmt

business mobility

plataformas de servicios para usuario final

cloud platforms (PaaS)

cloud platforms (IaaS)

cloud platforms (on premises)

servicios datos & DR

VMware vRealize

#userviciosmadrid

WHO IS PIVOTAL?

...

Pivotal

#userviciosmadrid

MODERN DIGITAL PRODUCT DEVELOPMENT

SpeedScaleCost

Development (People)• Integrated Teams (Business & Development)• Agile Practices• Continuous Delivery

Platform• Optimized for Modern Development

• Continuous Delivery • Microservices• Secure/Manageable

• Open, Multi-Cloud (private & public)• Broad Ecosystem

Analytics & Learning• Cloud-Native: Scale-out,

Cost-effective• Choice of Semantics

(SQL to Deep Learning)• Open, Broad Ecosystem

“Become a software company”

#userviciosmadrid

CIERRE

feedback

siguiente meetup: 28 de enero de 2016VMware Photon y Pivotal Lattice:

minicontenedores linux y apps nativas cloud, en tu portátil

#userviciosmadrid

‹#›© 2014 Pivotal Software, Inc. All rights reserved.© 2015 Pivotal Software, Inc. All rights reserved.

Aplicaciones nativas cloudAntonio Gallego - agallego@pivotal.ioField Engineering - Pivotal

© 2015 Pivotal Software, Inc. All rights reserved.

Cómo solía ser (y sigue siendo…)

Middleware

OS

Middleware

OS

7

© 2015 Pivotal Software, Inc. All rights reserved.

Consecuencias

Paradas de servidor para actualizacionesUn pequeño cambio o arreglo - nueva versiónEscalabilidad - vertical / horizontal?Dimensionamiento para picos - Crystal ball

analysisTM

Silos operacionales

8

‹#›© 2014 Pivotal Software, Inc. All rights reserved.

El mundo ha cambiado

9

© 2015 Pivotal Software, Inc. All rights reserved.

Y, ¿en qué ha cambiado?

Computación distribuidaDesacoplamiento de componentesMejores latencias en las comunicacionesDependenciasEscalas según creces - contamos con los

recursos que necesitamos justo ahoraEficiencias en costes

10

© 2015 Pivotal Software, Inc. All rights reserved.

Cloud impone sus reglas1.Oh! Se cayó!!!• Prepárate para lo

peor2.Ver (1)

A central truth in cloud computing is that failure is inevitable.  As systems scale, we expect nodes tofail ungracefully in random and unexpected ways, networks to experience sudden partitions, and messages to be dropped at any time.

Rather than fight this truth, we embrace it.HEATHER NAKAMA

Software Engineer, Azure Search

11

© 2015 Pivotal Software, Inc. All rights reserved.

¿Qué significa esto para las aplicaciones?EscalabilidadInter-dependenciasDependencia de la plataformaDependencia de la ubicaciónResistencia / disponibilidadTrazabilidad

12

© Copyright 2014 Pivotal. All rights reserved. 13

Escalabilidad• Las aplicaciones tradicionales se

modelaron como monolíticas para que su modelo de despliegue fuera más sencillo

• En ellas, varios servicios se combinan en una sola aplicación, masiva

• Este modelo conlleva un desaprovechamiento de los recursos disponibles cuando queremos escalar la aplicación

• Ciertos componentes pueden apropiarse de recursos de otros procesos situados en la misma máquina, que los necesiten después

© Copyright 2014 Pivotal. All rights reserved. 14

© Copyright 2014 Pivotal. All rights reserved. 15

Y, ¿cómo deberíamos de escalar esta app?

© Copyright 2014 Pivotal. All rights reserved. 16

InterdependenciasLas aplicaciones monolíticas definen

las dependencias entre sus componentes dentro del código

Es difícil aplicar un modelo independiente de escalado en arquitectura orientadas a servicios

© Copyright 2014 Pivotal. All rights reserved. 17

Especificidad de la plataformaimport javax.servlet.http.HttpServlet;

import com.ibm.servlet.engine.webapp.*;

Las dependencias a fuego en el entorno de ejecución hacen que las aplicaciones no sean portablesTanto si las llevan a nivel de

código con dependencias de runtime

Como si las llevan a nivel de SO (dependiendo del planificador, p.ej. cron)

© Copyright 2014 Pivotal. All rights reserved. 18

Especificidad de la ubicación: escribiendo a disco• Las aplicaciones a menudo necesitan acceder a disco, por ejemplo,

ante submits de formularios con datos binarios, o contenidos en la mayoría de sistemas CMS (p.ej. Wordpress)

• La vida de los contenedores es corta, por lo que se ejecutan en diferente HW cada vez que necesitan arrancar. Depender de un sistema de ficheros local es una gran dependencia que algunas aplicaciones imponen en tiempo de ejecución.

• Algunos proveedores de CMS soportan el uso de servicios externos como S3 para proporcionar un mecanismo persistente a esta necesidad.

© Copyright 2014 Pivotal. All rights reserved. 19

Especificidad de la ubicación: ubicación del servicioCache.hosts=10.68.27.41,10.68.27.42

#naming does not help eitherCache.hosts=cacheserver1, cacheserver2

Fichero de propiedades incorporado en el despliegue de la aplicación

© 2015 Pivotal Software, Inc. All rights reserved.

12 factor Apps - 12factor.net1.Codebase

One codebase tracked in revision control, many deploys

2.DependenciesExplicitly declare and isolate dependencies

3.ConfigStore config in the environment

4.Backing ServicesTreat backing services as attached resources

5.Build, release, runStrictly separate build and run stages

6.ProcessesExecute the app as one or more stateless processes

7.Port bindingExport services via port binding

8.ConcurrencyScale out via the process model

9.DisposabilityMaximize robustness with fast startup and graceful shutdown

10.Dev/prod parityKeep development, staging, and production as similar as possible

11.LogsTreat logs as event streams

12.Admin processesRun admin/management tasks as one-off processes

20

© Copyright 2014 Pivotal. All rights reserved.

Arquitectura monolítica

21

BD Relacional

Data Access

Service

HTML JavaScript MVC

Service

Aplicación monolíticaBrowser

© Copyright 2014 Pivotal. All rights reserved.

Architectura de µservicios

22

HTTP

HTTP

HTTP

HTTP

HTTP

HTTP

AMQPAMQP

BD Relacional

Almacén Clave/Valor

BD gráf.

© Copyright 2014 Pivotal. All rights reserved. 23

Los principios de una arquitectura de µserviciosModularidad basada en servicios de componentesCiclos de cambio desacoplados / Habilitada para cambios

frecuentesEscalado eficiente de recursosComponentes individuales, más asimilables por los nuevos

desarrolladoresPreparada para escalar los equipos de desarrolloElimina el compromiso a largo plazo con la infraestructura y

tecnología de soporte

© Copyright 2014 Pivotal. All rights reserved.

Organizada alrededor de las capacidades del negocio

24

Acceso a datos

Servicio

HTML JavaScript MVC

Servicio

Especialistas en interfaz de usuario

Especialistas en m

iddleware

DBAs

Capacidad de negocio

Capacidad de negocio

Capacidad de negocioTorres de

equipos funcionales

http://martinfowler.com/articles/µservices.html#OrganizedAroundBusinessCapabilities

Torres de arquitecturas de aplicación

Equipos transversales

Arquitecturas basadasen µservicios

‹#›© 2015 Pivotal Software, Inc. All rights reserved.

Gestionar de forma fiable los datos de configuración proporcionados a los µservicios a través del entorno?

Actualizar simultáneamente los datos de configuración a todas las instancias donde se ejecutan los µservicios?

Asegurar que los µservicios pueden descubrirse entre sí, a pesar de ser “eliminables”? (Factor nº9)

Manejar el balanceo de carga entre µservicios del mismo tipo? (Factor nº 8)Protegerse frente a fallos en cascada cuando todas las instancias del mismo µservicio

fallen?Asegurar la resistencia del sistema restaurando automáticamente los µservicios

caídos?

Pero 12 factores no son suficientesLos sistemas distribuidos son complicados!!!

Ya que, ¿cómo conseguimos…

25

‹#›© 2015 Pivotal Software, Inc. All rights reserved.

Contamos con ayuda…

Spring CloudPara añadir rápidamente

patrones de sistemas distribuidos a tus

µservicios

conPivotal Cloud

FoundryEjecuta eficientemente

tus µservicios!

26

‹#›© 2015 Pivotal Software, Inc. All rights reserved.

27

© 2015 Pivotal Software, Inc. All rights reserved.

Eureka - Registro y autodescubrimiento de servicios

28

© 2015 Pivotal Software, Inc. All rights reserved.

Eureka - Registro y autodescubrimiento de servicios

@SpringBootApplication@EnableEurekaServer //@EnableDiscoveryClientpublic class RegistryApplication {

public static void main(String[] args) {SpringApplication.run(RegistryApplication.class, args);

}}

29

© 2015 Pivotal Software, Inc. All rights reserved.

Ribbon - balanceo de carga en el cliente

30

© 2015 Pivotal Software, Inc. All rights reserved.

@Autowired@LoadBalancedprivate RestTemplate restTemplate;

Quote quote = restTemplate.getForObject("http://quotes/quote/{symbol}", Quote.class, symbol);

Ribbon - balanceo de carga en el cliente

31

© 2015 Pivotal Software, Inc. All rights reserved.

Hystrix - el rompe-circuitos

32

© 2015 Pivotal Software, Inc. All rights reserved.

@HystrixCommand(fallbackMethod = "getCompaniesFallback")public List<CompanyInfo> getCompanies(String name) {

CompanyInfo[] infos = restTemplate.getForObject("http://quotes/company/{name}", CompanyInfo[].class, name);

return Arrays.asList(infos);}

private List<CompanyInfo> getCompaniesFallback(String name) {List<CompanyInfo> infos = new ArrayList<>();return infos;

}

Hystrix - el rompe-circuitos

33

© 2015 Pivotal Software, Inc. All rights reserved.

Servidor de configuraciones

34

‹#›© 2015 Pivotal Software, Inc. All rights reserved.

Spring Cloud Services para PCFhttps://network.pivotal.io/products/p-spring-cloud-services

35

‹#›© 2014 Pivotal Software, Inc. All rights reserved. ‹#›© 2014 Pivotal Software, Inc. All rights reserved.

En resumen…

36

© 2015 Pivotal Software, Inc. All rights reserved.

ResumenEs un mundo diferente, nuevoQue desacopla las aplicaciones de la

infraestructuraY que desacopla los componentes de

aplicaciónPodemos utilizar plataformas que automatizan

la ejecución de las aplicaciones Contamos también con un marco de trabajo

para simplificar el desarrollo de aplicaciones nativas cloud

37

38