Skip to content

Commit 98e2414

Browse files
author
Alexey Vasilyev
committed
Update Readme
1 parent c45d0d6 commit 98e2414

File tree

1 file changed

+30
-36
lines changed

1 file changed

+30
-36
lines changed

README.md

Lines changed: 30 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,73 @@
11
# Setup через docker, docker-compose и dip
22

3+
- для начала нужно зарегаться в algolia.com и получить API-ключи (у dev.to хорошие сиды, но они завязаны на algolia, поэтому приходится этим заниматься)
4+
- cp .env-example .env (.env is gitignored)
5+
- в .env вставить свои ключи от Algolia
36
- gem install dip (maybe change .ruby-version file with your ruby ver)
47
- cd .dev_to
58
- docker-compose build
6-
- For algolia not to brake setup
7-
- cp .env-example .env (.env is gitignored)
8-
- in .env paste your Algolia keys
99
- dip provision
1010
- docker-compose up
1111
- open localhost:3000 in your browser
1212

1313
After setup you can
1414

15+
- dip bash - to do any other commands or just to peek around
1516
- dip bundle - to bundle install after adding gems
1617
- dip setup - to rerun bin/setup
17-
- dip bash - to do any other commands or just to peek around
18+
1819

1920
# Задание №4
2021

2122
## Цели выполнения задания
2223

23-
- Попрактиковаться в настройке мониторинга
24-
- Попрактиковаться в поиске возможностей для оптимизации
25-
- Попрактиковаться в проверке гипотез и обосновании предложений по оптимизации
26-
- Познакомиться с интересным живым `Rails` `open-source` проектом
24+
- Попрактиковаться в подключении APM
25+
- Попрактиковаться в проверке гипотез, бенчмарках и обосновании предложений по оптимизации
2726

2827
## Подготовка
2928

30-
- Завести `dev.to` локально (прямо в этом репозитории, не нужно клонировать `dev.to` от них, иначе будут отличаться версии)
29+
- Завести `dev.to` локально через docker, по инструкции выше
3130
- Настроить свой `NewRelic` для мониторинга локального `dev.to`
32-
- Настроить свой `Skylight` / `Scout` / `Datadog` для мониторинга локального dev.to
33-
- Настроить свой `Prometheus` + `Grafana` для мониторинга локального `dev.to`
3431
- Настроить `rack-mini-profiler`
35-
- Настроить `rails-panel`
36-
- Сделать возможность запуска проекта в `local_production`
3732

38-
### local_production
33+
## Оптимизация
3934

40-
Можно либо
35+
Инструменты мониторинга показывают, что самой горячей точкой является главная страница, `StoriesController#index`.
4136

42-
- сделать новый `environment`, `local_production`
43-
- использовать `production`, но найти способ переопределить нужные настройки локально
37+
В частности, заметное время занимает рендеринг `partial`-ов `_single_story.html.erb`.
4438

45-
Основное, что должно отличать ваш `local_production` от `development`:
39+
Рассмотрите гипотезу о том, что можно закешировать `<%= render "articles/single_story", story: story %>` в `_main_stories_feed.html.erb` и это даст заметный эффект. (В этот паршл входят счётчики лайков и комментариев, они не заморозятся?)
4640

47-
- `cache_classes: true`
48-
- `eager_load: true`
49-
- `perform_caching: true`
50-
- `assets_debug: false`
51-
- `assets_compile: false`
41+
- Не забудьте включить локальное кэширование (`touch tmp/caching-dev.txt` / `rails dev:cache`)
42+
- Сделайте `benchmark` с помощью `ab` (`ab -n 100 -c 5 http://localhost:3000/`)
43+
- Сделайте оптимизацию
44+
- Перезапустите `benchmark` и сравните результаты
5245

53-
Для работы потребуется прекомпиляция ассетов `rake assets:precompile`
46+
Если вы посчитаете, что применить кэширование здесь целесообразно, оформите обоснованный `PR` с этим предложением. Напишите в описании `PR`, какая была гипотеза, откуда она взялась, как вы проверяли гипотезу, какие результаты получили. Приложите скриншоты графиков APM, если на них виден эффект оптимизации.
5447

55-
## Оптимизация
5648

57-
Все инструменты мониторинга показывают, что самой горячей точкой является главная страница, `StoriesController#index`.
49+
## Бонусная программа
50+
- Попробовать что-то ещё, поимио `NewRelic` - `datadog`, `scout`, `skylight`, etc...
51+
- Настроить `local_production` окружение, сравнить скорость работы с обычным `development`
5852

59-
В частности, заметное время занимает рендеринг `partial`-ов `_single_story.html.erb`.
53+
### local_production
6054

61-
Рассмотрите гипотезу о том, что можно закешировать `<%= render "articles/single_story", story: story %>` в `_main_stories_feed.html.erb` и это даст заметный эффект.
55+
Cделать новый `environment`, `local_production`
6256

63-
- Не забудьте включить локальное кэширование (`touch tmp/caching-dev.txt`)
64-
- Сделайте `benchmark` с помощью `ab`
65-
- Сделайте оптимизацию
66-
- Перезапустите `benchmark`
57+
Основное, что должно отличать ваш `local_production` от `development`:
6758

68-
Если вы посчитаете, что применить кэширование здесь целесообразно, оформите обоснованный `PR` с этим предложением. Напишите в описании `PR`, какая была гипотеза, откуда она взялась, как вы проверяли гипотезу, какие результаты получили. Приложите скриншоты графиков мониторинга, если на них виден эффект оптимизации.
59+
- `cache_classes: true`
60+
- `eager_load: true`
61+
- `perform_caching: true`
62+
- `assets_debug: false`
63+
- `assets_compile: false`
6964

70-
## Bonus
65+
Для работы потребуется прекомпиляция ассетов `rake assets:precompile`
7166

72-
Поищите возможности для оптимизации самостоятельно. Если сможете что-то найти и оптимизировать, добавляйте в `PR` ваши оптимизации с обоснованиями.
7367

7468
## Сдача задания
7569

76-
`PR` в этот репозиторий с кодом и подробным описанием проделанной работы в описании `PR`-а.
70+
Как обычно, `PR` в этот репозиторий с кодом и case-study по проделанной работе в описании `PR`, или в файле.
7771

7872
<div align="center">
7973
<br>

0 commit comments

Comments
 (0)