Aseptic vs Skaffold
O Skaffold é o ciclo de construir e fazer deploy do Kubernetes, convertido num comando. O Aseptic é o que usas quando preferias não ter esse ciclo de todo enquanto escreves código.
Numa frase
O Skaffold vigia as tuas fontes, constrói as imagens, publica-as onde
tenham de ir e aplica os teus manifestos a um cluster, uma e outra vez, com sincronização de
ficheiros para saltar a reconstrução quando a mudança o permite. É um CLI, configurado por
um skaffold.yaml no repositório.
O Aseptic arranca os serviços de um cenário como processos locais, resolve cada dependência entre eles —local, ambiente partilhado na nuvem ou mock— e injeta os URLs resultantes ao levantar, sem cluster, sem imagem e sem uma mudança nos teus repositórios.
A tabela
| Skaffold | Aseptic | |
|---|---|---|
| Precisa de um cluster de Kubernetes | Sim | Não |
| Ciclo interno | Build, push, deploy — com sync onde se pode | Arranca o processo; serve o reload do próprio framework |
| Configuração | skaffold.yaml e manifestos, no repo | Cenários fora dos repos; manifestos autodetetados |
| Variantes de ambiente | Perfis | Cenários, e uma resolução por dependência |
| Infraestrutura comum (Kafka, Redis, Postgres) | A que os teus manifestos declararem | Gerida em Docker pela app, com remapeamento de portas |
| Depuração | Depuração remota dentro do contentor | Ligares-te a um processo local, como sempre |
| Interface | CLI | App de ambiente de trabalho e um CLI com paridade completa |
| Licença | Código aberto | Grátis para uso pessoal, pago para uso comercial |
Fica-te pelo Skaffold se…
- O Kubernetes é onde correm os teus serviços e queres a mesma pipeline no ciclo interno e na CI, com uma só configuração para as duas.
- Já manténs imagens e manifestos, e exercitá-los todos os dias é uma vantagem e não um imposto.
- Queres perfis que mudem o destino entre um cluster local, um partilhado e produção sem mudar os comandos.
- Preferes um CLI que possas guionizar e meter numa pipeline.
Fica-te pelo Aseptic se…
- A maioria das tuas mudanças é código de aplicação, e pagar um ciclo de build e deploy para as ver a funcionar é a parte mais lenta do teu dia.
- Queres levantar um subconjunto do sistema e resolver o resto contra o ambiente partilhado da nuvem ou contra mocks, escolhendo por dependência.
- Queres que um breakpoint do teu IDE funcione sem mais, sobre um processo local normal.
- Ninguém na equipa quer tomar conta de mais um ficheiro YAML em cada repositório.
Onde o Aseptic fica curto
O Skaffold mantém-te honesto: se a imagem não constrói ou o manifesto está mal, dás por isso enquanto desenvolves, não na CI. O Aseptic não exercita nada disso, porque não o usa. Se os teus artefactos de deploy se partem com frequência, essa verificação diária vale mais do que os segundos que o Aseptic poupa.
E as ressalvas de sempre: o Aseptic está em beta pública, publica-se para Windows, macOS e Linux, e não é código aberto.
O que costuma acabar por acontecer
A divisão que funciona é por pergunta. «O meu código faz o que eu queria?» responde-se mais depressa sem cluster. «Isto faz deploy bem?» é uma pergunta que só o cluster responde, e o seu sítio é mais na CI do que na tua máquina.
O Tilt ocupa quase o mesmo terreno que o Skaffold com outra interface, e o comparativo amplo põe o Docker Compose e um Kubernetes local lado a lado.
Perguntas frequentes
Em que difere o Skaffold do Aseptic, numa frase?
O Skaffold automatiza o ciclo de construir, publicar e fazer deploy contra Kubernetes; o Aseptic tira esse ciclo, correndo os teus serviços como processos locais.
Posso apontar um serviço ao meu ambiente da nuvem com o Skaffold?
Pode-se, ligando-o tu nos manifestos ou com perfis. No Aseptic é uma decisão por dependência —local, nuvem ou mock— que se aplica ao arrancar sem editar nada.
Vale a pena o Skaffold se já faço deploy em Kubernetes?
Se o teu ciclo de desenvolvimento passa mesmo pelo cluster, sim: é do melhor para não fazer à mão build, push e deploy. A pergunta útil é se precisas do cluster para desenvolver ou só para fazer deploy.