4 điểm bởi GN⁺ 2024-06-10 | 1 bình luận | Chia sẻ qua WhatsApp

Demo

Tài liệu: Cài đặt | Cách sử dụng | Procfile | ENV | Ví dụ | Lộ trình | Đóng góp | Bài trình bày tại LinuxConf | Hướng dẫn nhanh về web app | Diễn đàn thảo luận

Cài đặt

  • Cài đặt đơn giản: curl https://piku.github.io/get | sh
  • Các cách cài đặt khác: cũng có cloud-init và phương pháp cài đặt thủ công.

Hoạt động của dự án

  • Độ ổn định: piku ổn định. Dự án được cập nhật khi thêm runtime ngôn ngữ mới hoặc sửa lỗi.
  • Yêu cầu Python: cần Python 3.7 trở lên.

Động cơ

  • piku được phát triển để có cách triển khai giống Heroku/CloudFoundry trên các bo mạch ARM.
  • Do dokku không chạy trên ARM, nên cần một giải pháp đơn giản hơn.
  • piku có thể triển khai, quản lý và mở rộng độc lập nhiều ứng dụng trên kiến trúc ARMIntel.

Quy trình làm việc

  • Quy trình tương tự Heroku:
    • Tạo kho lưu trữ từ xa SSH cho git: git remote add piku piku@yourserver:appname
    • Đẩy mã nguồn: git push piku master
    • piku xác định runtime và cài đặt dependency
    • Đọc Procfile và khởi động các worker liên quan
    • Có thể thay đổi cấu hình ứng dụng từ xa và mở rộng tiến trình worker
    • Có thể đưa cấu hình ứng dụng và nginx vào tệp ENV
    • Có thể triển khai website tĩnh theo kiểu gh-pages

Virtual host và SSL

  • Hỗ trợ virtual host: có thể host nhiều ứng dụng trên cùng một VPS
  • Thiết lập SSL: có thể cấu hình chứng chỉ SSL thông qua Let's Encrypt

Caching và đường dẫn tĩnh

  • Hỗ trợ website tĩnh: có thể ánh xạ trực tiếp các tiền tố URL cụ thể tới đường dẫn hệ thống tệp
  • Caching: có thể cache phản hồi từ backend

Nền tảng được hỗ trợ

  • Môi trường POSIX: hoạt động trên môi trường POSIX có Python, nginx, uwsgi và SSH
  • Trường hợp sử dụng chính: được dùng như một micro PaaS trên máy chủ đám mây

Runtime được hỗ trợ

  • Ngôn ngữ được hỗ trợ: Python, Node, Clojure, Java, v.v.
  • Quy tắc chung: nếu có thể gọi từ shell thì có thể chạy bằng piku

Giá trị cốt lõi

  • Có thể chạy trên thiết bị cấu hình thấp
  • Dễ tiếp cận với người dùng sở thích cá nhân và các trường K-12
  • Khoảng 1500 dòng mã dễ đọc
  • Phong cách mã hàm chức năng
  • Một dependency duy nhất
  • Ứng dụng 12 yếu tố
  • Đơn giản hóa trải nghiệm người dùng
  • Bao phủ 80% các trường hợp sử dụng phổ biến
  • Cung cấp giá trị mặc định hợp lý cho mọi tính năng
  • Tận dụng các gói phân phối của Raspbian/Debian/Ubuntu
  • Tận dụng các công cụ tiêu chuẩn (git, ssh, uwsgi, nginx)
  • Duy trì khả năng tương thích ngược khi có thể

Ý kiến của GN⁺

  • Triển khai đơn giản: piku cho phép triển khai thuận tiện ngay cả trên máy chủ nhỏ, hữu ích cho kỹ sư phần mềm.
  • Hỗ trợ nhiều ngôn ngữ: hỗ trợ nhiều ngôn ngữ nên có thể áp dụng cho đa dạng dự án.
  • Hỗ trợ thiết bị cấu hình thấp: có thể chạy trên thiết bị cấu hình thấp nên tiết kiệm chi phí.
  • Trải nghiệm người dùng: đơn giản hóa trải nghiệm người dùng để cả kỹ sư mới vào nghề cũng có thể dùng dễ dàng.
  • Bảo mật: có thể tăng cường bảo mật bằng cách thiết lập SSL thông qua Let's Encrypt.

1 bình luận

 
GN⁺ 2024-06-10
Ý kiến trên Hacker News
  • Tác giả hướng dẫn webapp cho piku: Rất yêu thích piku. Đã viết một hướng dẫn webapp và nó đã được đưa vào repository như một phần của tổ chức piku chính thức trên GitHub. Có thể xem tại liên kết hướng dẫn. Tài liệu này giải thích cách piku hoạt động và đưa ra một ví dụ webapp Python tối giản từ góc nhìn người dùng.

  • Người dùng lần đầu biết đến piku: Đây là lần đầu đọc về piku. Cảm giác triển khai bằng git push lúc nào cũng như phép màu. Không gì đơn giản hơn thế.

  • Người dùng mã nguồn mở một dự án Kubernetes: Gần đây đã mã nguồn mở một dự án liên quan đến Kubernetes. Đây là dự án thuộc cùng một không gian với piku. Liên kết dự án. Gửi lời chúc mừng. Trông rất tuyệt.

  • Người dùng Dokku: piku có vẻ rất hay. Dokku cũng đã rất ổn định. Tuy nhiên, nếu bỏ phụ thuộc vào Docker thì lại phụ thuộc vào lựa chọn OS. Điều đó không lý tưởng cho những ứng dụng chạy nhiều năm mà không được bảo trì. Có thể sẽ cần một phiên bản OS cụ thể.

  • Thành viên nhóm Cloud Native Buildpacks (CNB): Không liên quan trực tiếp đến triển khai bằng git push, nhưng có liên quan đến trải nghiệm PaaS. Hiện đang xem trước CNB nhắm tới Buildpacks của CNCF. Nhờ đó có thể tạo Docker image cục bộ bằng công cụ build có logic tương tự git push của Heroku. Liên kết hướng dẫn build ứng dụng Rails. Mong nhận được phản hồi.

  • Thông báo cập nhật tài liệu piku: Khuyến nghị xem bộ tài liệu mới được cải tổ của piku. Liên kết tài liệu.

  • Người dùng ngạc nhiên về thời điểm commit đầu tiên của dự án: Ngạc nhiên khi biết commit đầu tiên đã từ 8 năm trước. Giá mà biết đến dự án này từ 18 tháng trước thì tốt biết mấy. Khi đó đang tìm cách mang lại trải nghiệm phát triển giống Heroku trên Raspberry Pi. Có vẻ piku chính xác là thứ đó.

  • Người dùng nhấn mạnh git không phải công cụ triển khai: Liên tục nhắc rằng "git không phải là công cụ triển khai".

  • Người giới thiệu ground-init: Là maintainer và đồng tác giả. Nếu thích các công cụ triển khai đơn giản và tối giản, hãy xem ground-init. Nó đưa ra một cách tiếp cận thực tế với cloud-init.

  • Người dùng thiết lập triển khai tự động: Đã thêm một URL ma thuật được GitHub gọi mỗi khi có commit được push vào ứng dụng. Máy chủ sẽ chạy git pull và pm2 sẽ reload ứng dụng. Rất phù hợp cho các dự án nhỏ.

  • Người hỏi về triển khai không gián đoạn: Thắc mắc piku xử lý triển khai không gián đoạn như thế nào. Ví dụ, khi một dịch vụ Python đang chạy trên cổng 8080 phía sau nginx, muốn biết cách chuyển sang instance mới trên cùng cổng đó.