Demonstração
Documentação: instalação | uso | Procfile | ENV | exemplos | roadmap | contribuição | palestra na LinuxConf | tutorial rápido de app web | fórum de discussão
Instalação
- Instalação simples:
curl https://piku.github.io/get | sh
- Outras formas de instalação: também há métodos com
cloud-init e instalação manual.
Atividade do projeto
- Estabilidade: o
piku é estável. Recebe atualizações quando são adicionados novos runtimes de linguagem ou corrigidos bugs.
- Requisito de Python: requer Python 3.7 ou superior.
Motivação
- O
piku foi criado para oferecer uma forma de deploy como Heroku/CloudFoundry em placas ARM.
- Como o
dokku não funcionava em ARM, era necessária uma solução mais simples.
- O
piku permite implantar, gerenciar e escalar várias aplicações de forma independente em arquiteturas ARM e Intel.
Fluxo de trabalho
- Fluxo semelhante ao Heroku:
- criar repositório remoto SSH do
git: git remote add piku piku@yourserver:appname
- enviar o código:
git push piku master
- o
piku determina o runtime e instala as dependências
- inicia os workers relevantes com base no
Procfile
- é possível alterar remotamente as configurações da aplicação e escalar processos de worker
- o arquivo
ENV pode incluir configurações da aplicação e do nginx
- é possível fazer deploy de site estático no estilo
gh-pages
Hosts virtuais e SSL
- Suporte a hosts virtuais: permite hospedar vários apps no mesmo VPS
- Configuração de SSL: é possível configurar certificados SSL via Let's Encrypt
Cache e caminhos estáticos
- Suporte a site estático: é possível mapear diretamente prefixos específicos de URL para caminhos no sistema de arquivos
- Cache: é possível fazer cache das respostas do backend
Plataformas suportadas
- Ambiente POSIX: funciona em ambientes POSIX com Python,
nginx, uwsgi e SSH
- Principal uso: usado como micro PaaS em servidores na nuvem
Runtimes suportados
- Linguagens suportadas: Python, Node, Clojure, Java etc.
- Regra geral: se puder ser chamado a partir do shell, pode rodar no
piku
Valores centrais
- pode rodar em dispositivos de baixo desempenho
- acessível para hobbyistas e escolas K-12
- cerca de 1500 linhas de código fáceis de ler
- estilo de código funcional
- dependência única
- apps de 12 fatores
- simplificação da experiência do usuário
- cobre 80% dos casos de uso comuns
- oferece padrões razoáveis para todos os recursos
- aproveita pacotes de distribuição do Raspbian/Debian/Ubuntu
- aproveita ferramentas padrão (
git, ssh, uwsgi, nginx)
- mantém compatibilidade com versões anteriores sempre que possível
Opinião do GN⁺
- Deploy simples: o
piku permite fazer deploy com facilidade mesmo em servidores pequenos, sendo útil para engenheiros de software.
- Suporte a várias linguagens: por suportar várias linguagens, pode ser aplicado a diferentes projetos.
- Suporte a dispositivos modestos: roda até em dispositivos modestos, o que melhora a eficiência de custos.
- Experiência do usuário: simplifica a experiência do usuário, permitindo que até engenheiros iniciantes o utilizem com facilidade.
- Segurança: a configuração de SSL via Let's Encrypt permite reforçar a segurança.
1 comentários
Comentários do Hacker News
Autor do tutorial de webapp do piku: Adoro o piku. Escrevi um tutorial de webapp e ele foi incluído no repositório como parte da organização oficial do piku no GitHub. Pode ser visto no link do tutorial. Ele explica como o piku funciona e mostra um exemplo mínimo de webapp Python do ponto de vista do usuário.
Usuário que conheceu o piku pela primeira vez: Li sobre o piku pela primeira vez. A sensação de iniciar um deploy com
git pushsempre pareceu mágica. Não há nada mais simples do que isso.Usuário que abriu o código de um projeto Kubernetes: Recentemente abri o código de um projeto relacionado a Kubernetes. É um projeto no mesmo espaço do piku. Link do projeto. Parabéns. Parece excelente.
Usuário do Dokku: O piku parece bom. O Dokku também foi muito estável. Porém, ao remover a dependência de Docker, você passa a depender da escolha do SO. Isso não é ideal para apps que devem rodar por anos sem manutenção. Você pode acabar precisando de uma versão específica do SO.
Membro da equipe do Cloud Native Buildpacks (CNB): Não está relacionado a deploy com
git push, mas está relacionado à experiência de PaaS. Estamos mostrando uma prévia do CNB voltado para Buildpacks da CNCF. Com isso, é possível gerar imagens Docker localmente usando ferramentas de build semelhantes à lógica degit pushdo Heroku. Link do tutorial de build de app Rails. Queremos feedback.Aviso de atualização da documentação do piku: Recomendo conferir a documentação recém-reformulada do piku. Link da documentação.
Usuário surpreso com a data do commit inicial do projeto: Fiquei surpreso ao descobrir que o commit inicial foi há 8 anos. Gostaria de ter conhecido este projeto há 18 meses. Eu estava procurando uma forma de ter uma experiência de desenvolvimento parecida com a do Heroku em um Raspberry Pi. Parece que o piku faz exatamente isso.
Usuário que enfatiza que git não é uma ferramenta de deploy: Repete várias vezes: "git não é uma ferramenta de deploy".
Apresentador do ground-init: Sou mantenedor e coautor. Se você gosta de ferramentas de deploy simples e mínimas, recomendo conferir o ground-init. Ele oferece uma abordagem prática para inicialização em nuvem.
Usuário com configuração de deploy automático: Adicionei uma URL mágica chamada pelo GitHub sempre que um commit é enviado para o app. O servidor executa
git pulle o pm2 recarrega o app. Isso funciona bem para projetos pequenos.Pessoa perguntando sobre deploy sem downtime: Gostaria de saber como o piku lida com deploy sem downtime. Por exemplo, quando um serviço Python está rodando na porta 8080 atrás do nginx, quero entender como ele alterna para uma nova instância na mesma porta.