Оптимизация
Ruby/Rails-приложений
ОНЛАЙН-КУРС
Go
Программа и формат
1 урок в неделю в виде скринкастов
Домашнее задание с проверкой к каждому уроку
Неделя 1
Неделя 1
Оптимизация работы с памятью в ruby-программах
  • Оптимизация: общие подходы и мантра
  • Планирование эксперимента
  • Общая стратегия сбора метрик, постановки целей по оптимизации Rails-приложений
  • Сбор метрик и постановка целей по оптимизации памяти
  • Как устроена работа с памятью в ruby
  • Сборщик мусора: эволюция, современное состояние, тюнинг
  • Замеры использования памяти
  • Memory leak vs Memory bloat
  • Профилирование использования памяти, визуализация и анализ результатов
  • Возможности сброса работы с ruby на более подходящие части технологического стека
  • Альтернативные аллокаторы памяти, jemalloc
  • Связь оптимизации памяти c оптимизацией CPU
Неделя 2
Неделя 2
Оптимизация работы с CPU в ruby-программах
  • Сбор метрик и постановка целей по оптимизации CPU
  • Особенности организации эксперимента с использованием CPU
  • Бенчмаркинг ruby-программ
  • Профилирование использования CPU в ruby-коде (rubyprof, stackprof, rbspy)
  • Визуализация и анализ результатов профилирования CPU
  • Разновидности, идентификация и устранение Bottleneck'ов
  • Возможности использования оптимизированных библиотек для нагруженных частей проекта
  • Параллельные вычисления в Ruby, GIL, потоки, процессы
  • Закон Амдала
  • Best-practices и gotchas
Неделя 3
Неделя 3
Оптимизация Rails бекенда
  • Сбор метрик и постановка целей по оптимизации бэкенда
  • Настройка production-like данных локально - зачем и как
  • Уточнение роли бэкенда в цикле запрос-ответ-взаимодействие современного веб-приложения
  • Работа с rack-mini-profiler
  • Настройка и использование мониторинга NewRelic, Skylight, Scout
  • Кеширование!
  • Вынос ресурсоемких процессов в фоновые задачи
  • Resque, Sidekiq и другие
  • Профилирование rails-бэкенда, нагрузочные тесты, численные эксперимент
    Неделя 4
    Неделя 4
    Оптимизация ActiveRecord и работы с базой данных
    • Сбор метрик и постановка целей по оптимизации работы с базой данных
    • Борьба с гидрой N+1
    • Определение и исправление медленных запросов
    • Сокращение количества запросов
    • Кэширование сложных запросов
    • Работа с планировщиком запросов БД с Explain Analyze
    • Эффективная работа с индексами базы данных
    • Vacuum, autovacuum и чем он может быть опасен
    • Импорт больших объёмов данных с ActiveRecord и в обход него
    • Польза, цена и альтернативы ActiveRecord
    Неделя 5
    Неделя 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
    Неделя 6
    Оптимизация фронтенда для современных браузеров
    • Процесс построения браузером страницы в деталях
    • Chrome Timeline как профилировщик фронтенда
    • Формирование оптимального тега HEAD
    • Critical CSS
    • Оптимизация CSS-бандлов
    • service-workers
    • Работа с картинками, шрифтами
    • Webpack bundle-analyzing, code-splitting, tree-shaking
    • Автоматизация защиты от разбухания js-бандлов
    • Интеграция инструментов контроля соблюдения бюджетов в CI
    • PageSpeed Insights, Lighthouse
    • Чек-листы производительного фронтенда
    Неделя 7
    Неделя 7
    Оптимизация серверов приложений
    • Сбор метрик и постановка целей по оптимизации серверов
    • Обзор и сравнение альтернативных app-серверов для Rails
    • Закон Литтла
    • Расчёт оптимальных настроек серверов для вашего проекта
    • Контроль потребления памяти в production
    • Отлов memory bloat в production
    • Оптимизация Rails как фреймворка, derailed_behcnmarks
    • Оптимизация серверов под неравномерную нагрузку
    • Reverse Proxy
    • Минимальная защита от DDoS
    Неделя 8
    Неделя 8
    Оптимизация DX (Development eXperience)
    • Сбор метрик и постановка целей по оптимизации DX
    • Ещё раз в важности feedback-loop для разработчика
    • Оптимизация open-source инструментов
    • Оптимизация скорости загрузки Rails
    • Оптимизация прогона тестов
    • Оптимизация деплоя
    • Оптимизация пересборки
    • Оптимизация CI
    • Live-reload css и js
    Неделя 9
    Неделя 9
    Обсуждение кейсов оптимизации в ваших проектах