17 pontos por kuber 2023-08-04 | 4 comentários | Compartilhar no WhatsApp

[Introdução]
Kuberian = Kubernetes + Librarian
É um projeto de brincadeira desenvolvido com a ideia de ser uma espécie de "bibliotecário do Kubernetes".

[Objetivo]
O objetivo é encontrar rapidamente, entre mais de 40 mil funções existentes no repositório do Kubernetes,
as funções que desempenham o papel que eu quero.

[Como usar]
Se você escrever uma frase em inglês adequada para começar com that, ele encontra a função mais parecida.

[Exemplos de busca]

  • makes scaling decision link
    • Consulta usada para descobrir com base em quais critérios a decisão de autoscaling é tomada
  • checks if the system supports IPVS link
    • Consulta usada ao procurar uma função que verifica se o sistema oferece suporte a IPVS
  • make requests for checking readiness of the container link
    • Consulta usada para encontrar a função que faz as requisições do Readiness Probe

Basicamente, basta jogar uma frase como oração subordinada depois de that e ele encontra uma função razoavelmente parecida.

[Por que eu criei isso]
Às vezes a documentação do Kubernetes fica um pouco ambígua, então é preciso procurar o código de implementação. Como o projeto é enorme, era trabalhoso demais ficar buscando tudo manualmente, então criei isso.

[Pilha de tecnologias]

  • Llama 2
  • Rust
  • eui (Elasticsearch UI)
  • Knative w/ Google Cloud Run

[Impressões]
Depois de usar o Google Cloud Run, senti que todo o tempo que passei quebrando a cabeça com AWS Lambda foi meio tolo. Parece uma das tecnologias de nuvem mais subestimadas, e o preço também é surpreendentemente barato, então vale a pena experimentar!

4 comentários

 
roxie 2023-08-06

Projeto muito bacana! Que tal divulgar também em outros lugares além do GeekNews?

E eu também gostaria de ouvir mais sobre suas ideias a respeito do CloudRun

 
kuber 2023-08-07

Deixei minha opinião sobre o CloudRun no comentário abaixo. :-)

Fiz um lançamento antecipado no Hacker News para ter uma amostra do padrão de uso dos usuários, haha
(Estou usando o Google Analytics.)

Será que vocês recomendam alguma outra comunidade? Não consigo pensar em muitos lugares.

 
jwseo 2023-08-06

Nossa, que projeto interessante!
Em comparação com o AWS Lambda, em quais pontos o Google Cloud Run te pareceu mais satisfatório? Também só usei Lambda até agora, então fiquei curioso.

 
kuber 2023-08-07

Mais tarde pretendo explicar isso em detalhes em um post de blog ou algo do tipo, mas se eu separar só alguns pontos focando no ambiente de HTTP API, seriam estes:

HTTP
Lambda: é preciso implementar a lógica que recebe a chamada RPC do API Gateway e processa a requisição
Cloud Run: comunicação HTTP comum / dá para reutilizar diretamente bibliotecas ou frameworks baseados em HTTP

Concorrência
Lambda: uma instância obrigatoriamente processa apenas uma requisição por vez (se entrarem 100 requisições ao mesmo tempo, 100 instâncias precisam ser executadas)
Cloud Run: uma única instância pode processar simultaneamente até o limite definido pelo usuário
Explicação adicional: comparando por hora, o Cloud Run é cerca de 1,5x mais caro que o Lambda, mas se uma instância permitir 100 de concorrência, acaba ficando algo como 1,5/100 do custo

Cold / Warm / Hot
Lambda: além de Cold e Hot, existe o estado Warm, no qual não são dados recursos de CPU. Fica bem difícil enviar coisas como informações de APM (já que normalmente sair prejudicado por atrasar a resposta só para enviar APM não compensa...) Coisas como conexão com DB também podem cair no estado Warm ou os recursos podem não ser liberados corretamente, a ponto de esgotar todo o pool de conexões do DB
Cloud Run: só existem Cold e Hot. Mesmo assim, em termos equivalentes na AWS, a cobrança vai só até o tempo de resposta do API Gateway. Na finalização, ele dá a chance de fazer a limpeza normal dos recursos

Ambiente de desenvolvimento
Lambda: é bem complicado montar o ambiente de desenvolvimento local, ou então as restrições do ecossistema da linguagem / da arquitetura de CPU são muito grandes
Cloud Run: igual a um ambiente de desenvolvimento comum

Portabilidade
Lambda: código escrito para Lambda acaba ficando dependente de Lambda, então é difícil portar para outras plataformas
Cloud Run: dá para migrar para um ambiente Kubernetes sem modificar o código

Além disso tem muito mais coisa, mas selecionei só alguns pontos com os quais normalmente vocês provavelmente vão concordar rs