Онлайн-воркшоп для разработчиков на Ruby и Rails, которые хотят научиться решать проблемы роста приложения. Разберём реальные проблемы: оптимизацию ресурсов, Service Discovery, работу с данными и Observability — всё, что нужно для надежной и масштабируемой работы системы.
Хотите быть готовым к горизонтальному масштабированию и сложным архитектурным вызовам.
Стремитесь эффективно использовать ресурсы и обеспечить стабильную работу системы под нагрузкой
Сталкивались с проблемами производительности и стремитесь лучше понимать, как их предсказывать и устранять
Хотите быть готовым к нетривиальным и неочевидным проблемам, возникающим при масштабировании
Формат
Сроки
1 неделя, 3 вебинара длительностью 1,5 - 2 часа
Практика
Разберем реальные кейсы и примеры использования технологий, которые вы сможете использовать в своей практике. Также домашние задания и проверка заданий (для тарифов с практикой).
Живое общение
На период воркшопа вас будет поддержка в чате от эксперта и возможность обмена опытом с другими участниками.
Программа воркшопа
1 неделя 3 вебинара Практические задания Общение с автором и ответы на вопросы
Изучим общие подходы к масштабированию, параллельной обработке данных, асинхронности и рассмотрим влияние на производительность и потребление ресурсов.
Результат
Сможете выбрать конфигурацию web-сервера, подходящую именно под вашу нагрузку
Определитесь со стратегией масштабирования: потоки, процессы или файберы
Оптимизируете потребление памяти при масштабировании
Содержание
Проблемы и подходы к масштабированию
Введение в процессы/потоки: IO-bound и CPU-bound нагрузки
Архитектура веб-серверов Puma (Multi-threaded, Multi-process, Standalone), Passenger Master Process
Потребление памяти: Copy On Write, Garbage collection, фрагментация памяти
Разберёмся с проблемами общих данных при масштабировании и вариантами их решения. На примерах рассмотрим техники синхронизации данных и обеспечения одновременного доступа. Научимся настраивать мониторинг системы для повышения Observability
Результат
Научитесь заранее решать типовые проблемы и проблемы с общим доступом к данным
Сможете организовать мониторинг и всегда быть в курсе происходящего в системе
Поймете, как устроено взаимодействие экземпляров приложения между собой
Содержание
Кеширование: KeyDd/Redis
Синхронизация: Leader Election и Distributed Locking, Consul/Redlock
Работа с данными: Posix-File, S3/MinOO
Мониторинг: Victoria/Prometheus, dynamic targets
Service Discovery: consul, traefik
Разберёмся, из каких функциональных частей состоит Rails-приложение, как они взаимодействуют и масштабируются, какое место занимают в выполнении бизнес-функций.
Результат
Сможете разделять приложение на части с точки зрения бизнес-функций
Научитесь выделять и масштабировать отдельно только нагруженные компоненты
Повысите качество обслуживания приложения на протяжении его жизненного цикла
Выберете подходящую конфигурацию веб-сервера, определитесь со стратегией масштабирования и сократите потребление памяти.
Избежать типовых проблем масштабирования в продакшене
Научитесь организовывать доступ к данным, выстраивать мониторинг и понимать взаимодействие экземпляров приложения.
Масштабировать приложение без лишних затрат
Разделите приложение на части по бизнес-функциям и оптимизируйте нагруженные компоненты.
Обеспечить стабильность и высокую доступность
Улучшите поддержку приложения на всех этапах жизненного цикла и добьётесь надежной ипредсказуемой работы приложения.
Как проходит воркшоп
1
Онлайн-занятие
3 онлайн-встречи с экспертом в течение недели. Запись доступна на следующий день.
2
Задание
После занятия вы получите практическое задание (тарифы Практик и Эксперт), которое позволит отработать и закрепить полученные навыки
3
Проверка
Ведущий проверит задание (тарифы Практик и Эксперт) и даст рекомендации по его улучшению. В процессе вы можете задавать вопросы и всегда получить помощь
4
Решение
После воркшопа у вас будет готовое решение для применения в своем проекте и записи вебинаров навсегда
Более 10 лет в области web, ruby/rails, асинхронных систем
Эксперт по распределённым системам и devops
ex-Core Linux Developer
Помогает командам создавать надёжные и масштабируемые системы
В настоящее время работает в RNDSOFT - техлид, архитектор, devops и еще много всего интересного
"У меня огромный опыт (более 20 лет) в области распределенных систем как с самыми маленькими, так и большими облачными мультитенантными продуктами. Я с удовольствием поделюсь своим опытом и подсвечу проблемы и решения в экосистеме Ruby on Rails."
Почему тема масштабирования Rails-приложений всегда актулаьна?
При разработке любого продукта на Ruby on Rails рано или поздно встаёт вопрос масштабирования.
Даже если речь идёт всего лишь о настройке Puma и числа воркеров или о вынесении Sidekiq в отдельный процесс — это уже масштабирование. И с каждым шагом оно приносит новые вызовы: от простых проблем, решаемых Rails “под капотом”, до сложных и неочевидных, которые однажды проявятся в самый неподходящий момент.
Подготовившись заранее, вы сможете:
Избежать узких мест. Чем раньше вы поймете, как масштабируется система, тем меньше неожиданных проблем будет у вас в продакшене.
Грамотно управлять ресурсами. Не всегда лучший ответ — “добавить серверов”. Правильно налаженное масштабирование отдельных компонентов может существенно повлиять на эффективность всей системы в целом.
Подготовить приложение к росту. Сегодня трафик низкий, а завтра удачная рекламная кампания — и система ложится. Грамотно построенный мониторинг даёт уверенность в стабильной работе.
На воркшопе мы разберём не только очевидные, но и скрытые проблемы масштабирования, а главное — научимся их решать.
Требования к участникам
Общее понимание работы web, HTTP, reverse-proxy
Знание экосистемы Ruby on Rails: web-сервер, фоновые процессы, Rack
Установленный docker и docker compose и и владение ими на уровне пользователя
Базовые навыки работы с командной строкой в Linux-подобной системе