Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Microservicios sobre tecnologías Pivotal y VMware

407 visualizaciones

Publicado el

Presentación del meetup celebrado el 28-10-2015 en Madrid. Este meetup práctico se centró en tecnologías Spring, Pivotal Cloud Foundry y VMware.

Vimos la estructura de 4 microservicios escritos con Spring Boot. Éstos utilizó Spring Cloud para conectar a bases de datos de backend y Spring MVC para utilizar APIs RESTful. Los microservicios se registran automáticamente y descubren otros microservicios utilizando Eureka.

Todos estos servicios se ejecutaron en Cloud Foundry, plataforma cloud native que funciona, entre otras, sobre tecnologías de VMware como vSphere, VMware Integrated Openstack y vCloud Air. Vimos qué ventajas aporta cada tecnología y sus avanzadas herramientas de administración del ciclo de vida del microservicio, como VMware vRealize Code Stream.

Pivotal Cloud Foundry incorpora de forma nativa autoescalado, balanceo de cargas, inyección de configuraciones, monitorización de la salud de las apps y servicios, contenedores, logging. Es la tecnología perfecta para apps agile.

Publicado en: Tecnología
  • Sé el primero en comentar

Microservicios sobre tecnologías Pivotal y VMware

  1. 1. MEETUP: Microservicios sobre tecnologías Pivotal y VMware Madrid, 28 de octubre de 2015 #userviciosmadrid
  2. 2. service creation service deployment service management service consumption herramientas desarrolladores plataformas desarrolladores automatización integración hacia producción service automation & brokerage IT 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
  3. 3. WHO IS PIVOTAL? ... Pivotal #userviciosmadrid
  4. 4. MODERN DIGITAL PRODUCT DEVELOPMENT Speed Scale Cost 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
  5. 5. CIERRE feedback siguiente meetup: 28 de enero de 2016 VMware Photon y Pivotal Lattice: minicontenedores linux y apps nativas cloud, en tu portátil #userviciosmadrid
  6. 6. ‹#›© 2014 Pivotal Software, Inc. All rights reserved.© 2015 Pivotal Software, Inc. All rights reserved. Aplicaciones nativas cloud Antonio Gallego - agallego@pivotal.io Field Engineering - Pivotal
  7. 7. © 2015 Pivotal Software, Inc. All rights reserved. Cómo solía ser (y sigue siendo…) Middleware OS Middleware OS 7
  8. 8. © 2015 Pivotal Software, Inc. All rights reserved. Consecuencias Paradas de servidor para actualizaciones Un pequeño cambio o arreglo - nueva versión Escalabilidad - vertical / horizontal? Dimensionamiento para picos - Crystal ball analysisTM Silos operacionales 8
  9. 9. ‹#›© 2014 Pivotal Software, Inc. All rights reserved. El mundo ha cambiado 9
  10. 10. © 2015 Pivotal Software, Inc. All rights reserved. Y, ¿en qué ha cambiado? Computación distribuida Desacoplamiento de componentes Mejores latencias en las comunicaciones Dependencias Escalas según creces - contamos con los recursos que necesitamos justo ahora Eficiencias en costes 10
  11. 11. © 2015 Pivotal Software, Inc. All rights reserved. Cloud impone sus reglas 1. Oh! Se cayó!!! • Prepárate para lo peor 2. Ver (1) A central truth in cloud computing is that failure is inevitable. As systems scale, we expect nodes to fail 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
  12. 12. © 2015 Pivotal Software, Inc. All rights reserved. ¿Qué significa esto para las aplicaciones? Escalabilidad Inter-dependencias Dependencia de la plataforma Dependencia de la ubicación Resistencia / disponibilidad Trazabilidad 12
  13. 13. © 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
  14. 14. © Copyright 2014 Pivotal. All rights reserved. 14
  15. 15. © Copyright 2014 Pivotal. All rights reserved. 15 Y, ¿cómo deberíamos de escalar esta app?
  16. 16. © Copyright 2014 Pivotal. All rights reserved. 16 Interdependencias Las 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
  17. 17. © Copyright 2014 Pivotal. All rights reserved. 17 Especificidad de la plataforma import 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 portables Tanto 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)
  18. 18. © 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.
  19. 19. © Copyright 2014 Pivotal. All rights reserved. 19 Especificidad de la ubicación: ubicación del servicio Cache.hosts=10.68.27.41,10.68.27.4 2 #naming does not help either Cache.hosts=cacheserver1, cacheserver2 Fichero de propiedades incorporado en el despliegue de la aplicación
  20. 20. © 2015 Pivotal Software, Inc. All rights reserved. 12 factor Apps - 12factor.net 1. Codebase One codebase tracked in revision control, many deploys 2. Dependencies Explicitly declare and isolate dependencies 3. Config Store config in the environment 4. Backing Services Treat backing services as attached resources 5. Build, release, run Strictly separate build and run stages 6. Processes Execute the app as one or more stateless processes 7. Port binding Export services via port binding 8. Concurrency Scale out via the process model 9. Disposability Maximize robustness with fast startup and graceful shutdown 10.Dev/prod parity Keep development, staging, and production as similar as possible 11.Logs Treat logs as event streams 12.Admin processes Run admin/management tasks as one-off processes 20
  21. 21. © Copyright 2014 Pivotal. All rights reserved. Arquitectura monolítica 21 BD Relacional Data Access Service HTML JavaScript MVC Service Aplicación monolíticaBrowser
  22. 22. © Copyright 2014 Pivotal. All rights reserved. Architectura de µservicios 22 … HTTP HTTP HTTP HTTP HTTP HTTP AMQP AMQP BD Relacional Almacén Clave/Valor BD gráf.
  23. 23. © Copyright 2014 Pivotal. All rights reserved. 23 Los principios de una arquitectura de µservicios Modularidad basada en servicios de componentes Ciclos de cambio desacoplados / Habilitada para cambios frecuentes Escalado eficiente de recursos Componentes individuales, más asimilables por los nuevos desarrolladores Preparada para escalar los equipos de desarrollo Elimina el compromiso a largo plazo con la infraestructura y tecnología de soporte
  24. 24. © Copyright 2014 Pivotal. All rights reserved. Organizada alrededor de las capacidades del negocio 24 Acceso a datos Servicio HTML JavaScript MVC Servicio Especialistasen interfazdeusuario Especialistasen middleware DBAs Capacidadde negocio Capacidadde negocio Capacidadde negocio Torres de equipos funcionales http://martinfowler.com/articles/µservices.html#OrganizedAroundBusinessCapabilities Torres de arquitecturas de aplicación Equipos transversales Arquitecturas basadas en µservicios
  25. 25. ‹#›© 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 suficientes Los sistemas distribuidos son complicados!!! Ya que, ¿cómo conseguimos… 25
  26. 26. ‹#›© 2015 Pivotal Software, Inc. All rights reserved. Contamos con ayuda… Spring Cloud Para añadir rápidamente patrones de sistemas distribuidos a tus µservicios con Pivotal Cloud Foundry Ejecuta eficientemente tus µservicios! 26
  27. 27. ‹#›© 2015 Pivotal Software, Inc. All rights reserved. 27
  28. 28. © 2015 Pivotal Software, Inc. All rights reserved. Eureka - Registro y autodescubrimiento de servicios 28
  29. 29. © 2015 Pivotal Software, Inc. All rights reserved. Eureka - Registro y autodescubrimiento de servicios @SpringBootApplication @EnableEurekaServer //@EnableDiscoveryClient public class RegistryApplication { public static void main(String[] args) { SpringApplication.run(RegistryApplication.class, args); } } 29
  30. 30. © 2015 Pivotal Software, Inc. All rights reserved. Ribbon - balanceo de carga en el cliente 30
  31. 31. © 2015 Pivotal Software, Inc. All rights reserved. @Autowired @LoadBalanced private RestTemplate restTemplate; Quote quote = restTemplate.getForObject("http://quotes/quote/{symbol}", Quote.class, symbol); Ribbon - balanceo de carga en el cliente 31
  32. 32. © 2015 Pivotal Software, Inc. All rights reserved. Hystrix - el rompe-circuitos 32
  33. 33. © 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
  34. 34. © 2015 Pivotal Software, Inc. All rights reserved. Servidor de configuraciones 34
  35. 35. ‹#›© 2015 Pivotal Software, Inc. All rights reserved. Spring Cloud Services para PCF https://network.pivotal.io/products/p-spring-cloud-services 35
  36. 36. ‹#›© 2014 Pivotal Software, Inc. All rights reserved. ‹#›© 2014 Pivotal Software, Inc. All rights reserved. En resumen… 36
  37. 37. © 2015 Pivotal Software, Inc. All rights reserved. Resumen Es un mundo diferente, nuevo Que desacopla las aplicaciones de la infraestructura Y que desacopla los componentes de aplicación Podemos 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. 38. 38

×