デモ
ドキュメント: インストール | 使い方 | Procfile | ENV | 例 | ロードマップ | 貢献 | LinuxConf発表 | クイックWebアプリチュートリアル | ディスカッションフォーラム
インストール
プロジェクト活動
- 安定性:
piku は安定している。新しい言語ランタイムの追加やバグ修正時に更新される。
- Python要件: Python 3.7以上が必要。
動機
piku は、ARM ボード上で Heroku/CloudFoundry のようなデプロイ方式を実現したいという目的で開発された。
dokku が ARM で動作しなかったため、よりシンプルなソリューションが必要だった。
piku は ARM および Intel アーキテクチャで複数のアプリケーションをデプロイ、管理し、個別にスケールできる。
ワークフロー
- 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設定でセキュリティ強化が可能。
1件のコメント
Hacker Newsの意見
piku Webアプリチュートリアルの作成者: pikuが大好き。Webアプリのチュートリアルを書き、GitHubの公式piku組織の一部としてリポジトリに含まれている。チュートリアルリンクで確認できる。pikuの動作原理と、ユーザー視点での最小限のPython Webアプリの例を説明している.
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で動いているとき、同じポートで新しいインスタンスに切り替える方法を知りたい。