Arquitectura API Rest.

download Arquitectura API Rest.

of 63

  • date post

    12-Apr-2017
  • Category

    Technology

  • view

    559
  • download

    2

Embed Size (px)

Transcript of Arquitectura API Rest.

Arquitectura de APIs REST

Arquitectura de APIs RESTEmiliano Cenizo

ndiceLo bsico: Qu es REST?Rest en MELI - Viejo mundoRest en MELI - Nuevo mundoTecnologas interesantesProblemas divertidosPreguntas / Contacto

Lo bsico

Lo bsicoRepresentational State Transfer Arquitectura para APIs

Lo bsicoRepresentational State Transfer Arquitectura para APIs Se enfoca en los componentes y en la info que manda, pero no en los detalles especficos.

Lo bsicoRepresentational State Transfer Arquitectura para APIs Se enfoca en los componentes y en la info que manda, pero no en los detalles especficos.

Preparado para sistemas distribuidos.

Lo bsicoRepresentational State Transfer Arquitectura para APIs Se enfoca en los componentes y en la info que manda, pero no en los detalles especficos.

Preparado para sistemas distribuidos.

REST no necesariamente es a travs de Internet (http)...

Pero hoy hablaremos de REST a travs de Internet mediante los verbos

Lo bsico: Qu es REST?

Qu es REST? - Json / XML

StatelessCacheableEscalable (horizontalizable)Estandares muy bien definidosIntuitivo:GET api.mercadolibre.com/sites/MCO

Qu es REST? - Propiedades interesantes

REST en MeLi: Viejo Mundo

REST en MeLi: Viejo Mundo

REST en MeLi: Viejo Mundo

Frontends

REST en MeLi: Viejo Mundo

FrontendsBackends

REST en MeLi: Viejo Mundo

FrontendsBackendsItems

REST en MeLi: Viejo Mundo

FrontendsBackendsItemsPreguntas

REST en MeLi: Viejo Mundo

FrontendsBackendsItemsPreguntasEl gordo de la campera de cuero

REST en MeLi: Viejo MundoDeploys semanalesProbar una feature nueva era complejoPoco robusto!Altsimo acoplamientoUna base para controlarlos a todosHorizontalizar era difcil

Bardos

REST en MeLi: Nuevo Mundo

REST en MeLi: Nuevo MundoMultiples APIs Rest!Cada api controla sus responsabilidades

REST en MeLi: Nuevo Mundo

Robusto.Cada API usa la tecnologa que necesita usarCosas As A Service:VMs AASBases de datos AASHorizontalizar fue simple.Foco en nuevos devices posible.Foco en integradores posible.

Ventajas

/items/pictures/users/sites/MCO/categories/orders.../sites/MCO/search.../orders/bookmarks...REST en MeLi: Usos

REST en MeLi: Usos

REST en MeLi: UsosGET https://api.mercadolibre.com/items/MLA624442482

REST en MeLi: Usos

REST en MeLi: UsosGET https://api.mercadolibre.com/questions/search?item_id=MLA624442482

REST en MeLi: UsosGET https://api.mercadolibre.com/questions/search?item_id=MLA624442482&attributes=questions.text

Tecnologas interesantes

Tecnologas interesantes: Elastic Search

Plataforma de bsquedaSe comunica con REST + JSONOpen sourceDistribuidoSoporta full text searchMultitenant

Multi combo con Logstash + KibanaTecnologas interesantes: Elastic Search

Plataforma de bsquedaSe comunica con REST + JSONOpen sourceDistribuidoSoporta full text searchMultitenant

Multi combo con Logstash + KibanaTecnologas interesantes: Elastic Search

Sistema de cacheoFree / open sourceKey / Value por RESTFunciona en memoriaTremendamente simple de usar y adaptarTecnologas interesantes: Memcached

RabbitMQ

Apache Solr

Tecnologas interesantes: MencionesNo Rest pero vale la pena mencionar:MongoDB

Redis

Problemas divertidos

Problemtica: Configuraciones. Donde van?

Si estn en el cdigo; requieren un deploy para cambiarlas.

Problemas divertidos: Configuraciones

Problemtica: Configuraciones. Donde van?

Si estn en el cdigo; requieren un deploy para cambiarlas.

Problema puntual: Cambiar configuraciones en caliente

Archivo de configuracin?Base de datos?

Problemas divertidos: Configuraciones

Problemas divertidos: Configuraciones

API REST!POST /configs GET /configs/KEYPUT /configs/KEYCacheble!

Problemas divertidos: Configuraciones

GET payments/admin/config/BRADEXPDAYS_NONE_163717137?access_token=

Plataforma de pago de servicios de Brasil

Mecnica: hacias un POST con un ID; asincrnicamente te hacen una request para obtener todo el resto de los datos.

Problemas divertidos: Pago de servicios MLB

Problemas:

Documentacin en ingls mal traducida

Problemas divertidos: Pago de servicios MLB

Problemas:

Documentacin en ingls mal traducida

Es un GET, no?

Problemas divertidos: Pago de servicios MLB

Problemas:

Documentacin en ingls mal traducida

Es un GET, no?

No :(

Problemas divertidos: Pago de servicios MLB

Lecciones aprendidas:

Cuando te integras contra otra API, no est de ms pedir ejemplos. Muchos.

Problemas divertidos: Pago de servicios MLB

Lecciones aprendidas:

Cuando te integras contra otra API, no est de ms pedir ejemplos. Muchos.Mientras + burocrtico un proveedor; normalmente mejor adaptada la documentacin.

Problemas divertidos: Pago de servicios MLB

Lecciones aprendidas:

Cuando te integras contra otra API, no est de ms pedir ejemplos. MuchosMientras + burocrtico un proveedor; normalmente mejor adaptada la documentacin.Que vos respetes un estndar, no quiere decir que el resto lo haga.

Problemas divertidos: Pago de servicios MLB

Problemtica: un medio de pago en Colombia que requera procesamiento complejo.Problemas divertidos: Transferencias Bancarias

Problemtica: un medio de pago en Colombia que requera procesamiento complejo.Tenamos que crear una nueva transaccin por API.Hacia un redirect a la pgina del banco.Luego, tenamos que peridicamente hacer llamadas al server de ellos para saber el estado del pago.Resolvemos el pago (payment; el objeto de negocio de Mercado Pago).

Problemas divertidos: Transferencias Bancarias

Problemas divertidos: Transferencias BancariasFRONTEND

PAYMENTS

PROVIDERBueno, generemos una API perifrica a payments, que lleve eso!SEMIONLINE PAYMENTS

bankUrl

Problemas divertidos: Transferencias BancariasFRONTEND

PAYMENTS

PROVIDERBueno, generemos una API perifrica a payments, que lleve eso!SEMIONLINE PAYMENTS

bankUrl

Pagina del banco

Problemas divertidos: Transferencias BancariasSEMIONLINE PAYMENTSPROVIDER

crearTrxtraerTrxcancelarTrx

PAYMENTS APIaprobarPagorechazarPagofondearPago

Problemas:

Si fallaba algo al medio, el pago quedaba pendiente para siempre.

Muy difcil de trackear.

Sumarle un segundo medio a la api, fue un lo.Problemas divertidos: Transferencias Bancarias

Solucin: Problemas divertidos: Transferencias Bancarias

Solucin: DESACOPLAR!Problemas divertidos: Transferencias Bancarias

Solucin: DESACOPLAR!Problemas divertidos: Transferencias BancariasSEMIONLINE PAYMENTSPROVIDER

crearTrxtraerTrxcancelarTrx

BigQPOSTSistema de colas (BigQ)Por REST, escucha cuando hay cambios en SOP; y notifica a quien se suscriba.

Solucin: DESACOPLAR!Problemas divertidos: Transferencias BancariasPAYMENTS APIaprobarPagorechazarPagofondearPago

SEMIONLINE CONSUMERBigQPOSTRecibi notificacinCreamos SEMIONLINE CONSUMER

Solucin: DESACOPLAR!

Semionline_payments se ocupaba de las transacciones.Semionline_consumer de la relacin entre transacciones y payments.

Problemas divertidos: Transferencias Bancarias

Solucin: DESACOPLAR!

Semionline_payments se ocupaba de las transacciones.Semionline_consumer de la relacin entre transacciones y payments.

SOP notifica cambios; SOC escucha los cambios.Cuando una transaccin se aprueba en SOP, SOC actua contra payments.De haber inconsistencias o problemas, SOC es el que se encarga de resolverlos / avisar.

Problemas divertidos: Transferencias Bancarias

Solucin: DESACOPLAR!Problemas divertidos: Transferencias BancariasSEMIONLINE PAYMENTSPROVIDER

crearTrxtraerTrxcancelarTrx

PAYMENTS APIaprobarPagorechazarPagofondearPago

SEMIONLINE CONSUMERBigQPOSTPOST

Solucin: DESACOPLAR!Problemas divertidos: Transferencias BancariasSEMIONLINE PAYMENTSPROVIDER

crearTrxtraerTrxcancelarTrx

PAYMENTS APIaprobarPagorechazarPagofondearPago

SEMIONLINE CONSUMERBigQPOSTPOST

Hoy:Problemas divertidos: Transferencias Bancarias* La API de semionline_payments maneja 5 conexiones a proveedores; con una 6ta en camino (interna); y ms de 30 bancos de Latinoamrica.* Los tiempos son estables, la API robusta; cuando se cae un proveedor aislamos el problema en esa capa.* Posteamos toda la data de las transacciones a un elastic search para la rpida visualizacin.

Hoy:Problemas divertidos: Transferencias BancariasLecciones aprendidas:* La API de semionline_payments maneja 5 conexiones a proveedores; con una 6ta en camino (interna); y ms de 30 bancos de Latinoamrica.* Los tiempos son estables, la API robusta; cuando se cae un proveedor aislamos el problema en esa capa.* Posteamos toda la data de las transacciones a un elastic search para la rpida visualizacin.

* Asncrono = BUENO. * REST es mejor cuando las responsabilidades estn bien definidas y separadas.* Desacoplar ES clave: REST se beneficia mucho de no estar; bueno, acoplado, a los tiempos y particularidades de la contraparte (que lo que te haga renegar sean tus problemas, no los de otros).

Preguntas?

Gracias!emiliano.cenizo@mercadolibre.com@EmilianoCenizoKanyenke#11899