Открыто

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

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

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

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

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

  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. boriz
      boriz не участвует.
      22 янв 2024
    2. OhMyGod
      OhMyGod участвует.
      21 дек 2023
    3. skladchik.com
      Нужен организатор складчины.
      11 ноя 2023
    4. skladchik.com
      В складчине участвует 5 человек(а).
      26 окт 2023

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

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

Поделиться этой страницей