Technologies

Integrations and distributed systems

level applied-in-production

Getting systems that were not made for each other to talk, and to keep talking when one of them changes. It is the core of my work: almost none of the services I maintain solves the problem alone.

On the other end of the line there is a bit of everything. ERP, CRM, customer service platform, card acquirer, anti-fraud, marketing, marketplace, carrier, credit bureau. None of them speaks the other’s protocol, and a good part of what I write is the midfield between them.

What you learn doing this is not variety of technology, it is variety of ways to fail. A bank responds differently from a marketplace, which responds differently from a manufacturer. Each has its own way of going down, its own request limit and its own interpretation of “I already processed that”. And these are not résumé integrations: they are contracts that have already broken, changed without warning or responded differently from the documentation while I was the one responsible.

What I do

  • Design integration contracts between systems with different owners, including what happens when the other side goes down
  • Write middleware that translates the domain model between platforms with incompatible vocabulary
  • Build ETL for loading and reconciliation between a source and a destination that disagree
  • Handle idempotency, reprocessing and arrival order: the order that arrives twice, the callback that arrives before the confirmation
  • Publish an internal SDK so that whoever consumes my service does not rewrite the HTTP client
  • Decide between a synchronous call, a domain event and a scheduled job by the nature of the coupling

The trade I make without thinking much

A dedicated translator per platform, instead of a generic bus. It is more code and less coupling, and the whole reasoning is in How I work.

Where I applied it

Payments and anti-fraud · Manufacturer reporting · Experience · Customer service

What I have not done yet

My integration pattern is predominantly synchronous over HTTP plus scheduled jobs. I have never built an event-driven architecture with a central broker in production, nor applied event sourcing. It is the gap I would choose to close first.

Pablo Mickael Quevedo Senior Software Engineer · Novo Hamburgo, Brazil