4P by neo 3달전 | favorite | 댓글 1개

데모

문서: 설치 | 사용법 | Procfile | ENV | 예제 | 로드맵 | 기여 | LinuxConf 발표 | 빠른 웹 앱 튜토리얼 | 토론 포럼

설치

프로젝트 활동

  • 안정성: piku는 안정적임. 새로운 언어 런타임 추가나 버그 수정 시 업데이트됨.
  • Python 요구사항: Python 3.7 이상 필요.

동기

  • pikuARM 보드에서 Heroku/CloudFoundry와 같은 배포 방식을 원해 개발됨.
  • dokkuARM에서 작동하지 않아 더 간단한 솔루션 필요.
  • pikuARMIntel 아키텍처에서 여러 애플리케이션을 배포, 관리, 독립적으로 확장 가능.

워크플로우

  • Heroku와 유사한 워크플로우:
    • git SSH 원격 저장소 생성: git remote add piku piku@yourserver:appname
    • 코드 푸시: git push piku master
    • piku가 런타임 결정 및 의존성 설치
    • Procfile을 보고 관련 작업자 시작
    • 원격으로 애플리케이션 설정 변경 및 작업자 프로세스 확장 가능
    • ENV 파일에 애플리케이션 및 nginx 설정 포함 가능
    • gh-pages 스타일 정적 사이트 배포 가능

가상 호스트 및 SSL

  • 가상 호스트 지원: 동일한 VPS에서 여러 앱 호스팅 가능
  • SSL 설정: Let's Encrypt를 통해 SSL 인증서 설정 가능

캐싱 및 정적 경로

  • 정적 사이트 지원: 특정 URL 접두사를 파일 시스템 경로에 직접 매핑 가능
  • 캐싱: 백엔드 응답 캐싱 가능

지원 플랫폼

  • POSIX 환경: Python, nginx, uwsgi, SSH가 있는 POSIX 환경에서 작동
  • 주요 사용처: 클라우드 서버에서 마이크로 PaaS로 사용

지원 런타임

  • 지원 언어: Python, Node, Clojure, Java 등
  • 일반 규칙: 셸에서 호출 가능하면 piku에서 실행 가능

핵심 가치

  • 저사양 장치에서 실행 가능
  • 취미 사용자 및 K-12 학교에 접근 가능
  • 약 1500줄의 읽기 쉬운 코드
  • 기능적 코드 스타일
  • 단일 의존성
  • 12 요소 앱
  • 사용자 경험 단순화
  • 일반적인 사용 사례의 80% 커버
  • 모든 기능에 대한 합리적인 기본값 제공
  • Raspbian/Debian/Ubuntu의 배포 패키지 활용
  • 표준 도구 (git, ssh, uwsgi, nginx) 활용
  • 가능한 경우 이전 버전과의 호환성 유지

GN⁺의 의견

  • 간편한 배포: piku는 소규모 서버에서도 간편하게 배포할 수 있어 소프트웨어 엔지니어에게 유용함.
  • 다양한 언어 지원: 여러 언어를 지원해 다양한 프로젝트에 적용 가능함.
  • 저사양 장치 지원: 저사양 장치에서도 실행 가능해 비용 효율적임.
  • 사용자 경험: 사용자 경험을 단순화해 초급 엔지니어도 쉽게 사용할 수 있음.
  • 보안: Let's Encrypt를 통한 SSL 설정으로 보안 강화 가능.
Hacker News 의견
  • piku 웹앱 튜토리얼 작성자: piku를 사랑함. 웹앱 튜토리얼을 작성했으며, GitHub의 공식 piku 조직의 일부로 리포지토리에 포함됨. 튜토리얼 링크에서 확인 가능함. piku의 작동 원리와 사용자 관점에서의 최소한의 Python 웹앱 예제를 설명함.

  • piku 처음 접한 사용자: piku에 대해 처음 읽어봄. git push로 배포를 시작하는 느낌이 항상 마법처럼 느껴졌음. 이보다 간단한 것은 없음.

  • Kubernetes 프로젝트 오픈 소스화 사용자: 최근 Kubernetes 관련 프로젝트를 오픈 소스화했음. piku와 같은 공간에 속하는 프로젝트임. 프로젝트 링크. 축하의 말을 전함. 훌륭해 보임.

  • Dokku 사용자: piku가 좋아 보임. Dokku도 매우 안정적이었음. 그러나 Docker 의존성을 제거하면 OS의 선택에 의존하게 됨. 유지보수 없이 몇 년 동안 실행될 앱에는 이상적이지 않음. 특정 OS 버전이 필요하게 될 수 있음.

  • Cloud Native Buildpacks (CNB) 팀원: git push 배포와는 관련 없지만, PaaS 경험과 관련 있음. CNCF의 Buildpacks를 대상으로 하는 CNB를 미리보기 중임. 이를 통해 Heroku의 git push 논리와 유사한 빌드 도구를 사용하여 로컬에서 Docker 이미지를 생성할 수 있음. Rails 앱 빌드 튜토리얼 링크. 피드백을 원함.

  • piku 문서 업데이트 알림: piku의 새롭게 개편된 문서를 확인해보길 권장함. 문서 링크.

  • 프로젝트 초기 커밋 시점에 놀란 사용자: 초기 커밋이 8년 전임을 알고 놀람. 18개월 전에 이 프로젝트를 알았더라면 좋았을 것임. Raspberry Pi에 Heroku와 같은 개발 경험을 제공하는 방법을 찾고 있었음. piku가 정확히 그 역할을 하는 것 같음.

  • git은 배포 도구가 아님을 강조하는 사용자: "git은 배포 도구가 아니다"를 반복해서 말함.

  • ground-init 소개자: 유지보수자이자 공동 저자임. 간단하고 최소한의 배포 도구를 좋아한다면 ground-init을 확인해보길 권장함. 클라우드 초기화에 대한 현실적인 접근 방식을 제공함.

  • 자동 배포 설정 사용자: 앱에 커밋이 푸시될 때마다 GitHub가 호출하는 마법 URL을 추가했음. 서버가 git pull을 수행하고 pm2가 앱을 다시 로드함. 작은 프로젝트에 적합함.

  • 무중단 배포에 대한 질문자: piku가 무중단 배포를 어떻게 처리하는지 궁금함. 예를 들어, Python 서비스가 nginx 뒤에서 포트 8080에서 실행 중일 때, 동일한 포트에서 새 인스턴스로 전환하는 방법을 알고 싶음.