Demo
Belgeler: Kurulum | Kullanım | Procfile | ENV | Örnekler | Yol Haritası | Katkı | LinuxConf sunumu | Hızlı web uygulaması eğitimi | Tartışma forumu
Kurulum
Proje durumu
- Kararlılık:
piku kararlı durumda. Yeni dil çalışma zamanları eklendiğinde veya hatalar düzeltildiğinde güncelleniyor.
- Python gereksinimi: Python 3.7 veya üzeri gerekli.
Motivasyon
piku, ARM kartlarda Heroku/CloudFoundry benzeri bir dağıtım yaklaşımı istenmesiyle geliştirildi.
dokku, ARM üzerinde çalışmadığı için daha basit bir çözüme ihtiyaç vardı.
piku, ARM ve Intel mimarilerinde birden fazla uygulamayı dağıtmayı, yönetmeyi ve bağımsız şekilde ölçeklemeyi mümkün kılar.
İş akışı
- Heroku benzeri iş akışı:
git SSH uzak deposu oluşturma: git remote add piku piku@yourserver:appname
- Kodu gönderme:
git push piku master
piku çalışma zamanını belirler ve bağımlılıkları kurar
Procfile dosyasına bakarak ilgili worker'ları başlatır
- Uygulama ayarları uzaktan değiştirilebilir ve worker süreçleri ölçeklenebilir
ENV dosyası uygulama ve nginx yapılandırmalarını içerebilir
gh-pages tarzı statik site dağıtımı yapılabilir
Sanal host ve SSL
- Sanal host desteği: Aynı VPS üzerinde birden fazla uygulama barındırılabilir
- SSL yapılandırması: Let's Encrypt üzerinden SSL sertifikaları ayarlanabilir
Önbellekleme ve statik yollar
- Statik site desteği: Belirli URL önekleri doğrudan dosya sistemi yollarına eşlenebilir
- Önbellekleme: Backend yanıtları önbelleğe alınabilir
Desteklenen platformlar
- POSIX ortamı: Python,
nginx, uwsgi ve SSH bulunan POSIX ortamlarında çalışır
- Başlıca kullanım alanı: Bulut sunucularında micro PaaS olarak kullanılır
Desteklenen çalışma zamanları
- Desteklenen diller: Python, Node, Clojure, Java vb.
- Genel kural: Shell üzerinden çağrılabiliyorsa
piku ile de çalıştırılabilir
Temel değerler
- Düşük özellikli cihazlarda çalışabilir
- Hobi kullanıcıları ve K-12 okulları için erişilebilirdir
- Yaklaşık 1500 satırlık okunabilir kod
- Fonksiyonel kod stili
- Tek bağımlılık
- 12 factor app
- Kullanıcı deneyimini sadeleştirme
- Yaygın kullanım senaryolarının %80'ini kapsama
- Tüm özellikler için makul varsayılanlar sunma
- Raspbian/Debian/Ubuntu dağıtım paketlerinden yararlanma
- Standart araçlardan (
git, ssh, uwsgi, nginx) yararlanma
- Mümkün olduğunda geriye dönük uyumluluğu koruma
GN⁺ görüşü
- Kolay dağıtım:
piku, küçük sunucularda da kolay dağıtım sağladığı için yazılım mühendisleri açısından kullanışlıdır.
- Çoklu dil desteği: Birden fazla dili desteklediğinden çeşitli projelere uygulanabilir.
- Düşük özellikli cihaz desteği: Düşük özellikli cihazlarda da çalışabildiği için maliyet açısından verimlidir.
- Kullanıcı deneyimi: Kullanıcı deneyimini sadeleştirdiği için başlangıç seviyesindeki mühendisler de kolayca kullanabilir.
- Güvenlik: Let's Encrypt üzerinden SSL yapılandırması yapılarak güvenlik güçlendirilebilir.
1 yorum
Hacker News yorumları
piku web uygulaması eğitiminin yazarı: piku'yu seviyorum. Bir web uygulaması eğitimi yazdım ve GitHub'daki resmi piku organizasyonunun parçası olarak depoya dahil edildi. Eğitim bağlantısından bakabilirsiniz. piku'nun nasıl çalıştığını ve kullanıcı bakış açısından en temel Python web uygulaması örneğini anlatıyor.
piku ile ilk kez karşılaşan kullanıcı: piku hakkında ilk kez okudum.
git pushile dağıtımı başlatma hissi bana hep sihir gibi gelmiştir. Bundan daha basiti yok.Kubernetes projesini açık kaynak yapan kullanıcı: Yakın zamanda Kubernetes ile ilgili bir projeyi açık kaynak yaptım. piku ile aynı alana ait bir proje. Proje bağlantısı. Tebrikler, harika görünüyor.
Dokku kullanıcısı: piku iyi görünüyor. Dokku da benim için çok kararlıydı. Ancak Docker bağımlılığını kaldırırsanız, bu kez işletim sistemi seçimine bağımlı hale gelirsiniz. Bakım yapmadan yıllarca çalışacak uygulamalar için bu ideal değil. Belirli bir işletim sistemi sürümüne ihtiyaç duyabilirsiniz.
Cloud Native Buildpacks (CNB) ekibinden biri:
git pushdağıtımıyla ilgili değil ama PaaS deneyimiyle ilgili. CNCF'nin Buildpacks'ini hedefleyen CNB'nin bir önizlemesini paylaşıyorum. Bu sayede Heroku'nungit pushmantığına benzer derleme araçlarıyla yerelde Docker imajları oluşturabilirsiniz. Rails uygulaması derleme eğitimi bağlantısı. Geri bildirim isterim.piku belge güncellemesi duyurusu: piku'nun yeni baştan düzenlenen belgelerine göz atmanızı öneririm. Belge bağlantısı.
projenin ilk commit zamanına şaşıran kullanıcı: İlk commit'in 8 yıl önce olduğunu öğrenince şaşırdım. Keşke bu projeyi 18 ay önce bilseydim. Raspberry Pi üzerinde Heroku benzeri bir geliştirme deneyimi sağlamanın yolunu arıyordum. Görünüşe göre piku tam olarak bunu yapıyor.
git'in bir dağıtım aracı olmadığını vurgulayan kullanıcı: "git bir dağıtım aracı değildir" demeyi tekrar tekrar sürdürüyor.
ground-init'i tanıtan kişi: Ben bakımcısı ve ortak yazarıyım. Basit ve minimal dağıtım araçlarını seviyorsanız ground-init'e göz atmanızı öneririm. Cloud-init için gerçekçi bir yaklaşım sunuyor.
otomatik dağıtım ayarlayan kullanıcı: Uygulamaya her commit push edildiğinde GitHub'ın çağırdığı sihirli bir URL ekledim. Sunucu
git pullyapıyor ve pm2 uygulamayı yeniden yüklüyor. Küçük projeler için uygun.kesintisiz dağıtım hakkında soru soran kullanıcı: piku'nun kesintisiz dağıtımı nasıl ele aldığını merak ediyorum. Örneğin Python servisi nginx arkasında 8080 portunda çalışıyorsa, aynı portta yeni bir örneğe nasıl geçiş yaptığını bilmek isterim.