Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

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

スクリーンショット 2020-05-01 0 25 50

## ER diagram
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
```