ОНЛАЙН-КУРС

"Оптимизация Ruby/Rails-приложений"
Курс для практикующих Ruby/Rails-разработчиков,
которые хотят:
  • всерьез заняться оптимизацией кода
  • сделать свои проекты быстрее и эффективнее
  • добиться профессионального и карьерного роста
  • получать еще больший кайф от своей работы.
Старт
13 сентября 2021
Продолжительность курса
9 НЕДЕЛЬ
Цель курса: научить участников грамотно выстраивать процесс оптимизации, управлять им и применять правильные инструменты в нужное время и в нужном месте.
После курса вы сможете:
Выстраивать стратегию оптимизации Rails-приложений: уметь определять и собирать нужные метрики, ставить обоснованные цели по производительности и достигать их
Понять, что надо оптимизировать, а что лучше не стоит и подойти к оптимизации любого аспекта Rails-приложения так, чтобы добиться нужного результата
Дружить со сборщиком мусора, профилировать и оптимизировать ruby и rails приложения по процессору и по памяти. Находить и устранять реальные bottleneck'и
Настраивать и использовать мониторинг rails-приложений, настраивать production-окружение и production-like данные локально
Оптимизировать работу СУБД, находить и оптимизировать медленные SQL-запросы, эффективно работать с индексами. Бороться с гидрой N+1, оптимизировать ActiveRecord и понимать, когда лучше работать в обход него
Оптимизировать фронтенд под современный интернет, использовать кеширование по максимуму, понимать как браузер строит страницу, получая ответ сервера, и оптимизировать этот процесс
Оптимизировать свой Development Experience: прогон тестов, сборку, деплой, CI и т.д.
Оптимизировать настройки app-сервера, адаптировать серверы под неравномерную нагрузку
Неделя 1. Оптимизация работы с памятью в ruby-программах
  • Оптимизация: общие подходы и мантра
  • Планирование эксперимента
  • Общая стратегия сбора метрик, постановки целей по оптимизации Rails-приложений
  • Сбор метрик и постановка целей по оптимизации памяти
  • Как устроена работа с памятью в ruby
  • Сборщик мусора: эволюция, современное состояние, тюнинг
  • Замеры использования памяти
  • Memory leak vs Memory bloat
  • Профилирование использования памяти, визуализация и анализ результатов
  • Возможности сброса работы с ruby на более подходящие части технологического стека
  • Альтернативные аллокаторы памяти, jemalloc
  • Связь оптимизации памяти c оптимизацией CPU
Неделя 2. Оптимизация работы с CPU в ruby-программах
  • Сбор метрик и постановка целей по оптимизации CPU
  • Особенности организации эксперимента с использованием CPU
  • Бенчмаркинг ruby-программ
  • Профилирование использования CPU в ruby-коде (rubyprof, stackprof, rbspy)
  • Визуализация и анализ результатов профилирования CPU
  • Разновидности, идентификация и устранение Bottleneck'ов
  • Возможности использования оптимизированных библиотек для нагруженных частей проекта
  • Параллельные вычисления в Ruby, GIL, потоки, процессы
  • Закон Амдала
  • Best-practices и gotchas
Неделя 3. Оптимизация Rails бекенда
  • Сбор метрик и постановка целей по оптимизации бэкенда
  • Настройка production-like данных локально - зачем и как
  • Уточнение роли бэкенда в цикле запрос-ответ-взаимодействие современного веб-приложения
  • Работа с rack-mini-profiler
  • Настройка и использование мониторинга NewRelic, Skylight, Scout
  • Кеширование!
  • Вынос ресурсоемких процессов в фоновые задачи
  • Resque, Sidekiq и другие
  • Профилирование rails-бэкенда, нагрузочные тесты, численные эксперименты
Неделя 4. Оптимизация ActiveRecord и работы с базой данных
  • Сбор метрик и постановка целей по оптимизации работы с базой данных
  • Борьба с гидрой N+1
  • Определение и исправление медленных запросов
  • Сокращение количества запросов
  • Кэширование сложных запросов
  • Работа с планировщиком запросов БД с Explain Analyze
  • Эффективная работа с индексами базы данных
  • Vacuum, autovacuum и чем он может быть опасен
  • Импорт больших объёмов данных с ActiveRecord и в обход него
  • Польза, цена и альтернативы ActiveRecord
Неделя 5. Оптимизация фронтенда для современного интернета
  • Сбор метрик и постановка целей по оптимизации фронтенда
  • Формирование Performance mindset у себя и в своей компании
  • Оценка стоимости вашего фронтенда
  • Работа с сервисом WebPageTest
  • Настройка local-production окружения
  • HTTP 1, 2, 3 и как с ними жить
  • Preconnect, Prefetch, Preload, Server Push
  • Конкатенация ассетов, CDN rotation, CDN внешних библиотек: за и против
  • Gzip, brotli, zopfli, WebP
  • Server-Sent Events, Streaming шаблонов в Rails
Неделя 6. Оптимизация фронтенда для современных браузеров
  • Процесс построения браузером страницы в деталях
  • Chrome Timeline как профилировщик фронтенда
  • Формирование оптимального тега HEAD
  • Critical CSS
  • Оптимизация CSS-бандлов
  • service-workers
  • Работа с картинками, шрифтами
  • Webpack bundle-analyzing, code-splitting, tree-shaking
  • Автоматизация защиты от разбухания js-бандлов
  • Интеграция инструментов контроля соблюдения бюджетов в CI
  • PageSpeed Insights, Lighthouse
  • Чек-листы производительного фронтенда
Неделя 7. Оптимизация серверов приложений
  • Сбор метрик и постановка целей по оптимизации серверов
  • Обзор и сравнение альтернативных app-серверов для Rails
  • Закон Литтла
  • Расчёт оптимальных настроек серверов для вашего проекта
  • Контроль потребления памяти в production
  • Отлов memory bloat в production
  • Оптимизация Rails как фреймворка, derailed_behcnmarks
  • Оптимизация серверов под неравномерную нагрузку
  • Reverse Proxy
  • Минимальная защита от DDoS
Неделя 8. Оптимизация DX (Development eXperience)
  • Сбор метрик и постановка целей по оптимизации DX
  • Ещё раз в важности feedback-loop для разработчика
  • Оптимизация open-source инструментов
  • Оптимизация скорости загрузки Rails
  • Оптимизация прогона тестов
  • Оптимизация деплоя
  • Оптимизация пересборки
  • Оптимизация CI
  • Live-reload css и js
Автор
Алексей Васильев
Техлид в Busfor, кандидат технических наук (Github, LinkedIn)
Всерьёз втянулся в оптимизацию при написании кандидатской диссертации.

В научной работе на два порядка ускорил моделирование газотранспортных систем Газпрома за счёт применения архитектурных решений, параллельных и распределённых вычислений, расчётов на графических картах.

В 2015 году сменил академическую среду на продуктовую разработку на Rails.

В Busfor оптимизировал и продолжает оптимизировать всё, что тормозило
(бэкенд, фронтенд, postgres, sprockets, webpack, capistrano, тесты, CI, кэш и т.д.).
За время работы над проектом:
  • снизил пиковую нагрузку на бэкенд в 5 раз с 15000rpm до 3000rpm
  • ускорил деплой в 5 раз
  • ускорил прогон тестов в 4 раза
  • В 2 раза снизил потребление памяти приложения
  • в 4 раза ускорил загрузку приложения
  • ускорил импорт данных объёмом 3Гб в 20 раз, c 60 до 3х минут.

Кроме Rails владеет C++, Go, JavaScript.
Отзывы участников прошлых потоков
Курс шикарный. Жемчужина этого курса - это, конечно, автор. Подход Алексея очень последовательный, структурный и насыщен всей необходимой компиляцией материалов. Я прошёл множество разных курсов на разных платформах, этот даже сравнить не с чем. Отдельная лига.
Вячеслав Швецов
Senior Ruby/Rails developer в MLSDev
Прекрасный курс, есть ощущения серьезного "левелапа" после прохождения. Куча инструментов, которые сам бы искал и разбирался самостоятельно с ними гораздо дольше. Интересные ДЗ, позволяющие попробовать эти инструменты и применить их в дальнейшем на своем проекте.
Вадим Кершуков
Senior RoR Developer в SM2
Получился качественный и довольно глубокий курс, очень круто что охватывает все аспекты о которых типичный узкопрофильный разработчик может и не задумываться никогда, пописывая свой бэкенд... Алексей проделал огромную работу при подготовке этого курса, даже представить сложно, за что ему огромная благодарность, но как и в любом курсе больше половины (может быть даже больше 3/4) здесь зависит от стараний ученика в освоении материала.
Александр Емельянов
Разработчик в DeepLearn Inc
Во всех проектах клиентский проектах, анализ которых я делал или которые делал я сам, всегда наступал момент, когда было ощущение что можно ещё оптимизировать и улучшить приложение, но не всегда понятно как именно. Именно это желание и привело меня на курс. Огромный поток информации об инструментах анализа и оптимизации, лучшие практики и обсуждения опыта внедрения решений, это только малая часть того, что я получил. Весь курс это бесценные знания, собранные воедино, удобно структурированные и уже используемой мной на практике. Спасибо огромное за курс.
Алексей Кирков
Основатель в ds.agency
Стоимость
Курс "Оптимизация Ruby/Rails-приложений""
(срок прохождения 9 недель)
28 500 руб
30 500р. в рассрочку до 6 месяцев (беспроцентная рассрочка через банки Тинькофф и Сбербанк)
Оставить заявку
2 курса - "Оптимизация Ruby/Rails-приложений"
+
"Микросервсиная архитектура на Ruby"
(срок прохождения 2х курсов - 20 недель, проходить можно в любой последовательности)
49 000 руб
53 000р. в рассрочку до 9 месяцев (беспроцентная рассрочка через банки Тинькофф и Сбербанк)

Оставить заявку
Для юр. лиц стоимость 1 курса 35 900 руб за человека, 2х курсов- 65 000 руб, при обучении от 5 человек стоимость по запросу
ГАРАНТИЯ
Мы вернем деньги, если в течение 14 дней со старта курса, вы откажетесь от его прохождения
Регистрация на курс "Оптимизация Rails-приложений"
После регистрации мы пришлем на почту подробную программу и ссылки на оплату
Как вас найти в Telegram?
HARDCODE.DEV
Проект онлайн-школы Thinknetica

По любым вопросам пишите нам на почту
[email protected]
(c) 2021 Hardcode.dev, Thinknetica