2. Índice
- Lo básico: Qué es REST?
- Rest en MELI - Viejo mundo
- Rest en MELI - Nuevo mundo
- Tecnologías interesantes
- Problemas divertidos
- Preguntas / Contacto
5. Lo básico
Representational State Transfer
Arquitectura para APIs
Se enfoca en los componentes y en la info
que manda, pero no en los detalles
específicos.
6. Lo básico
Representational State Transfer
Arquitectura para APIs
Se enfoca en los componentes y en la info
que manda, pero no en los detalles
específicos.
Preparado para sistemas distribuidos.
7. Lo básico
Representational State Transfer
Arquitectura para APIs
Se enfoca en los componentes y en la info
que manda, pero no en los detalles
específicos.
Preparado para sistemas distribuidos.
REST no necesariamente es a través de
Internet (http)...
Pero hoy hablaremos de REST a través de
Internet mediante los verbos
16. REST en MeLi: Viejo Mundo
Frontends Backends Items Preguntas
17. REST en MeLi: Viejo Mundo
Frontends Backends Items Preguntas
El gordo
de la
campera
de cuero
18. REST en MeLi: Viejo Mundo
Deploys semanales
Probar una feature nueva era complejo
Poco robusto!
Altísimo acoplamiento
Una base para controlarlos a todos
Horizontalizar era difícil
Bardos
20. REST en MeLi: Nuevo Mundo
Multiples APIs Rest!
Cada api controla sus responsabilidades
21. REST en MeLi: Nuevo Mundo
Robusto.
Cada API usa la tecnología que necesita usar
Cosas As A Service:
VMs AAS
Bases de datos AAS
Horizontalizar fue simple.
Foco en nuevos devices posible.
Foco en integradores posible.
Ventajas
30. Plataforma de búsqueda
Se comunica con REST + JSON
Open source
Distribuido
Soporta full text search
Multitenant
Multi combo con Logstash + Kibana
Tecnologías interesantes: Elastic Search
31. Plataforma de búsqueda
Se comunica con REST + JSON
Open source
Distribuido
Soporta full text search
Multitenant
Multi combo con Logstash + Kibana
Tecnologías interesantes: Elastic Search
32. Sistema de cacheo
Free / open source
Key / Value por REST
Funciona en memoria
Tremendamente simple de usar y adaptar
Tecnologías interesantes: Memcached
36. Problemática: Configuraciones. Donde van?
Si están en el código; requieren un deploy para
cambiarlas.
Problema puntual: Cambiar configuraciones en
caliente
Archivo de configuración?
Base de datos?
Problemas divertidos: Configuraciones
39. Plataforma de pago de servicios de Brasil
Mecánica: hacias un POST con un ID; asincrónicamente te hacen una
request para obtener todo el resto de los datos.
Problemas divertidos: Pago de servicios MLB
43. Lecciones aprendidas:
● Cuando te integras contra otra API, no
está de más pedir ejemplos. Muchos.
Problemas divertidos: Pago de servicios MLB
44. Lecciones aprendidas:
● Cuando te integras contra otra API, no
está de más pedir ejemplos. Muchos.
● Mientras + burocrático un proveedor;
normalmente mejor adaptada la
documentación.
Problemas divertidos: Pago de servicios MLB
45. Lecciones aprendidas:
● Cuando te integras contra otra API, no
está de más pedir ejemplos. Muchos
● Mientras + burocrático un proveedor;
normalmente mejor adaptada la
documentación.
● Que vos respetes un estándar, no quiere
decir que el resto lo haga.
Problemas divertidos: Pago de servicios MLB
46. Problemática: un medio de pago en Colombia que requería
procesamiento complejo.
Problemas divertidos: Transferencias Bancarias
47. Problemática: un medio de pago en Colombia que requería
procesamiento complejo.
1)Teníamos que crear una nueva transacción por API.
2)Hacia un redirect a la página del banco.
3)Luego, teníamos que periódicamente hacer llamadas al server de
ellos para saber el estado del pago.
4)Resolvemos el pago (payment; el objeto de negocio de Mercado
Pago).
Problemas divertidos: Transferencias Bancarias
48. Problemas divertidos: Transferencias Bancarias
FRONTEND PAYMENTS PROVIDER
Bueno, generemos una API periférica a payments, que lleve eso!
SEMIONLINE
PAYMENTS
bankUrl
49. Problemas divertidos: Transferencias Bancarias
FRONTEND PAYMENTS PROVIDER
Bueno, generemos una API periférica a payments, que lleve eso!
SEMIONLINE
PAYMENTS
bankUrl
Pagina del banco
51. Problemas:
● Si fallaba algo al medio, el pago quedaba pendiente para siempre.
● Muy difícil de trackear.
● Sumarle un segundo medio a la api, fue un lío.
Problemas divertidos: Transferencias Bancarias
54. Solución: DESACOPLAR!
Problemas divertidos: Transferencias Bancarias
SEMIONLINE
PAYMENTS PROVIDER
crearTrx
traerTrx
cancelarTrx
BigQ
POST
Sistema de colas (BigQ)
Por REST, escucha cuando hay cambios en SOP; y notifica
a quien se suscriba.
56. Solución: DESACOPLAR!
Semionline_payments se ocupaba de las transacciones.
Semionline_consumer de la relación entre transacciones y payments.
Problemas divertidos: Transferencias Bancarias
57. Solución: DESACOPLAR!
Semionline_payments se ocupaba de las transacciones.
Semionline_consumer de la relación entre transacciones y payments.
SOP notifica cambios; SOC escucha los cambios.
Cuando una transacción 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
58. Solución: DESACOPLAR!
Problemas divertidos: Transferencias Bancarias
SEMIONLINE
PAYMENTS PROVIDER
crearTrx
traerTrx
cancelarTrx
PAYMENTS API
aprobarPago
rechazarPago
fondearPago
SEMIONLINE
CONSUMER
BigQ
POST
POST
59. Solución: DESACOPLAR!
Problemas divertidos: Transferencias Bancarias
SEMIONLINE
PAYMENTS PROVIDER
crearTrx
traerTrx
cancelarTrx
PAYMENTS API
aprobarPago
rechazarPago
fondearPago
SEMIONLINE
CONSUMER
BigQ
POST
POST
60. Hoy:
Problemas divertidos: Transferencias Bancarias
* La API de semionline_payments maneja 5 conexiones a proveedores; con una
6ta en camino (interna); y más de 30 bancos de Latinoamérica.
* 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 rápida
visualización.
61. Hoy:
Problemas divertidos: Transferencias Bancarias
Lecciones aprendidas:
* La API de semionline_payments maneja 5 conexiones a proveedores; con una
6ta en camino (interna); y más de 30 bancos de Latinoamérica.
* 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 rápida
visualización.
* Asíncrono = BUENO.
* REST es mejor cuando las responsabilidades están 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).