Pular para o conteúdo

Dá para pôr em produção?

A resposta é "depende de quê", e as condições são concretas: o que falta no Kiln, o que o DevOps gera, e o que precisa vir de fora.

A resposta curta: para ferramenta interna, painel e serviço atrás de um proxy, sim. Para um serviço público exposto direto na internet, não sem um servidor na frente. As condições abaixo são todas concretas.

O que o Kiln não tem, e por quê#

FaltaMotivoO que fazer
TLSrefazer TLS em Python puro seria a pior escolha de segurança possívelnginx, Caddy ou o proxy da nuvem
HTTP/2ele roda sobre o http.server do Pythono mesmo proxy resolve
sincronização automáticaa linguagem não aplica trava por vocêArcane.Concurrent, e leia o aviso do check

O que tem, e costuma surpreender: WebSocket com o RFC 6455 falado à mão, Server-Sent Events, streaming de resposta, upload multipart com nome e extensão conferidos, CSRF, cabeçalhos de segurança e limite de corpo como middleware.

O que o `devops` gera#

bash
$ dataforge devops dockerfile
$ dataforge devops compose
$ dataforge devops ci github
$ dataforge devops k8s
$ dataforge devops doctor

Ele gera texto e sai da frente. Um deploy que falasse com Docker e Kubernetes por dentro esconderia o que a imagem é, e no dia em que alguém precisa mudar uma camada não haveria onde mexer.

No artefatoSem ele
USER forgeum escape de contêiner vira root no host
o manifesto copiado antes do códigoum commit numa linha reinstala tudo (8 s → 2 min)
.env no .dockerignoreo segredo fica na camada, e docker history o mostra
resources + as duas sondas no Deploymentum pod come o nó; o Service manda tráfego antes da hora
depends_on: service_healthya app falha na primeira consulta, de forma intermitente

O banco sobe depois da aplicação#

Forge.esperar(url) espera o banco aceitar conexão e devolve a conexão aberta. O recurso dela é o que ela não repete: só erro passageiro entra na retentativa; credencial errada levanta na hora. Repetir uma senha errada por quarenta segundos troca um erro claro por um travamento, e o programa não fica mais certo por esperar.

Medido: 0,51 s contra um contêiner recém-subido, 4 ms para recusar uma senha errada.

Antes de dizer que está no ar#

  • dataforge check . limpo, e dataforge test --cobertura --minimo=… no CI.
  • dataforge seguranca — ele varre o projeto, e não só os .df: um segredo vaza do arquivo de configuração muito mais do que do código.
  • dataforge abi entre a versão publicada e a nova — é o que decide o número, em vez de escolhê-lo a olho.
  • Um smoke-test de verdade: site 200, rota protegida 401, admin 403, webhook 400.