Por que você precisa do Apache APISIX ao usar o Amazon Lambda
Xiaolan Cheng
December 9, 2022
Serverless e Amazon Lambda
O que é Serverless?
Computação serverless, ou simplesmente serverless, é uma tendência popular no atual mercado de software. Cada vez mais empresas estão migrando suas operações de uma arquitetura tradicional orientada a servidores para uma arquitetura serverless mais rápida e econômica.
A arquitetura serverless é uma maneira de construir e executar aplicativos sem gerenciar infraestrutura. Ela implanta a infraestrutura necessária em provedores de nuvem ou em alguma plataforma serverless autoimplantada para gerenciamento. Assim, os engenheiros podem se concentrar na lógica de negócios do aplicativo sem gastar muito esforço na construção, gerenciamento e dimensionamento da infraestrutura. Os três grandes provedores de nuvem (Amazon Web Services, Microsoft Azure e Google Cloud) demonstram grande interesse em oferecer os melhores serviços serverless. Por exemplo, o Amazon Lambda é o principal serviço de computação serverless da AWS (Amazon Web Services).
Como mostrado na imagem abaixo, diferente do método tradicional de implantação, ao usar o Amazon Lambda, você só precisa fazer o upload do arquivo de origem, escolher o ambiente de execução e executá-lo. Então, você pode obter o resultado da operação. Livrando-se das etapas de upload e compilação em um servidor. Nesse processo, a implantação do servidor, a instalação do runtime e a compilação são todas gerenciadas e executadas pela plataforma de computação serverless da Amazon. Os engenheiros só precisam manter seu código-fonte e a configuração relevante do ambiente de execução.
A tecnologia relacionada a isso é o BaaS (Backend as a Service), o que significa que não escrevemos mais nem gerenciamos componentes do lado do servidor e terceirizamos completamente todas as partes do aplicativo. Serverless é um novo ambiente de hospedagem no qual o código é executado.
Por que precisamos de Serverless?
Serverless tem várias vantagens:
- Para desenvolvedores, serverless é mais amigável. Ele pode abstrair os detalhes do gerenciamento de servidores, permitindo que os engenheiros se concentrem no código de negócios em si.
- Em termos de custo, serverless opera com um método de pagamento por uso.
- Em termos de desempenho, ele pode escalar automaticamente de acordo com o tráfego de solicitações.
- Ele também pode otimizar a execução do código e o tempo de resposta ajustando a quantidade de memória alocada para a função.
Por que precisamos de um API Gateway ao usar Serverless?
Serverless também tem suas desvantagens:
- A URL da função é codificada diretamente no aplicativo.
- Lógica de autorização e autenticação complicada.
- Alta dependência do provedor de nuvem: Se o provedor de nuvem cair, o serviço também cai.
- Diferentes provedores de nuvem têm esquemas muito diferentes, sem padrões específicos, e migrar de um para outro geralmente é caro.
Os API Gateways podem resolver esses problemas naturalmente. Combinados, serverless pode se tornar uma arquitetura robusta. A imagem abaixo descreve como montar rapidamente um serviço web simples com os serviços serverless da Amazon. O API gateway é vital para fornecer autorização, definição de rota e solicitações de proxy. Tomando o Apache APISIX como exemplo, ele oferece suporte serverless para AWS e Azure. Você pode definir uma rota para habilitar um plugin serverless em vez de codificar URLs de função diretamente nos aplicativos. Com a flexibilidade de atualização a quente de URIs de função, a atualização para diferentes provedores de serviços FaaS (Function as a Service) se torna fácil. Além disso, essa abordagem alivia a dor da lógica complicada de autorização e autenticação.
Apache APISIX
Apache APISIX é um gateway API nativo da nuvem sob a Apache Software Foundation (ASF). Sendo dinâmico, em tempo real e de alto desempenho, o APISIX fornece recursos como balanceamento de carga, upstream dinâmico, lançamento canário, circuit breaking, autenticação e observabilidade. Podemos usar o Apache APISIX para lidar com o tráfego tradicional norte-sul e leste-oeste entre serviços. Ao mesmo tempo, ele também pode ser usado como um controlador de Ingress do K8s. O APISIX expande seu ecossistema por meio de plugins internos, cobrindo vários cenários de uso de gateways API, como autenticação, segurança, observabilidade, gerenciamento de tráfego, acesso a múltiplos protocolos, etc. Claro, ele também inclui muitos plugins relacionados a serverless.
Plugin aws-lambda
O plugin aws-lambda integra o AWS Lambda com o APISIX como um upstream dinâmico para encaminhar todas as solicitações de um URI específico para a nuvem da AWS. Quando habilitado, o plugin encerra a solicitação em andamento do URI configurado e inicia uma nova solicitação para o URI do Gateway AWS Lambda em nome do cliente. Essa nova solicitação carrega os detalhes de autorização previamente configurados, incluindo cabeçalhos da solicitação, corpo e parâmetros (todos os três passados da solicitação original). Ele retorna a resposta com cabeçalhos, um código de status e o corpo para o cliente que iniciou a solicitação com o APISIX. Este plugin suporta autorização via chave de API da AWS e segredos do AWS IAM.
Consulte APISIX ou este blog para mais informações.
Plugins relacionados a Serverless no Apache APISIX
Além do Amazon Lambda, o Apache APISIX também suporta integração com ecossistemas relacionados a serverless, como Azure Function, função Lua e Apache OpenWhisk, e fornece os plugins serverless correspondentes.
Tabela 1 Plugins relacionados a Serverless no Apache APISIX
Nome do Plugin | Descrição |
---|---|
serverless | Os usuários podem enviar scripts Lua personalizados por meio do plugin serverless e especificar a fase de execução do código de acordo com a configuração. Por exemplo, realizar controle de acesso às solicitações na fase de acesso, modificar o cabeçalho de resposta ou o corpo da resposta nas fases de filtro de cabeçalho e filtro de corpo, imprimir logs personalizados na fase de log, etc. Além disso, como o plugin serverless é recarregado a quente, as modificações podem entrar em vigor imediatamente sem reiniciar o Apache APISIX. |
azure-functions | Usado para integrar o APISIX com o Azure Serverless Function como um upstream dinâmico para encaminhar todas as solicitações de um URI específico para a nuvem da Microsoft Azure. Quando habilitado, o plugin azure-functions encerra a solicitação em andamento para o URI configurado e inicia uma nova solicitação para o Azure Functions em nome do cliente. A nova solicitação carrega os detalhes de autorização previamente configurados, incluindo cabeçalho da solicitação, corpo e parâmetros (todos os três passados da solicitação original). Em seguida, ele retorna a resposta com cabeçalhos, código de status e corpo para o cliente que iniciou a solicitação com o APISIX. |
openwhisk | Usado para integrar o APISIX com a plataforma serverless distribuída de código aberto Apache OpenWhisk. Quando habilitado, o plugin encerra a solicitação em andamento para o URI configurado e inicia uma nova solicitação para o endpoint API Host do OpenWhisk em nome do cliente, e o plugin openwhisk retorna as informações de resposta para o cliente. |
openfunction | Usado para integrar o APISIX com a plataforma serverless distribuída de código aberto CNCF OpenFunction como um upstream dinâmico. Quando habilitado, o plugin encerra a solicitação em andamento para o URI configurado e inicia uma nova solicitação para a função OpenFunction em nome do cliente, e então o plugin openfunction retorna as informações de resposta para o cliente. |
Resumo
Nos últimos anos, com o surgimento da arquitetura de microsserviços, tudo tem migrado para a nuvem, e muitos provedores de serviços em nuvem também estão lançando produtos relacionados a serverless. O desenvolvimento baseado em serverless se tornou um modelo de desenvolvimento muito conveniente. Mantendo-se alinhado com as tendências de nuvem nativa, o APISIX suporta computação serverless fornecendo plugins serverless, azure-functions, openwhisk e openfunction.
Se você quiser saber mais sobre o gateway API e seus recursos serverless, entre em contato conosco em https://api7.ai/contact.