https://github.com/dodonki1223/eroge_release_db
Railsにて美少女ゲームのブランド、ゲーム情報、出演声優、声優情報などを管理するためのデータベースバージョン管理ツール
https://github.com/dodonki1223/eroge_release_db
circleci docker docker-compose ec2 port-forwarding postgresql rails rds ruby slack vpc
Last synced: 5 months ago
JSON representation
Railsにて美少女ゲームのブランド、ゲーム情報、出演声優、声優情報などを管理するためのデータベースバージョン管理ツール
- Host: GitHub
- URL: https://github.com/dodonki1223/eroge_release_db
- Owner: dodonki1223
- Created: 2020-02-03T01:19:09.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-03-08T20:31:10.000Z (over 3 years ago)
- Last Synced: 2025-04-06T17:52:17.514Z (about 1 year ago)
- Topics: circleci, docker, docker-compose, ec2, port-forwarding, postgresql, rails, rds, ruby, slack, vpc
- Language: Ruby
- Homepage:
- Size: 2.37 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# eroge_release_db [](https://circleci.com/gh/dodonki1223/eroge_release_db/tree/master)
美少女ゲームのブランド、ゲーム情報、出演声優、声優情報などを管理するためのデータベースです

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

[Rails ERD](https://github.com/voormedia/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ブランチ以外の更新時はマイグレーションは実行されません**
## 環境構築
環境構築のために `AWS`、`CircleCI`、`Slack` の環境構築が必要です
すごく長いので別リンクにて確認してください
### AWSの環境構築
AWSではVPC、踏み台サーバー、RDSの構築を行います
AWSの環境構築にはUdemy の `手を動かしながら2週間で学ぶ AWS 基本から応用まで` の教材をすごく参考にさせて頂きました
現在は受講出来ないようなので作者のブログ記事の [AWS学習の0→1をサポートする講座「手を動かしながら2週間で学ぶ AWS 基本から応用まで」をUdemyでリリースしました - log4ketancho](https://www.ketancho.net/entry/2018/09/03/074115) を確認してください
現在はコンソール画面で作成せずに **Terraform 化されているため、基本的には Terraform で作成することをオススメします!**
#### Terraform 環境構築
Terraform 化されたため、 Terraform の tfstate ファイルを管理させる S3 を作成します
tfstate を管理させるバケットとバケット作成コマンドを実行する profile 名を指定して実行させます
```shell
$ 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のアクセスの変更に成功しました
```
- #### [VPC構築手順書](https://github.com/dodonki1223/eroge_release_db/blob/master/documents/VPC_CONSTRUCTION.md)

- #### [踏み台サーバー構築手順書](https://github.com/dodonki1223/eroge_release_db/blob/master/documents/STEPPING_STONE_SERVER_CONSTRUCTION.md)

- #### [RDS(Master/Slave構成)構築手順書](https://github.com/dodonki1223/eroge_release_db/blob/master/documents/DB_CONSTRUCTION.md)

### CircleCIの環境構築
CircleCIでは静的コード解析、テストを行い、成功した場合にRDSへポートフォワーディングで接続してマイグレーションを実行します
またマイグレーションを実行するかどうか・マイグレーションの実行結果をSlackに通知する仕組みもあります
- #### [CircleCIの環境構築](https://github.com/dodonki1223/eroge_release_db/blob/master/documents/CIRCLE_CI_CONSTRUCTION.md)

### Slackの環境構築
Slackではマイグレーションを実行するかどうかの承認通知、マイグレーション完了通知を行います
- #### [Slackの環境構築](https://github.com/dodonki1223/eroge_release_db/blob/master/documents/SLACK_CONSTRUCTION.md)
| マイグレーション成功時 | マイグレーション失敗時 |
|:----------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------:|
|  |  |
## 開発
ローカルで開発を行う方法を説明します
### 開発ができる状態にする
下記のコマンドを実行すれば開発を行うことができます
```shell
$ docker-compose run --rm runner
```
実行後、下記のような状態になれば大丈夫です

︙
︙
︙

### 開発方法
[Railsガイド](https://railsguides.jp/) などの以下のドキュメントを参考にマイグレーションファイルを作成していき開発を行っていきます
- [2 マイグレーションを作成する](https://railsguides.jp/active_record_migrations.html#%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)
### SchemaSpy を使用して定義を確認する
SchemaSpy でファイルを出力し、localhost:8080 にアクセスすることでデータベースの定義を見ることができます
```shell
$ 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 を先にデプロイしてないと開発ができません
基本的には以下のコマンド群を使用して開発します
```shell
# 作成するインフラを確認する
$ terraform plan -parallelism=30
# 実際にインフラを適用する
$ terraform apply -parallelism=30
```
### 開発環境を削除する
コンテナ、イメージ、ボリューム、ネットワークをすべて一括で削除します
```shell
$ docker-compose down --rmi all --volumes
```
参考記事:[《滅びの呪文》Docker Composeで作ったコンテナ、イメージ、ボリューム、ネットワークを一括完全消去する便利コマンド - Qiita](https://qiita.com/suin/items/19d65e191b96a0079417)