+ All Categories
Home > Software > SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot

SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot

Date post: 15-Apr-2017
Category:
Upload: domingo-suarez-torres
View: 3,563 times
Download: 0 times
Share this document with a friend
36
Herramientas para APIs Workshop. Una breve comparación Lima, Perú. Diciembre 2015
Transcript

Herramientas para APIsWorkshop. Una breve comparación

Lima, Perú. Diciembre 2015

RESTRepresentational State Transfer

Lo que no es REST

• No es un estándar

• No es un protocolo

• No es un framework

• No es una tecnología

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

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

Fundamentos de REST• Recursos

• Representaciones

• Operaciones

• Hypertexto

• Statelessness (La habilidad/estado de no almacenar estado)

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

WebService SOAP/RPC

WebService REST

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.

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

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.

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

MicroFrameworksHerramientas con enfoques “ligeros”

Dropwizard

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

Bibliotecas• Jetty (HTTP)

• Jersey (REST)

• Jackson (JSON)

• Metrics (Métricas)

• Google Guava

• Logback

• Hibernate Validator

• Apache HTTPClient

• JDBI (JDBC)

• Liquibase

• FreeMarker

• Joda Time

Usarlo con Maven/Gradle

Componentes clave

• Configuration

• Application

• Representation Classes

• Resources

• HealthChecks

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)

01-quick-startInicio rápido con Dropwizard

01-quick-start• Revisar

• Configuración

• Aplicación

• Métricas

• Empaquetado

• Ejecución

02-api-rest

• Revisar

• Resource

• Registro en Dropwizard

• HealthCheck

• Registro

03-api-rest-jdbc

• Revisar

• Dao

• Mapper

• Resource

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

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

Que no busca Ratpack

• Ser una solución “full stack”

• Proveer una arquitectura o framework para “business logic”

Soporte de Bibliotecas• Hikari (Database Connection Pooling)

• Dropwizard Metrics

• Reactive Extensions (RxJava)

• Netflix Hystrix (Circuit Breaker)

• Jackson

• Netty

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

Spring Boot

Spring Boot• Basado en Spring Framework y todo su

ecosistema

• API REST

• Soporte para JAX-RS (Jersey)

• Spring MVC

• Hateoas (Hypermedia)

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

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.


Recommended