prefect をローカルで動かすための構成要素を理解する
はじめに
prefect の構成要素について理解します。
ここでの構成要素とは、prefect をローカル環境で動かすための要素を指します。
(そのため、SaaS である prefect cloud については言及しません。)
この記事では、以下の要素について説明しています。
- prefect-server
- database
prefect とは
prefect とは、手軽にデータ処理 pipeline を構築することができるワークフロー管理ツールです。
prefect のインストール
公式ドキュメントを参照します。
prefect-server
prefect のインストール後、以下のコマンドを使うことができます。
prefect server start
このコマンドにより、 prefect-server
が起動します。
prefect-server は、prefect を使うための API と UI を提供してくれるプロセスです。
prefect-server が持つ API は、 prefect をインストールしたときに提供される CLI コマンドで利用することができます。この API を通して、ワークフローの登録を行ったりします。
また先ほどの prefect-server の起動により、デフォルトであれば localhost:4200
で以下のような UI にアクセスすることが出来ます。
database
prefect-server は、多くのリソース情報をバックエンドの database に保存します。
保存される情報には、 Flow や Task 等様々なものがあります(他にも多くのリソース情報が保存される)。Flow や Task は、ワークフローを表現するリソースになりますが、これらはまた別の記事で扱おうと思います。
database には sqlite
と PostgreSQL
が利用できます。
デフォルトでは sqlite が使用されます。
また sqlite が使用されている場合、そのデータベースファイルは ~/.prefect/prefect.db
に配置されるようです。
API を通じて prefect を操作していると、このデータベースファイルにリソース情報が保存されていきます。もしデータベースの内容をリセットしたい場合は、以下のコマンドを利用します。
prefect server database reset -y
PostgreSQLの利用
sqlite ではなく、PostgreSQL を使うには以下のようにします。
まず prefect が利用する環境変数 PREFECT_API_DATABASE_CONNECTION_URL
の値を以下のように設定します。
prefect config set PREFECT_API_DATABASE_CONNECTION_URL="postgresql+asyncpg://postgres:[yourTopSecretPassword]@localhost:5432/prefect"
次にローカルで PostgreSQL インスタンスを起動します。
公式ドキュメントでも推奨されていますが、 docker で起動するのが良さそうです。
docker run -d --name prefect-postgres -v prefectdb:/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=[yourTopSecretPassword] -e POSTGRES_DB=prefect postgres:latest
「環境変数の設定」と「PostgreSQLの起動」が完了したら、最後に prefect-server を起動します。
prefect server start
これでバックエンドのデータベースに PostgreSQL が使用されます。
終わりに
prefect の構成要素理解として、 今回は prefect-server と database を扱いました。
次回は(もしやるとすれば)、 Flow や Task 周りを扱おうかと思います。
参考
Discussion