Com o advento dos sistemas baseados em microsserviços, novas perspectivas de arquitetura e sua estruturação são adotadas e exploradas. A divisão de um grande problema em pequenas partes não é uma ideia original dos dias atuais.

Dividir é uma forma eficaz e altamente abordada para solucionar complexos problemas na computação. A partir deste cenário o papel exercido por um API Gateway se torna fundamental.

O lema dividir para conquistar faz presença na computação a muito tempo. Podemos ter como exemplo a consolidada técnica de ordenação Merge Sort onde, de forma geral, um mesmo problema inicial é dividido em subsequentes problemas de menores versões do original [1].

O que acompanha os microsserviços?

É interessante observar que a substituição de um grande serviço tradicionalmente monolítico em diversos microsserviços pode efetivamente aliviar e contornar diversos problemas enfrentados durante as fases de desenvolvimento e principalmente manutenção de sistemas. As vantagens oferecidas e a versatilidade entregues não vêm sem o seu preço.

A dependência entre microsserviços para o desempenho de tarefas pode acarretar o atraso nas operações, a distribuição pode gerar a inanição em microsserviços e a consequente falha na operação. Problemas de consistência também são comumente enfrentados. Isso obriga uma programação mais complexa e com distribuição das tarefas de consistências. Então, necessitamos de uma atenção especial sobre o controle do acesso aos microsserviços, quem e quando pode ter contato com eles [2].

A importância de um API Gateway

Uma forma de restringir e acima de tudo controlar este acesso é através de um API Gateway. Ele administra todas as tarefas envolvidas no recebimento e processamento de chamadas de API. É de competência da API gateway receber estas chamadas e realizar todo o gerenciamento de tráfego, versões de API, controle de autorização e acesso, além de monitoramento [3].

Uma boa alusão de seu papel desenvolvido é o exercido por uma portaria que guarda, controla e direciona o acesso do mundo externo ao mundo interno dos microsserviços.

Atenção

Por desempenhar um papel tão importante neste modelo de arquitetura, um API Gateway deve ser fonte especial de atenção durante todas as etapas de desenvolvimento. Ao fornecer um ponto de entrada único, ele é o responsável por direcionar as chamadas de API. Isto impicará no roteamento adequado das mesmas para um ou mais serviços de backend fornecendo um único ponto de extremidade para clientes, ajudando a desacoplar clientes de serviços.

É possível ainda agregar várias solicitações individuais em uma única solicitação. Isso é muito útil quando uma única operação exige chamadas para vários serviços de backend. O cliente envia uma solicitação para o API Gateway que envia solicitações aos vários serviços e agrega os resultados e os envia de volta ao cliente. Isso ajuda a reduzir o caos entre a interação cliente e microsserviços [4]. A resposta do pedido que será dada ao remetente da chamada também é feita pelo API Gateway.

Uma das possíveis formas de controle de acesso é através da autenticação de usuários. Seja utilizando basic, digest, Oauth2 ou qualquer outro tipo de autenticação, esse requisito pode ser centralizado na API Gateway. O controle de acesso depende da aceitação ou recusa da concessão de acesso ao remetente do pedido.

Na chamada inicial de acesso a um microsserviço, o API Gateway irá fazer a verificação da credencial de acesso. Esta tarefa pode ser exercida por exemplo, por um microsserviço interno. Nele é constatada a integridade da autenticação, assim como sua validade na concessão de acesso. Sem uma concreta verificação da autenticação o papel exercido pelo API Gateway fica grandemente comprometido.

Mais do que apenas um componente da arquitetura dos microsserviços, o API Gateway desempenha um papel fundamental na estruturação e conservação do ambiente de serviços. Não deixe de explorar esse potencial!