Skip to content

Railsにて美少女ゲームのブランド、ゲーム情報、出演声優、声優情報などを管理するためのデータベースバージョン管理ツール

Notifications You must be signed in to change notification settings

dodonki1223/eroge_release_db

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eroge_release_db CircleCI

美少女ゲームのブランド、ゲーム情報、出演声優、声優情報などを管理するためのデータベースです

00_eroge_release_db

概要

Master、Slave構成のRDS(PostgreSQL)内のデータベースのバージョン管理をRailsの Active Record マイグレーション を使用して管理します
データベースの 設計バージョン管理 を行うためのリポジトリでデータの挿入などは行いません(別のプロジェクトで行います)

データベースER図

eroge_release_db

Rails ERD を使用してデータベースのER図を出力しています

環境について

使用しているローカル・本番環境について説明します

ローカル環境

ローカルの環境について説明します

バージョン情報

ソフトウェアスタック バージョン
Rails 6.0.2.1以上
Ruby 2.6.5
PostgreSQL 11
Bundler 2.1.2

開発方法

Dockerを使用して開発を行います
PCにDockerがインストールされていれば問題ないです

本番環境

本番の環境について説明します
本番環境はAWSにて構築したRDSになります

バージョン情報

ソフトウェアスタック バージョン
RDS(PostgreSQL) 11
踏み台サーバー(EC2) Amazon Linux 2

本番環境へのデプロイ

GitHubのmasterブランチが更新された時、CircleCIで静的コード解析、テストが通ったらポートフォワーディングを使用してRDSに接続しRailsのマイグレーションを実行することでPostgreSQLのデータベースを更新します

masterブランチ以外の更新時はマイグレーションは実行されません

環境構築

環境構築のために AWSCircleCISlack の環境構築が必要です
すごく長いので別リンクにて確認してください

AWSの環境構築

AWSではVPC、踏み台サーバー、RDSの構築を行います

AWSの環境構築にはUdemy の 手を動かしながら2週間で学ぶ AWS 基本から応用まで の教材をすごく参考にさせて頂きました
現在は受講出来ないようなので作者のブログ記事の AWS学習の0→1をサポートする講座「手を動かしながら2週間で学ぶ AWS 基本から応用まで」をUdemyでリリースしました - log4ketancho を確認してください

現在はコンソール画面で作成せずに Terraform 化されているため、基本的には Terraform で作成することをオススメします!

Terraform 環境構築

Terraform 化されたため、 Terraform の tfstate ファイルを管理させる S3 を作成します
tfstate を管理させるバケットとバケット作成コマンドを実行する profile 名を指定して実行させます

$ bash bin/init_s3.sh

tfstateを格納するS3バケット名を入力して下さい: eroge-release-db
S3バケット作成で使用するprofile名を入力してください: terraform
eroge-release-dbの作成を行います
eroge-release-dbにバージョンニングを有効化に成功しました
eroge-release-dbにサーバー側の暗号化を有効化に成功しました
eroge-release-dbのアクセスの変更に成功しました

01_eroge_release_vpc

02_stepping_stone_server

03_eroge_release_db_rds

CircleCIの環境構築

CircleCIでは静的コード解析、テストを行い、成功した場合にRDSへポートフォワーディングで接続してマイグレーションを実行します
またマイグレーションを実行するかどうか・マイグレーションの実行結果をSlackに通知する仕組みもあります

04_circleci_projects

Slackの環境構築

Slackではマイグレーションを実行するかどうかの承認通知、マイグレーション完了通知を行います

マイグレーション成功時 マイグレーション失敗時
05_notify_deploy_success 06_notify_deploy_failure

開発

ローカルで開発を行う方法を説明します

開発ができる状態にする

下記のコマンドを実行すれば開発を行うことができます

$ docker-compose run --rm runner

実行後、下記のような状態になれば大丈夫です

07_local_development_start



08_local_development_end

開発方法

Railsガイド などの以下のドキュメントを参考にマイグレーションファイルを作成していき開発を行っていきます

SchemaSpy を使用して定義を確認する

SchemaSpy でファイルを出力し、localhost:8080 にアクセスすることでデータベースの定義を見ることができます

$ docker-compose run --rm schemaspy && docker-compose up schemaspy_web

インフラ構成を変更する

./terraform/components のフォルダにある程度の粒度で分割されています
基本的には以下の単位で開発を行います

  • terraform/components/network
  • terraform/components/bastion
  • terraform/components/eroge-release

まずは network のフォルダに入りそこで terraform apply してください
bastion, eroge-release は network の component に依存しているため先に network component を先にデプロイしてないと開発ができません

基本的には以下のコマンド群を使用して開発します

# 作成するインフラを確認する
$ terraform plan -parallelism=30

# 実際にインフラを適用する
$ terraform apply -parallelism=30

開発環境を削除する

コンテナ、イメージ、ボリューム、ネットワークをすべて一括で削除します

$ docker-compose down --rmi all --volumes

参考記事:《滅びの呪文》Docker Composeで作ったコンテナ、イメージ、ボリューム、ネットワークを一括完全消去する便利コマンド - Qiita

About

Railsにて美少女ゲームのブランド、ゲーム情報、出演声優、声優情報などを管理するためのデータベースバージョン管理ツール

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published