Conheça as cinco fases do ciclo de vida de uma API
APIs não são apenas componentes que você pode definir e esquecer. Os desenvolvedores devem planejar, criar, implementar e monitorar APIs para mantê-las alinhados com as necessidades do negócio, bem como saber quando é hora de desativá-las.
As APIs são interfaces que permitem a integração de vários produtos de software, fazendo com que possam trabalhar em conjunto. E como as APIs também são software, cada uma tem um ciclo de vida próprio.
Uma API é um software que fornece um meio de comunicação ou interação entre outros componentes ou sistemas de software. Por exemplo, quando uma empresa marca uma reunião com um cliente, o aplicativo pode utilizar uma API do Google para enviar um lembrete da reunião ao Google Agenda do cliente.
As APIs desempenham, frequentemente, uma função nos processos iterativos de desenvolvimento de software, que se movem a um ritmo rápido No entanto, os desenvolvedores devem manter a estabilidade da API, enquanto os aplicativos associados são submetidos a atualizações e alterações frequentes. O lançamento contínuo de novas versões de uma API pode ser problemático para o software e para os serviços que dela dependem.
Vamos analisar com mais detalhes as APIs e considerar as fases básicas do ciclo de vida de uma API.
O ciclo de vida de uma API
Embora as opiniões divirjam sobre as fases reais do ciclo de vida de uma API, essa discussão gira em torno de cinco fases clássicas: planejamento, desenvolvimento, testes, implantação e descontinuação.
- Fase de planejamento
Qualquer projeto de desenvolvimento de API deve começar com o planejamento e a concepção. Nessa fase, deve-se fazer com que os membros da equipe de negócios identifiquem os serviços e capacidades que uma API deve apresentar. Além disso, documentar as necessidades comerciais específicas, bem como refinar os objetivos iniciais da API em um conjunto integral de requisitos funcionais e não funcionais.
A seguir, um exemplo de requisitos para uma API: Um serviço de mapeamento precisa centrar o mapa na localização de um usuário. Do mesmo modo, um usuário deve poder selecionar um local de destino, introduzindo um endereço físico ou outros dados. Isso significa que o aplicativo deverá examinar os dados de localização e conectar-se ao sistema GPS de um dispositivo móvel.
Uma vez estabelecidos os requisitos da API, as equipes de desenvolvimento podem tomar decisões de concepção fundamentadas sobre convenções de nomenclatura, estilos arquitetônicos e protocolos específicos a serem utilizados. O planejamento e a concepção devem resultar em uma especificação de API que descreva os métodos e operações suportados pela interface, bem como qualquer restrição técnica.
O paradigma do restaurante
Uma das formas mais fáceis de compreender o que é uma API e como ela funciona é compará-la a um cardápio de restaurante. Um cardápio apresenta comida, bebida e outras opções de pedido, além de ser o meio principal de interação entre o cliente e tudo aquilo que o restaurante oferece. Quando os clientes pedem um cardápio, não precisam saber nada sobre os utensílios de cozinha, a equipe ou como funciona o restaurante. Tal como os clientes, o software pode "encomendar" o que precisa, servindo-se da API sem necessidade de compreender o aplicativo que ela utiliza.
Um restaurante também atualizará periodicamente os cardápios para adicionar novas opções ou remover aquelas que não têm muita saída. Se o conteúdo ou formato de um cardápio mudar com muita frequência, os clientes poderão ficar confusos e frustrados, já que não conseguem encontrar o que querem. No entanto, desde que um cardápio seja razoavelmente estável, não irá importar ao cliente se a cozinha, a equipe, ou outras operações do restaurante mudarem nos bastidores. Mais uma vez, tal como um cliente de um restaurante, uma peça de software que solicita um pedido pode apresentar falhas se não conseguir encontrar facilmente os recursos que necessita através da API da qual depende.
- Fase de desenvolvimento
As APIs podem ser escritas em muitas linguagens de programação, incluindo PHP, Python, Ruby, .NET, C#, Java e Perl. A codificação e os testes podem requerer numerosas iterações, mas as equipes de desenvolvimento não devem lançar uma API para produção antes que esta esteja estável. Em última instância, o desenvolvimento de uma API requer excelentes habilidades de planejamento, codificação e teste, assim como a disciplina necessária para minimizar as alterações da API orientada ao cliente.
O desenvolvimento de API pode ser realizado por um único desenvolvedor, mas é gerenciado, com frequência, por uma equipe de desenvolvimento de API separada e dedicada. Uma abordagem de equipe permite que múltiplos desenvolvedores acessem, criem e mantenham a carteira de API da empresa controlada de forma meticulosa. Além disso, vários desenvolvedores facilitam a criação da documentação, casos de teste e, até mesmo, materiais de marketing necessários para que as APIs públicas obtenham sucesso para o negócio.
Com se trata de um esforço de equipe, múltiplos desenvolvedores necessitarão acessar e manter suas APIs de forma conjunta. Toda a equipe de API deve poder ver e interagir com o código API, documentação e arquivos de teste. Isso também faz com que seja importante implementar controles integrais de busca e controle de versões, o que ajuda os desenvolvedores autorizados a localizar as APIs por critérios, como projeto e versão.
O planejamento do desenvolvimento de uma API sempre deve incluir essas três considerações:
- Como rastrear o uso, o desempenho, os erros e outras métricas importantes da API.
- Componentes de segurança, especialmente a autorização OAuth 2.0 e a validação da chave de API.
- Problemas de desempenho e acessibilidade, tais como estrangulamento e limitação de velocidade, para assegurar um acesso adequado da API.
- Fase de teste
Os desenvolvedores devem testar exaustivamente cada iteração da API quanto à funcionalidade, desempenho e aceitação do usuário. Os avaliadores podem enviar resultados insatisfatórios aos desenvolvedores, o que indica que deverão construir e aprimorar ainda mais o código da API.
Os testes funcionais validam que cada característica ou função funcione como previsto. Recomenda-se utilizar modelos e versões de teste para avaliar a funcionalidade da API em relação à sua especificação. Os testes funcionais também focam na segurança e capacidade de gerenciar erros, garantindo a proteção da API contra falhas ou ataques.
Os testes de desempenho avaliam a atuação da API sob carga. Muitas APIs estão sujeitas a tráfego errático e condições de carga imprevisíveis. As métricas de teste de desempenho medem o quão eficiente funciona a API sob cargas pesadas, tais como o tempo que leva para responder a um determinado pedido de aplicativo.
O teste de aceitação rastreia o uso da API e determina se cumpre o propósito comercial previsto. Os testes de aceitação podem revelar qualquer requisito novo que possa surgir de uma mudança no processo comercial ou na própria API. Também ajudam a identificar possíveis alterações nas funções existentes que poderiam tornar a API mais útil. Por exemplo, nos casos em que os dados podem ser transmitidos para ou desde a API, os testes de aceitação podem revelar a necessidade de se transmitir mais ou, então, alterar dados como argumento de parâmetro.
- Fase de implementação
Quando uma API se tornar estável e segura, estará pronta para produção. Contudo, como acontece com muitos produtos de software, a versão inicial de uma API pode funcionar como uma segunda fase de teste de desempenho e validação.
Por exemplo, os desenvolvedores podem lançar uma nova API em um ambiente de implementação azul/verde, onde os desenvolvedores testam a versão de API mais recente com o software sem afetar a versão vigente. Idealmente, quando os desenvolvedores tiverem preparado a última versão, a API estará pronta para o ambiente de produção completo. Uma parte-chave desse processo é coletar métricas que rastreiam o desempenho da API, tais como a quantidade de erros que apresenta.
Os desenvolvedores devem minimizar as interrupções causadas por uma nova versão de API. Uma API bem escrita deve incluir uma função de chamada de versão, que possa recuperar uma versão válida conhecida para colocar em produção, caso a mais recente seja inadequada.
As alterações de APIs que corrigem erros ou melhoram o desempenho, geralmente, não afetarão as chamadas e respostas de APIs. No entanto, os novos parâmetros e argumentos para a autenticação, ou outras alterações de conceito fundamentais, podem exigir que os usuários efetuem atualizações de software, antes de ter acesso à nova versão de API.
- Fase de descontinuação
Os desenvolvedores podem ampliar e atualizar as APIs ao longo do tempo para melhorar o seu valor comercial. Porém, cada API acumula custos de infraestrutura e de suporte, à medida que o tempo passa. Finalmente, as equipes de software descontinuam as APIs e suas versões mais antigas para não desperdiçar os recursos que as garantem.
Como tal, uma empresa precisa planejar diligentemente a rota de migração de uma versão de API para outra e saber como manter múltiplas versões de APIs ao mesmo tempo, enquanto aprimora novas versões. As equipes de software precisam de um plano de fim de vida para descontinuar as APIs sem afetar drasticamente as operações diárias.
O monitoramento é tarefa importante desse processo de descontinuação, especialmente quando se trata de rastrear a idade e o histórico de uma API. Por exemplo, uma empresa pode descobrir que algumas APIs ficaram praticamente sem uso durante um período de 90 a 120 dias. No entanto, ainda estão instaladas na infraestrutura, consumindo recursos e criando custos. É por isso que o monitoramento dessas APIs é parte essencial de um plano eficaz e equilibrado de descontinuação de API.