Microservicios sobre tecnologías Pivotal y VMware
-
Upload
antonio-gallego -
Category
Technology
-
view
321 -
download
1
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 - [email protected] 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