เดโม
เอกสาร: การติดตั้ง | วิธีใช้งาน | Procfile | ENV | ตัวอย่าง | โร้ดแมป | การมีส่วนร่วม | งานบรรยาย LinuxConf | บทช่วยสอนเว็บแอปแบบรวดเร็ว | ฟอรัมสนทนา
การติดตั้ง
กิจกรรมของโปรเจกต์
- ความเสถียร:
piku มีความเสถียร และจะมีการอัปเดตเมื่อมีการเพิ่มภาษา runtime ใหม่หรือแก้บั๊ก
- ข้อกำหนดของ Python: ต้องใช้ Python 3.7 ขึ้นไป
แรงจูงใจ
piku ถูกพัฒนาขึ้นเพราะต้องการรูปแบบการดีพลอยแบบเดียวกับ Heroku/CloudFoundry บนบอร์ด ARM
- เนื่องจาก
dokku ไม่ทำงานบน ARM จึงจำเป็นต้องมีโซลูชันที่เรียบง่ายกว่า
piku สามารถดีพลอย จัดการ และสเกลหลายแอปพลิเคชันแบบแยกอิสระได้บนสถาปัตยกรรม ARM และ Intel
เวิร์กโฟลว์
- เวิร์กโฟลว์คล้าย Heroku:
- สร้าง
git SSH remote repository: git remote add piku piku@yourserver:appname
- push โค้ด:
git push piku master
piku จะตัดสินใจ runtime และติดตั้ง dependency ให้
- อ่าน
Procfile แล้วเริ่ม worker ที่เกี่ยวข้อง
- สามารถเปลี่ยนค่าตั้งค่าแอปพลิเคชันจากระยะไกลและสเกลโปรเซสของ worker ได้
- สามารถใส่ค่าตั้งค่าแอปพลิเคชันและ
nginx ไว้ในไฟล์ ENV ได้
- สามารถดีพลอยเว็บไซต์แบบสแตติกสไตล์
gh-pages ได้
Virtual Host และ SSL
- รองรับ Virtual Host: โฮสต์หลายแอปบน VPS เดียวกันได้
- การตั้งค่า SSL: ตั้งค่าใบรับรอง SSL ผ่าน Let's Encrypt ได้
แคชและเส้นทางสแตติก
- รองรับเว็บไซต์สแตติก: สามารถแมป URL prefix บางรายการเข้ากับพาธในไฟล์ระบบได้โดยตรง
- แคช: สามารถแคชการตอบสนองจากแบ็กเอนด์ได้
แพลตฟอร์มที่รองรับ
- สภาพแวดล้อม POSIX: ทำงานได้บนสภาพแวดล้อม POSIX ที่มี Python,
nginx, uwsgi และ SSH
- การใช้งานหลัก: ใช้เป็น micro PaaS บนคลาวด์เซิร์ฟเวอร์
Runtime ที่รองรับ
- ภาษาที่รองรับ: Python, Node, Clojure, Java เป็นต้น
- กฎทั่วไป: ถ้าเรียกใช้งานได้จากเชลล์ ก็สามารถรันบน
piku ได้
คุณค่าหลัก
- รันได้บนอุปกรณ์สเปกต่ำ
- เข้าถึงได้สำหรับผู้ใช้สายงานอดิเรกและโรงเรียนระดับ K-12
- โค้ดอ่านง่ายประมาณ 1500 บรรทัด
- สไตล์โค้ดแบบ functional
- มี dependency เดียว
- 12-factor app
- ทำให้ประสบการณ์ผู้ใช้งานเรียบง่าย
- ครอบคลุม 80% ของกรณีการใช้งานทั่วไป
- มีค่าเริ่มต้นที่เหมาะสมสำหรับทุกฟีเจอร์
- ใช้แพ็กเกจดิสทริบิวชันของ Raspbian/Debian/Ubuntu
- ใช้เครื่องมือมาตรฐาน (
git, ssh, uwsgi, nginx)
- รักษาความเข้ากันได้ย้อนหลังเมื่อเป็นไปได้
ความเห็นของ GN⁺
- ดีพลอยได้ง่าย:
piku ช่วยให้ดีพลอยได้สะดวกแม้บนเซิร์ฟเวอร์ขนาดเล็ก จึงมีประโยชน์สำหรับวิศวกรซอฟต์แวร์
- รองรับหลายภาษา: รองรับหลายภาษา จึงนำไปใช้กับโปรเจกต์ได้หลากหลาย
- รองรับอุปกรณ์สเปกต่ำ: ทำงานได้แม้บนอุปกรณ์สเปกต่ำ จึงคุ้มค่าด้านต้นทุน
- ประสบการณ์ผู้ใช้: ทำให้ประสบการณ์ผู้ใช้งานเรียบง่าย จนวิศวกรมือใหม่ก็ใช้งานได้ไม่ยาก
- ความปลอดภัย: สามารถเสริมความปลอดภัยได้ด้วยการตั้งค่า SSL ผ่าน Let's Encrypt
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ผู้เขียนบทแนะนำเว็บแอป piku: ชอบ piku มาก เคยเขียนบทแนะนำเว็บแอปไว้ และถูกรวมเข้าไปในรีโพซิทอรีในฐานะส่วนหนึ่งขององค์กร piku อย่างเป็นทางการบน GitHub ดูได้ที่ลิงก์บทแนะนำ อธิบายวิธีการทำงานของ piku และยกตัวอย่างเว็บแอป Python แบบเรียบง่ายที่สุดจากมุมมองของผู้ใช้
ผู้ใช้ที่เพิ่งรู้จัก piku: เพิ่งได้อ่านเกี่ยวกับ piku เป็นครั้งแรก ความรู้สึกที่เริ่มดีพลอยด้วย
git pushนั้นเหมือนเวทมนตร์อยู่เสมอ ไม่มีอะไรเรียบง่ายไปกว่านี้แล้วผู้ใช้ที่โอเพนซอร์สโปรเจกต์ Kubernetes: เพิ่งโอเพนซอร์สโปรเจกต์ที่เกี่ยวข้องกับ Kubernetes ไปเมื่อไม่นานนี้ เป็นโปรเจกต์ที่อยู่ในกลุ่มเดียวกับ piku ลิงก์โปรเจกต์ ขอแสดงความยินดี ดูยอดเยี่ยมมาก
ผู้ใช้ Dokku: piku ดูดีมาก Dokku เองก็เสถียรมากเช่นกัน แต่เมื่อเอาการพึ่งพา Docker ออกไป ก็จะต้องพึ่งพาตัวเลือกของ OS แทน ซึ่งไม่เหมาะนักสำหรับแอปที่ต้องการรันยาวหลายปีโดยแทบไม่บำรุงรักษา เพราะอาจจำเป็นต้องใช้ OS เวอร์ชันเฉพาะ
สมาชิกทีม Cloud Native Buildpacks (CNB): แม้จะไม่ได้เกี่ยวกับการดีพลอยด้วย
git pushโดยตรง แต่เกี่ยวข้องกับประสบการณ์แบบ PaaS ตอนนี้กำลังพรีวิว CNB ที่มุ่งเป้าไปยัง Buildpacks ของ CNCF ซึ่งช่วยให้สร้าง Docker image บนเครื่องโลคัลได้ด้วยเครื่องมือบิลด์ที่มีตรรกะคล้ายgit pushของ Heroku ลิงก์บทแนะนำการบิลด์แอป Rails อยากได้ฟีดแบ็กการแจ้งอัปเดตเอกสารของ piku: แนะนำให้ลองดูเอกสารของ piku ที่ปรับโฉมใหม่ ลิงก์เอกสาร
ผู้ใช้ที่ประหลาดใจกับช่วงเวลาคอมมิตแรกของโปรเจกต์: แปลกใจที่รู้ว่าคอมมิตแรกเกิดขึ้นเมื่อ 8 ปีก่อน ถ้ารู้จักโปรเจกต์นี้ตั้งแต่ 18 เดือนก่อนก็คงดี ตอนนั้นกำลังหาวิธีสร้างประสบการณ์พัฒนาแบบ Heroku บน Raspberry Pi และดูเหมือน piku จะตอบโจทย์นั้นได้พอดี
ผู้ใช้ที่ย้ำว่า git ไม่ใช่เครื่องมือดีพลอย: พูดซ้ำ ๆ ว่า "git ไม่ใช่เครื่องมือสำหรับดีพลอย"
ผู้แนะนำ ground-init: เป็นผู้ดูแลและผู้ร่วมเขียน ถ้าชอบเครื่องมือดีพลอยที่เรียบง่ายและมินิมอล แนะนำให้ลองดู ground-init ซึ่งนำเสนอแนวทางที่ใช้งานได้จริงสำหรับ cloud-init
ผู้ใช้ที่ตั้งค่าการดีพลอยอัตโนมัติ: ได้เพิ่ม URL มหัศจรรย์ที่ GitHub จะเรียกทุกครั้งที่มีการ push commit ไปยังแอป จากนั้นเซิร์ฟเวอร์จะทำ
git pullและ pm2 จะรีโหลดแอป เหมาะกับโปรเจกต์ขนาดเล็กผู้ถามเรื่องการดีพลอยแบบไร้ Downtime: สงสัยว่า piku จัดการการดีพลอยแบบไร้ Downtime อย่างไร เช่น เมื่อบริการ Python รันอยู่บนพอร์ต 8080 หลัง nginx อยากรู้ว่าจะสลับไปยังอินสแตนซ์ใหม่บนพอร์ตเดียวกันได้อย่างไร