🗂️

Prisma、Fly.io、LiteFS構成での効率的なデータ管理術

2024/05/23に公開

はじめに

Fly.ioは、開発者が簡単にスケーラブルなアプリケーションをデプロイできるクラウドプラットフォームです。本記事では、Fly.io上でRemix、Prisma、LiteFSを使用したアプリケーションでデータベースの管理をしやすくする方法を紹介します。

LiteFSとは

LiteFSは、SQLiteデータベースのレプリケーションツールで、分散環境での使用を前提に設計されています。アプリケーションと同じ環境で動作するので、データの読み込みが高速で、低いレイテンシを実現します。さらに、自動スケール機能によりスケールコストが低く、高い可用性を提供できます。分散SQLiteは、最近、レスポンスの速さに対する要求が高まる中で注目されている技術の一つです。

SQLiteの制約と課題

SQLiteは軽量で使いやすいデータベースですが、デーモンプロセスがないため、サーバー上でのデータ確認や修正にはアプリケーションコンテナにアクセスし、コマンドライン上で操作する必要があります。MySQLやPostgreSQLであれば、DBサーバーへのポートフォワーディングとDBクライアントGUIアプリ(例: Sequel Ace、pgAdmin)を使用してサーバー上のデータを操作できますが、SQLiteではそれが困難です。

Prisma Studioの活用

Prisma Studioは、Prismaが提供するデータベース管理ツールで、ブラウザ上でデータを視覚的に操作できます。開発中のアプリケーションがORMとしてPrismaを利用している場合、Prisma Studioを活用してデータの管理を行うと便利です。

設定手順

アプリケーションコンテナに接続する

まず、SSHを使ってFly.ioのサーバーに接続します。

fly ssh console -a {your_application_name}

Prisma Studioを起動する

次に、Prisma Studioを起動します。

npx prisma studio

ポートフォワードする

ローカルからPrisma Studioにアクセスできるようにポートフォワードを設定します。

fly proxy 5555:5555 -a {your_application_name}

フォワードされたローカルポートにアクセスする

ブラウザを開き、以下のURLにアクセスします。

http://localhost:5555

セキュリティ考慮

Studioの起動と停止

正しく運用されているサービスにおいて、データベースの調査や操作が必要なケースはそれほど多くはありません。
常にPrisma Studioを起動するのはセキュリティやメモリ効率の観点からも望ましくないため、必要な時のみ起動すると良いでしょう。

ポートは非公開ポートで

Prisma Studioを起動するポートは、外部からアクセスされないように公開されていないポートを使用する必要があります。fly.tomlをよく確認してください。

まとめ

分散SQLiteであるLiteFSを活用することで、スケーラブルでパフォーマンスの高いアプリケーションを構築できます。
この記事では、SQLiteの課題であるデータ管理に関してPrisma Studioを利用し、セキュリティを考慮して効率的にデータを操作する方法を紹介しました。

Discussion