Открыто

Оптимизация Ruby/Rails-приложений [Thinknetica]

Тема в разделе "Курсы по программированию", создана пользователем stclaus, 5 июл 2020.

Цена: 29900р.-72%
Взнос: 8243р.

Основной список: 4 участников

Резервный список: 4 участников

  1. 5 июл 2020
    #1
    stclaus
    stclaus ОргОрганизатор

    Складчина: Оптимизация Ruby/Rails-приложений [Thinknetica]

    Курс для практикующих Ruby/Rails-разработчиков, которые хотят:
    • всерьез заняться оптимизацией кода
    • сделать свои проекты быстрее и эффективнее
    • добиться профессионального и карьерного роста
    • получать еще больший кайф от своей работы.
    Цель курса: научить участников грамотно выстраивать процесс оптимизации, управлять им и применять правильные инструменты в нужное время и в нужном месте.

    После курса вы сможете:

    • Выстраивать стратегию оптимизации Rails-приложений: уметь определять и собирать нужные метрики, ставить обоснованные цели по производительности и достигать их
    • Понять, что надо оптимизировать, а что лучше не стоит и подойти к оптимизации любого аспекта Rails-приложения так, чтобы добиться нужного результата
    • Дружить со сборщиком мусора, профилировать и оптимизировать ruby и rails приложения по процессору и по памяти. Находить и устранять реальные bottleneck'и
    • Настраивать и использовать мониторинг rails-приложений, настраивать production-окружение и production-like данные локально
    • Оптимизировать работу СУБД, находить и оптимизировать медленные SQL-запросы, эффективно работать с индексами. Бороться с гидрой N+1, оптимизировать ActiveRecord и понимать, когда лучше работать в обход него
    • Оптимизировать фронтенд под современный интернет, использовать кеширование по максимуму, понимать как браузер строит страницу, получая ответ сервера, и оптимизировать этот процесс
    • Оптимизировать свой Development Experience: прогон тестов, сборку, деплой, CI и т.д.
    • Оптимизировать настройки app-сервера, адаптировать серверы под неравномерную нагрузку
    Программа
    Одна тема в неделю + задание на неделю.Проверка автором с подробным code review

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

    Скрытая ссылка
     
    Последнее редактирование: 23 окт 2023
  2. Последние события

    1. VasilyPupit
      VasilyPupit не участвует.
      4 окт 2024
    2. skladchik.com
      В складчине участвует 5 человек(а).
      3 окт 2024
    3. skladchik.com
      В складчине участвует 5 человек(а).
      11 май 2024
    4. boriz
      boriz не участвует.
      22 янв 2024

    Последние важные события

    1. skladchik.com
      Нужен организатор складчины.
      11 ноя 2023
    2. skladchik.com
      Назначен организатор.
      23 окт 2023
  3. Обсуждение
  4. 26 дек 2020
    #2
    stclaus
    stclaus ОргОрганизатор
    Курс будет в марте-апреле и июле-августе 2021, так что есть время, чтобы собраться.