Aproveite a Amazon para o Ecossistema e Crescimento do Apache APISIX
October 26, 2022
O autor Chao Zhang é membro do PMC do Apache APISIX e especialista técnico na API7.ai. Ele é o líder de produto do API7 Cloud e um entusiasta de código aberto. Este artigo compila os conteúdos compartilhados por Chao no "AWS Summit Greater China 2022".
Apache APISIX
Em 2019, dois engenheiros de software alugaram um pequeno escritório, criaram um projeto de gateway API do zero, o tornaram open-source e o doaram para a Apache Software Foundation. O projeto, APISIX, mais tarde se tornou um projeto de nível superior da Apache e o projeto de gateway API open-source mais popular, com uma comunidade ativa e crescimento rápido. Os dois engenheiros, que fundaram a API7.ai, agora são acompanhados por muitas pessoas com ideias semelhantes de todo o mundo, continuando a contribuir para o Apache APISIX, tornando-o uma estrela brilhante no campo de gerenciamento de APIs.
Desempenho Máximo e Extensões Ricas
O APISIX teve uma demanda por alto desempenho como um gateway API nativo da nuvem desde o seu nascimento. Portanto, ao usar o Apache APISIX, as expressões mais diretas dos usuários são seu alto desempenho e baixa latência. Além disso, em termos de recursos, o APISIX tem uma capacidade extensa de lidar com tráfego. Por isso, o APISIX é frequentemente usado para lançamentos canários e implantações blue-green. Além disso, o APISIX também possui uma função de autenticação em relação à segurança de API, e suporta diferentes métodos de autenticação, como JWT Auth, HMAC Auth, protocolo Open ID Connect, etc.
Além disso, o APISIX é amigável para desenvolvedores que trabalham em extensões e desenvolvimento personalizado. Além de o APISIX suportar Lua, você também pode aproveitar o APISIX Plugin Runner para usar linguagens de alto nível para estender o APISIX, como Java, Go, Python e WebAssembly. Com o suporte de plugins multi-idiomas, você pode fazer desenvolvimentos personalizados sem nenhum custo extra de aprendizado.
Ecossistema Diversificado e Comunidade Open-Source Ativa
O APISIX tem muitas ações em relação ao ecossistema e fez desenvolvimentos integrados com base em muitos tipos diferentes de projetos. O repositório principal do APISIX possui mais de 70 plugins diferentes.
Você pode alcançar integração e implantação rápidas com plataformas como a AWS usando esses plugins, e eles também podem ajudar a reduzir os custos extras de desenvolvimento dos usuários durante o uso.
Enquanto isso, o número de contribuidores mensais da comunidade do APISIX geralmente se mantém em cerca de 30, o que é um número muito ativo. Nos repositórios do Github do APISIX, você também pode ver muitos usuários da comunidade ajudando a responder e resolver problemas, PRs e perguntas na seção de Discussão. O ambiente positivo da comunidade também ajuda a acelerar as atualizações do produto e enriquecer o ecossistema.
Portanto, o APISIX começou a ter clientes empresariais em todo o mundo, como Airwallex, Sina Weibo, European Factory Platform, NASA e Nayuki, etc. Além disso, graças ao uso e contribuição de cada vez mais empresas, o APISIX se tornou mais conhecido pelo público. Atualmente, os contribuidores do APISIX ultrapassaram 300, e o número total de contribuidores dos projetos open-source relacionados ao APISIX ao longo do tempo ultrapassou 500.
Atualização da Arquitetura
Voltando ao nível de arquitetura do produto, a arquitetura do APISIX usa o modo de plano de dados + plano de controle, como na imagem abaixo.
O lado esquerdo é o próprio APISIX, que também é o plano de dados de todo o gateway API, e ele principalmente lida e processa o tráfego de negócios dos usuários. Além disso, o APISIX fornece funções de gerenciamento de serviços, como limitação de taxa, balanceamento de carga, etc. O lado direito é o plano de controle do gateway API, que controla os componentes operacionais do APISIX, incluindo componentes de registro relacionados à observabilidade para coletar dados de status operacional. Enquanto isso, com etcd e Admin API, o APISIX pode ajudar os usuários a configurar regras relacionadas para que o APISIX possa operar conforme o pretendido.
Como mencionado acima, os plugins multi-idiomas podem ser incorporados à arquitetura do plano de dados no lado esquerdo. Por exemplo, ele permite que os usuários usem linguagens de programação como C++ ou Rust para estender o APISIX através do módulo wasm plugin
dentro do APISIX. Enquanto isso, o lado direito demonstra como estender o APISIX com base no Plugin Runner usando várias linguagens. Ele chamaria o Plugin Runner específico da linguagem (como o Java Plugin Runner) para receber solicitações do APISIX através do tradicional socket de domínio Unix de forma RPC e ajuda o APISIX a lidar com esse tráfego.
Exploração do APISIX na Amazon
Atualmente, o APISIX tem algumas explorações em relação a produtos e desempenho com base na Amazon.
Amazon Marketplace
Nota: API7.ai também é conhecida como Zhiliu Technology
Se você pesquisar APISIX no Amazon Marketplace, verá os resultados acima. Ele está listado na plataforma desde 2021. Usando o software acima, você pode implantar rapidamente o APISIX em todas as instâncias Amazon EC2. Além disso, este software é gratuito, então você só precisa pagar as taxas das instâncias EC2.
Este software executará uma instância do APISIX e uma instância do etcd na instância EC2. Portanto, é mais adequado para usuários existentes da Amazon quando você deseja usar diretamente o APISIX ou usar POC (Proof of Concept) para justificar se o APISIX atende aos requisitos dos seus cenários de destino.
CDK APISIX
O CDK é um framework de desenvolvimento de software open-source fornecido pela Amazon que visa ajudar os usuários a manipular a infraestrutura em nuvem por meio de codificação.
O committer da comunidade APISIX, Pahud Hsieh, desenvolveu o cdk-apisix com base no CDK. Este projeto permite que os usuários criem instâncias do APISIX por meio de codificação e automação. Diferente do que mencionamos acima, ele pode implantar diretamente o APISIX no AWS Fargate. Portanto, podemos alcançar implantação e destruição automáticas em alguns cenários que precisam de gatilhos de eventos. Todo o processo não precisa de nenhuma operação manual e se torna mais responsivo.
Com base na arquitetura acima, o tráfego do cliente será direcionado ao APISIX através do ELB da nuvem, e o APISIX fará algum processamento básico posteriormente, como autenticação, limitação de taxa, etc. Então, finalmente, o tráfego será enviado para as instâncias de aplicativos reais no backend.
Ao usar o método CDK, os usuários podem implantar o Apache APISIX usando suas linguagens de codificação familiares, e ele pode aproveitar os atributos dessas linguagens de alto nível para implantar o APISIX na Amazon de forma mais conveniente. Enquanto isso, no aspecto de uso, quando você conclui uma configuração de modelo de implantação, ela pode ser copiada e personalizada. Portanto, você pode usar diretamente essa configuração de modelo sempre que precisar no futuro, facilitando o processo de implantação.
Plugin Amazon-Lambda
Quando você usa Lambda ou Serverless para implantar aplicativos, há uma maneira extremamente barata de executar os projetos relacionados, e ela pode alcançar escalonamento instantâneo, bem como alguns outros cenários de negócios. Usando essa maneira de implantar aplicativos, geralmente precisamos de um gatilho de evento para que o gateway API possa se tornar um caminho para o gatilho de evento.
Quando o usuário configura o plugin amazon-lambda
do APISIX no roteamento, ele pode redirecionar todo o tráfego para os endereços da função Lambda configurados pelo usuário. A função Lambda lidará com essas solicitações e enviará os resultados de volta ao cliente via APISIX.
Este plugin também suporta identificação IAM da Amazon e Key Auth. Nesse caso, a função Lambda implantada no backend pode se integrar melhor com o APISIX sem sacrificar a segurança.
Testes de Desempenho Relacionados
Em maio de 2022, os processadores AWS Graviton 3 foram oficialmente lançados. Graças à memória DDR5, os processadores Graviton3 oferecem até 25% melhor desempenho de computação, até 2x maior desempenho de ponto flutuante e 50% mais largura de banda de memória em comparação com os processadores AWS Graviton2; as instâncias baseadas em Graviton3 usam até 60% menos energia para o mesmo desempenho em comparação com instâncias EC2 comparáveis.
Pouco depois do lançamento dos processadores AWS Graviton3, o APISIX fez um teste de regressão completo com base nos processadores AWS Graviton3, o que significa que os usuários podem usar o APISIX com confiança nas instâncias EC2 Graviton3. Não haverá problemas de compatibilidade. Enquanto isso, também fizemos testes de desempenho na família de processadores AWS Graviton. Referindo-se aos dois cenários a seguir, realizamos os testes de desempenho nos processadores AWS Graviton2 e AWS Graviton3.
- Upstream único: Usamos apenas um upstream neste cenário (sem nenhum plugin), e testamos principalmente o desempenho do APISIX no modo de proxy puro de volta à origem.
- Upstream único + múltiplos plugins: Usamos um upstream e dois plugins neste cenário, e testamos principalmente o desempenho do APISIX quando habilitamos
limit-count
eprometheus
, que são dois plugins principais que consomem desempenho.
A partir das imagens acima, podemos ver que o APISIX tem um desempenho impressionante, independentemente da estabilidade ou capacidade de lidar com tráfego. Os processadores AWS Graviton3 oferecem até 76% melhor desempenho em cenários de computação intensiva em IO, como gateway API, e reduzem até 38% da latência. Esses dados têm um desempenho ainda melhor do que os dados oficiais mencionados acima fornecidos pela AWS (aumento de 25% no desempenho).
Em geral, seu desempenho é notavelmente excepcional ao usar o APISIX no Grafana 3. Com base em processadores de alto desempenho como o AWS Graviton3, o APISIX pode ajudar a aumentar a eficiência e reduzir recursos e custos nos negócios reais.
Como o API7 Cloud aproveita a Amazon para alcançar um crescimento rápido do produto?
Com o rápido crescimento do Cloud Native, cada vez mais empresas moveram seus negócios para a nuvem (elas geralmente escolhem várias plataformas de nuvem pública). Portanto, como gerenciar e implantar APIs em nuvem de forma eficiente tornou-se um problema urgente.
O API7 Cloud é um serviço SaaS baseado no APISIX e ajuda os usuários a conectar todos os produtos SaaS implantados em qualquer plataforma de nuvem. O API7 Cloud foi lançado pela primeira vez em março de 2022 e fornece aos usuários uma função de gerenciamento de API fácil de usar, métricas de observabilidade flexíveis e ricas, e segurança de API, o que permite que a conexão de API se torne mais eficiente, segura e confiável.
Este produto cobra os usuários com base no número de chamadas de API, e atualmente suporta duas maneiras de implantar o plano de dados. A primeira é self-host, o que significa que os usuários preparam sua infraestrutura e implantam o APISIX na infraestrutura para que o APISIX possa se comunicar com o API7 Cloud. A outra maneira é chamada de semi-gerenciada, também chamada de semi-hospedada. Primeiro, os usuários devem autorizar o API7 Cloud a gerenciar sua conta na nuvem (como uma conta da Amazon). Então, eles podem implantar o APISIX em toda a sua infraestrutura sob suas contas com um único clique no painel de configuração do API7 Cloud.
Atualmente, todos os componentes do API7 Cloud são hospedados na AWS e usam serviços da AWS; a arquitetura do produto é mostrada abaixo:
A partir da imagem acima, o plano de dados com o APISIX pode ser implantado em diferentes plataformas de nuvem, e pode até ser implantado na infraestrutura ou data center do usuário. No lado do API7 Cloud, ele fornece principalmente atributos vitais como observabilidade, gerenciamento básico de API e segurança.
Ao aproveitar os serviços da Amazon, o API7 Cloud tem um desempenho de produto melhor.
Primeiro, o APISIX depende do serviço Amazon EKS. Como um novo produto SaaS, o API7 Cloud foi implantado no K8s desde o início. Portanto, implantamos todos os componentes nos clusters EKS; assim, podemos usar algumas capacidades fornecidas pela nuvem. Enquanto isso, cada usuário terá componentes diferentes, e qualquer componente individual pode ser executado dentro do cluster. Assim, fizemos algum isolamento de rede usando o método de isolamento de locatários desenvolvido no NetworkPolicy, para garantir que os namespaces desses locatários não possam acessar uns aos outros. Neste serviço, também usamos o APISIX Ingress Controller como o gateway para executar toda a operação sem problemas.
APISIX Ingress Controller é uma implementação do controlador Ingress, que permite que os usuários convertam regras configuradas em regras do APISIX para que o APISIX possa lidar com o tráfego real.
Segundo, como o componente mais crítico do produto, o API7 Cloud escolhe o Amazon RDS (Postgre SQL) como o banco de dados. Armazenamos os metadados dos usuários no RDS, como dados de origem da API e ações do usuário. Como um produto SaaS, precisamos saber como um usuário usa nosso produto e determinar se temos problemas com o layout e as experiências dos desenvolvedores para determinar a direção futura do nosso produto.
Também usamos o componente Amazon ElasticCache no API7 Cloud e escolhemos Redis com modo mestre-escravo. O Redis é usado principalmente para armazenar o status das instâncias do plano de dados, que são os dados de status enviados periodicamente para a Cloud quando o APISIX se conecta com o API7 Cloud. Como os dados não são sensíveis nem vitais, e o plano de dados precisa se comunicar frequentemente com o plano de controle, não escolhemos um banco de dados relacional aqui.
Além disso, este componente tem outro uso importante: ele pode ser considerado uma fila de mensagens. O Redis 5.0 introduz a estrutura de dados Stream, então podemos usá-la como uma fila de mensagens super leve para ajudar os usuários a criar, manipular e destruir dados mais rapidamente.
Conclusão
Este artigo compartilha as experiências do usuário a partir da perspectiva dos projetos relacionados ao APISIX. Com o suporte dos serviços e ecossistema da Amazon, o APISIX explorou ainda mais seu ecossistema. Desejamos que o APISIX e a Amazon possam ter mais integrações interessantes e, juntos, desenvolver um ecossistema melhor.