A importância do API Management para o API Economy

O crescimento e constante evolução da utilização de sistemas computacionais em todas as áreas do desenvolvimento humano, aliado à necessidade das empresas de se integrarem umas com as outras, além oferecerem serviços a seus clientes pela Internet, traz como consequência a multiplicação de sistema abertos, que fornecem serviços através de interfaces de comunicação. Muitas empresas só existem por conta deste tipo de interface de integração – as chamadas APIs (Application Program Interface).

Com o passar dos anos, diversos protocolos de comunicação em rede foram criados para oferecer, de forma padronizada, o intercâmbio de dados: RPC, CORBA, DCOM, RMI, WebSocket, SOAP (Web Services) e REST. Esses três últimos protocolos são os mais utilizados atualmente, uma vez que se baseiam em um protocolo de transporte aberto HTTP, padronizando e popularizando o intercâmbio de dados e serviços, por meio de de APIs públicas ou privadas. A quantidade de APIs disponibilizadas pelas empresas, tanto internamente quanto externamente, pode apresentar um crescimento em quantidade de forma exponencial.

Por conta destes movimentos haverá a necessidade cada vez maior de se documentar, controlar e monitorar a criação e a utilização dessas APIs. Nesta esteira surge o API Management, que nada mais é do que a forma de gerenciamento.

O ciclo de vida da API

Desde a concepção até a construção e utilização de uma API, existe um processo que envolve engenharia, publicação e administração. A este processo damos o nome de de API Lifecycle (ciclo de vida). Podemos dividir esse processo nas seguintes etapas:

  • Design
  • Maintainability
  • Continuos Integration
  • Continuos Delivery
  • Monitoring

Design

A primeira fase do ciclo de vida de uma API é o design. Nesta fase, a API será desenhada de acordo com os requisitos de negócio, sendo também documentada. Em uma API baseada em SOAP, por exemplo, podemos descrever suas características em um documento padronizado, como o WSDL (Web Services Definition Language, ver https://www.w3.org/TR/2001/NOTE-wsdl-20010315). Já em APIs REST, por ser uma tecnologia mais nova e de conceito mais aberto, há algumas especificações como RAML e Swagger – esta última provavelmente se tornará padrão, uma vez que foi doada pela empresa criadora (Smart Bears) para a Open API Initiative (OAI) (https://www.openapis.org/).

É válido lembrar que as documentações da API nestes formatos não são somente informativas. As ferramentas de desenvolvimento, gerenciamento, integração, execução e monitoração utilizam as informações contidas nesses documentos para saber como funciona a API e quais os conteúdos que oferece. Elas também podem fornecer dados sobre formatos de entrada e saída, bem como validações mínimas do que pode ser feito pelos consumidores.

Ainda dentro da fase de design, temos o desenvolvimento da própria API, que pode ser iniciado com ferramentas que, ao lerem o documento de definição da API, já podem gerar o código básico para o seu funcionamento. Como exemplo para APIs REST baseadas em OAI, temos o Swagger Generator, que gera código para a implementação e para o consumo de uma API, em diversas linguagens.

Manutenção

Em uma segunda fase, com o desenvolvimento completo/finalizado ou não, há a necessidade de versionar a API. O versionamento vai além do SCM. Estamos falando da versão das funcionalidades declaradas na documentação de especificação da API. Isso permite que, em ambientes gerenciados, possamos ter mais de uma versão de API sendo executada simultaneamente. Isso permite que uma aplicação consumidora tenha um processo de adaptação mais gradual para as novas versões da API.

Este é um processo definido pela gestão da empresa ou por projeto, mas que deve ter políticas de publicação e divulgação bem claras, principalmente em relação às versões que serão depreciadas e descontinuadas.

Continuous Integration (CI) – Integração contínua

Para que tudo funcione com qualidade, é necessário garantir que, dentro de todo o ciclo de vida da API, o resultado de seu desenvolvimento esteja sempre dentro dos níveis de qualidade definidos pelo projeto. Um processo de integração contínua bem definido e com ferramentas adequadas (Jenkins, Bamboo,TeamCity, Concourse, TravisCI) permite essa verificação constante.

Além disso, somente código testável e com qualidade deve ser publicado. Neste processo toda vez que um código for disponibilizado em seu repositório SCM (Git, Subversion, Mercurial) ele já é um candidato a ser testado e analisado estaticamente. Se tudo estiver dentro do mínimo configurado como parâmetros de qualidade no processo, ele pode ser “empacotado” e disponibilizado para testes integrados e homologação.

Continuous Delivery (CD) – Entrega Contínua

Continuous Delivery (entrega contínua) é uma prática que deve ser encorajada, mas que requer um processo bem definido e automatizado, pois é de sua responsabilidade disponibilizar API em ambientes de teste para homologação e posteriormente em produção.

As mesmas ferramentas de CI podem ser utilizadas para a tarefa, auxiliadas por outras que façam o controle dos testes de homologação – quando esses não forem automatizados -, ou que façam o controle do release de uma API e disparem as ferramentas de CI para fazer a entrega em produção da API.

API Monitoring

Uma API deve informar o andamento de sua execução. É necessário que ela forneça dados de comportamento, métricas e segurança, a fim de ser monitorada por algum tipo de ferramenta externa que disponibilize e notifique a respeito de seu comportamento.

Existem diversas ferramentas no mercado que auxiliam nesta tarefa nada simples, mas extremamente importante. Decisões sobre segurança e performance podem ser automatizadas, e ferramentas como Elastic Stack (ELK), Splunk, AppDynamics, SmartBear AlertSite, APIscience, AWS CloudWatch, Google StackDriver, podem ser usadas na tarefa. Após sua configuração é possível visualizar, notificar e até mesmo configurar comportamentos e chamadas a outros sistemas à partir de eventos gerados pela ferramenta de monitoração.

Em relação a performance, também é possível escalar a quantidade de instâncias da API de forma automática, para que ela possa atender uma demanda maior de requisições. O inverso também ocorre, onde uma menor demanda passa ser atendida com menos instâncias da API, poupando recursos de hardware e de custo de execução.

Quando uma API é construída de forma padronizada, seguindo boas práticas já criadas dentro do desenvolvimento, utilizando as mesmas linguagens e frameworks, facilita a tarefa de se elaborar e registrar os dados necessários para auxiliar na sua monitoração. Também facilita a utilização de componentes externos para capturar dados sem que ocorra interferência na sua execução.

Ferramentas de gerenciamento de API

Atualmente, existem muitas ferramentas para o gerenciamento de APIs no mercado. Essas ferramentas auxiliam na catalogação, permitindo pesquisas e obtenção de informações sobre uma API.

Com uma ferramenta de gerenciamento, os desenvolvedores de uma API podem consultar se há outra API com características semelhantes àquela em construção, evitando retrabalho, poupando energia e recursos financeiros para seu desenvolvimento e execução no futuro.

A ferramenta também auxilia o time de desenvolvimento a decidir sobre a utilização de APIs que já disponibilizem informações que possam ser usadas pela nova API, como: informações de endereço, parâmetros de formato e tipo de entrada e retorno, documentação, estatísticas, autenticação, permissões, relacionamento com outras APIs e fase do ciclo de vida em que se encontra uma versão de uma API.

   Outra característica importante é a disponibilização de um ambiente de Sandbox que emule o da API e sirva para que outras APIs consumidoras possam ser construídas e testadas, sem a necessidade de haver um ambiente compartilhado e dispendioso de manutenção.

  Algumas ferramentas também proveem o monitoramento de segurança, tráfego e performance, servindo como proxy de execução de APIs (principalmente em ambiente de cloud). Como exemplo dessas ferramentas, temos Apigee, Axway, Mulesoft, CA API Management, WSO2 API Management, IBM API Management, Microsoft Azure API Management, 3Scale, Akana Platform, Cloud Elements, Kong, Sensedia etc.

Conclusão

Neste artigo você teve oportunidade de conhecer um pouco mais sobre estrutura, operacionalização, e ciclo de vida de APIs. Existem várias tecnologias e abordagens disponíveis no mercado, entretanto, em todos os cenários, é fundamental destacarmos a importância de uma gestão eficiente para obtenção dos resultados esperados.

*José Carlos Monteiro De Oliveira Junior é Software Architect da GFT. 
Este artigo foi publicado originalmente no Baguete.