Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/soartec-lab/rails_tuning_sample_app
tuning practice for rails app
https://github.com/soartec-lab/rails_tuning_sample_app
Last synced: 4 days ago
JSON representation
tuning practice for rails app
- Host: GitHub
- URL: https://github.com/soartec-lab/rails_tuning_sample_app
- Owner: soartec-lab
- Created: 2020-04-21T13:08:12.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-03-08T20:41:45.000Z (almost 2 years ago)
- Last Synced: 2024-12-18T19:49:14.391Z (6 days ago)
- Language: Ruby
- Size: 465 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 26
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# README
## Introduction
N+1対策の知識は高負荷railsアプリケーション開発に必須のスキルです。
市場のrails案件は高負荷(急成長サービス、大規模サービス、高トラフィックサービス)も多く、また、今は小規模でも急成長する可能性もあります。高トラフィックサービスの運用には、スケーラビリティ性が必須です。
N+1とはデータと計算量が比例して増えてしまう状態。つまり、スケーラビリティ性が低い状態なので高トラフィックを捌けない、または将来捌けなくなるコードという状態です。スケーラビリティ性はインフラもアプリケーションアーキテクチャもコーディングテクニックも必要です。
アプリケーションのN+1対策の知識はコーディングテクニックの話に該当します。railアプリケーションで高負荷システム開発に現在携わっている、携わりたい、これから携わる人の為に
ページ表示に5秒以上かかっているページに以下の3つのメソッドを正しく使い、0.4秒までパフォーマンスチューニングするリポジトリを作成しました。* joins
* preload
* eager_load## Middleware versions
| middleware | version |
|---|---|
| Ruby | 3.0.5 |
| Rails | 6.1.0 |
| node.js | v12.16.2 |
| yarn| 1.22.4 |## Degign
## ER diagram
## branch
| branch | 役割 | ページ描画速度 |
|---|---|---|
| master | チューニング前 | 5000ms以上 |
| master_tuning | チューニング後 | 400ms以下 |
| use_bullet | gem 'bullet'のサンプル | 400ms以下 |## Setup
```
$ git clone https://github.com/soartec-lab/rails_tuning_sample_app.git
$ cd rails_tuning_sample_app
$ bundle install
$ yarn
$ rails db:create
$ rails db:migrate
$ rails db:seed
$ rails s
```