Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot

3,676 views

Published on

Taller para comparar rapidamente algunos frameworks para hacer MicroServicios

Published in: Software
  • Be the first to comment

SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot

  1. 1. Herramientas para APIs Workshop. Una breve comparación Lima, Perú. Diciembre 2015
  2. 2. REST Representational State Transfer
  3. 3. Lo que no es REST • No es un estándar • No es un protocolo • No es un framework • No es una tecnología
  4. 4. ¿Que es REST? • Es un estilo de arquitectura. • Un patrón de diseño validado para construir aplicaciones escalables y con bajo acoplamiento. • Una manera de dividir un sistema en partes más pequeñas, de tal manera que el sistema completo funcione mejor en entornos distribuidos. • Especifica un conjunto de restricciones arquitecturales.
  5. 5. Estilo de arquitectura • Es un conjunto coordinado de restricciones arquitecturales que restringen los roles y características de los elementos arquitecturales y las relaciones permitidas entre esos elementos • Un estilo puede ser aplicado a muchas arquitectura • Una arquitectura puede consistir de muchos estilos
  6. 6. Fundamentos de REST • Recursos • Representaciones • Operaciones • Hypertexto • Statelessness (La habilidad/estado de no almacenar estado)
  7. 7. Recursos • Sustantivos, no verbos. • Abstracción de información: una cosa, entidad o un evento. Cualquier cosa que pueda ser nombrada. • Granularidad amplia (coarse grained), no granularidad fina (fine grained). • Un recurso puede ser una colección de entidades. • Se identifica por URIs
  8. 8. WebService SOAP/RPC
  9. 9. WebService REST
  10. 10. Representaciones • Información recuperada de los recursos. • Información de los recursos más metadata con datos de control sobre el formato del recurso. • Formatos: HTML, XML, JSON, Atom, etc. • Además puede contener información sobre las operaciones/acciones disponibles para el recurso (links a otras URIs). Se conocen también como transiciones de la representación actual.
  11. 11. Restricciones de REST • Estilo de arquitectura cliente/servidor • Servidor sin estado (statelessness) • El cliente es responsable de guardar el estado (sesión, credenciales) • Cacheable • Los datos se deben de etiquetar como cacheables y no-cacheables • Sistema en capas • Intermediarios para mejorar la escalabilidad del sistema. • Balanceo de cargas
  12. 12. Restricciones de REST • Interfaces uniformes • Identificación de recursos • Manipulación de recursos a través de representaciones • Mensajes descriptivos: metadata y datos de control. • Hypermedia como el motor del estado de la aplicación. • Hypermedia As The Engine of Application State (HATEOAS) • Enlaces en los datos para navegar la aplicación. • hypermedia-driven system.
  13. 13. RESTful APIs (WebServices) • Deben hacer 2 cosas: • Usar HTTP correctamente. • Servir respuestas hypermedia • Por lo tanto, en lugar de llamarse RESTful APIs se deberían de llamar “Hypermedia APIs” http://blog.steveklabnik.com/posts/2012-02-23-rest-is-over
  14. 14. MicroFrameworks Herramientas con enfoques “ligeros”
  15. 15. Dropwizard
  16. 16. Dropwizard • Dropwizard reúne, bibliotecas maduras y estables en un paquete sencillo y ligero. • Dropwizard cuenta con soporte para configuración, métricas de la aplicación, bitácora y herramientas operativas
  17. 17. Bibliotecas • Jetty (HTTP) • Jersey (REST) • Jackson (JSON) • Metrics (Métricas) • Google Guava • Logback • Hibernate Validator • Apache HTTPClient • JDBI (JDBC) • Liquibase • FreeMarker • Joda Time
  18. 18. Usarlo con Maven/Gradle
  19. 19. Componentes clave • Configuration • Application • Representation Classes • Resources • HealthChecks
  20. 20. Empaquetado • Dropwizard genera un ‘jar’ GORDO. • No requiere servidor de aplicaciones • El jar generado es auto ejecutable • Ideal para despliegues en: • La nube • Contenedores (Docker)
  21. 21. 01-quick-start Inicio rápido con Dropwizard
  22. 22. 01-quick-start • Revisar • Configuración • Aplicación • Métricas • Empaquetado • Ejecución
  23. 23. 02-api-rest • Revisar • Resource • Registro en Dropwizard • HealthCheck • Registro
  24. 24. 03-api-rest-jdbc • Revisar • Dao • Mapper • Resource
  25. 25. Ratpack • Conjunto de bibliotecas para construir aplicaciones HTTP modernas. (non-blocking, reactive) • Construido en Java 8, con Netty y principios de Reactive Programming. • Despliegue basado en FAT jars
  26. 26. Objetivos de Ratpack • Ser rápido, scalable y con manejo eficiente de recursos • Usar programación non-blocking • Ser flexible para integrarse con otras herramientas y bibliotecas
  27. 27. Que no busca Ratpack • Ser una solución “full stack” • Proveer una arquitectura o framework para “business logic”
  28. 28. Soporte de Bibliotecas • Hikari (Database Connection Pooling) • Dropwizard Metrics • Reactive Extensions (RxJava) • Netflix Hystrix (Circuit Breaker) • Jackson • Netty
  29. 29. Enfoque de desarrollo • Similar a Dropwizard, Ratpack desea ser una herramienta simple. • Sus APIs no dependen en nada de ninguna especificación Java (Servlet, JEE) • Adopta paradigmas muy novedosos para resolver problemas
  30. 30. Spring Boot
  31. 31. Spring Boot • Basado en Spring Framework y todo su ecosistema • API REST • Soporte para JAX-RS (Jersey) • Spring MVC • Hateoas (Hypermedia)
  32. 32. Spring Boot • A diferencia de los anteriores. Spring Boot es un framework completo. • Provee soporte para un amplio rango de tecnologías: • Persistencia. JDBC, JPA, NoSQL • Redis, ElasticSearch, MongoDB • WebSockets • JMS, AMQP
  33. 33. Spring Boot • Soporta toda la especificación JEE • Spring cloud • Netflix OSS • El despliegue puede ser en un contenedor tradicional (Tomcat, WAS, JBoss) • Puede ejecutarse como un FAT jar.

×