A adoção ampla de APIs em ambientes corporativos complexos acaba fazendo emergir dificuldades inéditas de gestão e arquitetura. Nossa recomendação para superação destas dificuldades começa na classificação das APIs desenvolvidas em externas e internas.
Veja também
APIs compartilhadas, de propósito geral, frequentemente fracassam em atender as necessidades específicas de todos os potenciais consumidores. Em muitos casos, APIs legadas e fortemente acopladas a aplicações tornam-se, com o tempo, semanticamente inconsistentes com o avanço do negócio. Além disso, a pressão dos clientes pela adição de funcionalidades, adicionam preocupações extras de segurança a dados e funcionalidades sensíveis. Com o tempo, há potencial incremento no uso da rede e na complexidade global. Frequentemente, o impacto é percebido na baixa adoção e frustração de clientes, parceiros e fornecedores, retardando os benefícios da transformação digital.
Em comparação, a classificação de APIs como internas ou externas cria isolamento entre APIs legadas e os consumidores, permitindo a criação de experiências de consumo mais fáceis e reduzindo o time-to-market.
A adoção de um modelo que separa fortemente APIs externas e internas, entretanto, implica, com frequência no desenvolvimento de uma camada extra de “mediação”. Em termos simples, essa camada controla o relacionamento entre as APIs externas e as APIs internas, “proibindo” qualquer interação direta.
A camada de mediação, entre APIs internas e externas, garante que as políticas de segurança – incluindo autenticação, autorização e proteção de APIs sensíveis – sejam aplicadas. Ela também realiza a “transformação” dos dados e a intermediação de protocolos.
Em cenários mais complexos, que envolvam vários sistemas expostos via APIs internas, a camada de mediação fica é responsável composição de chamadas, orquestração de transações distribuídas (como Sagas), de maneira amigável e transparente para as APIs externas.
Em nossa experiência, é na camada de mediação que devem ser implantadas técnicas mais agressivas de caching, sobretudo para “proteger” sistemas legados.
Na estrutura organizacional, a camada de mediação facilita na organização dos times e na especialização das competências.
Há alguns cenários onde vemos camadas de mediação implementadas usando ESBs, porém, não entendemos que esse seja o mais recomendado.
No final, a camada de mediação age como um “redutor de complexidade”.
Excelente artigo. Objetivo e com geração de insights úteis.
Elemar, este mediador seria a camada de BFF (Backend-For-Frontend) ou um Proxy?