はじめに
お疲れ様です。プログラミング学習中のくろちゃんです。
今回はタイトルの通り、renderの無料枠だとDBをずっと使えないということが判明したため、Neonの無料枠でDBを保存しようという話です。
学校の大先輩がNeonってのもあるよって教えてくれたため調べてみました。
別のことでアプリをわちゃわちゃさせてしまっているのでまだ実装できていませんが、これをみて実装するつもりでまとめていきます。
Neon とは
クラウド上で使えるサーバーレスPostgreSQLデータベースです。
簡単にいうと、PostgreSQL互換のクラウドDBでアプリから普通のPostgreSQLと同じ感覚で使えるが、運用面がとても楽になっています。
特徴
1.サーバーレス
・従来のPostgreSQLではDBサーバーを立てる必要があったが、Neonは自動でコンピュート(データベースの処理部分)を起動・停止
・データ自体は常に保持される
2.コンピュートとストレージの分離
・書き込み、読み込みの負荷は「Computeノード」が担当
・データはストレージ層に保存されるため、スナップショットやバックアップが容易
3.Branching
・DBのコピーを瞬時に作成可能
・本番DBを壊さずに、開発/テストができる
4.接続管理
・プール型接続(Connection Pooler)が標準
・アプリは複数同時接続でも安定して利用可能
・無料プランでは同時接続数が制限される
5.永続ストレージ
・データはクラウド上に常に保存され、アプリやComputeが落ちても消えない
6.保存期間
・基本的には無制限
導入方
1.NeonでDB作成
・Neon公式 にてアカウント作成
・「New Profect」をクリックしてプロジェクト作成
・「branch」を作成
・「Connection Pooling URL」をコピー
2.Rails側の設定
Gemfileにpgを入れる
gem 'pg', '~> 1.6'
bundle install
config/database.ymlを書き換え
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
url: <%= ENV['DATABASE_URL'] %>
development:
<<: *default
production:
<<: *default
3.RenderでRailsアプリを作成
・renderアカウントを作成
・アプリを作成し、git hubにpush しておいてください
・Build Command(render 管理画面)
bundle install && rails db:migrate
・Start Command(render 管理画面)
bundle exec rails server -p 10000 -b 0.0.0.0
4.環境変数にDB URLを設定
NeonでDBを作成の時にコピーしたURLをDATABASE_URLの欄にペースト
5.マイグレーション
rails db:migrate RAILS_ENV=production
まとめ
以上でNeon DBに保存できるようになり、renderだけ使っていた時のような利用期間制限がなくなります。
初学者には有料の壁は大きいと思いますので、ぜひやってみましょう!
最後に
自分だけでは辿り着けない知識もたくさんあります。
qiitaの記事を検索せずに追ってみるのよし、 xの投稿やはてなブログ等を漁るのもよし。
最高の先輩を持つのはもっとよしです。
コミュニケーション大事ですね。
ただ、今回の場合は私のコミュニケーションというよりは大先輩の大良心のおかげです。
コミュニケーション少し苦手という方にこちらから歩み寄れる人になりたいものです。