Skip to content

Commit eb0f66f

Browse files
committed
Describe homework in readme
1 parent a5a4509 commit eb0f66f

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

README.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,62 @@
1+
# Задание №4
2+
3+
## Цели выполнения задания
4+
5+
- Попрактиковаться в настройке мониторинга
6+
- Попрактиковаться в поиске возможностей для оптимизации
7+
- Попрактиковаться в проверке гипотез и обосновании предложений по оптимизации
8+
- Познакомиться с интересным живым `Rails` `open-source` проектом
9+
10+
## Подготовка
11+
12+
- Завести `dev.to` локально
13+
- Настроить свой `NewRelic` для мониторинга локального `dev.to`
14+
- Настроить свой `Skylight` / `Scout` / `Datadog` для мониторинга локального dev.to
15+
- Настроить свой `Prometheus` + `Grafana` для мониторинга локального `dev.to`
16+
- Настроить `rack-mini-profiler`
17+
- Настроить `rails-panel`
18+
- Сделать возможность запуска проекта в `local_production`
19+
20+
### local_production
21+
22+
Можно либо
23+
24+
- сделать новый `environment`, `local_production`
25+
- использовать `production`, но найти способ переопределить нужные настройки локально
26+
27+
Основное, что должно отличать ваш `local_production` от `development`:
28+
29+
- `cache_classes: true`
30+
- `eager_load: true`
31+
- `perform_caching: true`
32+
- `assets_debug: false`
33+
- `assets_compile: false`
34+
35+
Для работы потребуется прекомпиляция ассетов `rake assets:precompile`
36+
37+
## Оптимизация
38+
39+
Все инструменты мониторинга показывают, что самой горячей точкой является главная страница, `StoriesController#index`.
40+
41+
В частности, заметное время занимает рендеринг `partial`-ов `_single_story.html.erb`.
42+
43+
Рассмотрите гипотезу о том, что можно закешировать `<%= render "articles/single_story", story: story %>` в `_main_stories_feed.html.erb` и это даст заметный эффект.
44+
45+
- Не забудьте включить локальное кэширование (`touch tmp/caching-dev.txt`)
46+
- Сделайте `benchmark` с помощью `ab`
47+
- Сделайте оптимизацию
48+
- Перезапустите `benchmark`
49+
50+
Если вы посчитаете, что применить кэширование здесь целесообразно, оформите обоснованный `PR` с этим предложением. Напишите в описании `PR`, какая была гипотеза, откуда она взялась, как вы проверяли гипотезу, какие результаты получили. Приложите скриншоты графиков мониторинга, если на них виден эффект оптимизации.
51+
52+
## Bonus
53+
54+
Поищите возможности для оптимизации самостоятельно. Если сможете что-то найти и оптимизировать, добавляйте в `PR` ваши оптимизации с обоснованиями.
55+
56+
## Сдача задания
57+
58+
`PR` в этот репозиторий с кодом и подробным описанием проделанной работы в описании `PR`-а.
59+
160
<div align="center">
261
<br>
362
<img

0 commit comments

Comments
 (0)