4 คะแนน โดย GN⁺ 2024-06-10 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

เดโม

เอกสาร: การติดตั้ง | วิธีใช้งาน | Procfile | ENV | ตัวอย่าง | โร้ดแมป | การมีส่วนร่วม | งานบรรยาย LinuxConf | บทช่วยสอนเว็บแอปแบบรวดเร็ว | ฟอรัมสนทนา

การติดตั้ง

  • ติดตั้งแบบง่าย: curl https://piku.github.io/get | sh
  • วิธีติดตั้งอื่นๆ: มีทั้ง cloud-init และวิธีติดตั้งด้วยตนเอง

กิจกรรมของโปรเจกต์

  • ความเสถียร: 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 ความคิดเห็น

 
GN⁺ 2024-06-10
ความคิดเห็นจาก 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 อยากรู้ว่าจะสลับไปยังอินสแตนซ์ใหม่บนพอร์ตเดียวกันได้อย่างไร