Интерактивный воркшоп для программистов на Ruby и Rails, стремящихся освоить методы решения задач, связанных с увеличением масштаба приложений. Рассмотрим практические проблемы: оптимизацию ресурсов, Service Discovery, управление данными и обеспечением наблюдаемости - все необходимые аспекты для стабильного и масштабируемого функционирования системы.
Этот воркшоп подходит вам, если вы:
Стремитесь быть готовыми к горизонтальному масштабированию и сложным архитектурным задачам.
Желаете эффективно использовать ресурсы и обеспечить надежную работу системы под нагрузкой.
Испытали проблемы с производительностью и хотите лучше понимать, как их предвидеть и устранять.
Хотите быть подготовлены к сложным и трудно прогнозируемым проблемам, возникающим при масштабировании.
День 1. Стратегии масштабирования для Rails-приложений
Познакомимся с основными подходами к масштабированию, параллельной обработке данных, асинхронностью и оценим их влияние на производительность и использование ресурсов.
Результат
Сможете выбрать конфигурацию веб-сервера, оптимизированную под конкретную нагрузку.
Определитесь с подходящей стратегией масштабирования: потоки, процессы или файберы.
Оптимизируете использование памяти при масштабировании.
Содержание
Проблемы и методы масштабирования.
Основы процессов/потоков: нагрузки, связанные с вводом-выводом, и нагрузки, связанные с ЦП.
Использование памяти: Copy on Write, Garbage Collection, фрагментация памяти.
День 2. Вызовы масштабирования в Ruby-приложениях
Проанализируем проблемы при масштабировании общих данных и рассмотрим их решения. На примерах изучим методы синхронизации данных и обеспечения совместного доступа. Научимся настраивать мониторинг системы для улучшения наблюдаемости.
Результат
Будете готовы заранее решать типичные проблемы с доступом к данным.
Научитесь организовывать мониторинг и всегда оставаться в курсе событий в системе.
Поймете, как элементы приложения взаимодействуют друг с другом.
Содержание
Кэширование: KeyDd/Redis.
Синхронизация: выбор лидера и распределенная блокировка, Consul/Redlock.
День 3. Разделение приложений на модули и их взаимодействие
Поймем, из каких функциональных частей состоит Rails-приложение, как они взаимодействуют и масштабируются, а также какое место занимают в выполнении бизнес-функций.
Результат
Сможете разделять приложение на модули исходя из бизнес-функций.
Научитесь выделять и отдельно масштабировать только наименее производительные компоненты.
Улучшите качество обслуживания на протяжении жизненного цикла приложения.
Содержание
Проблемы и преимущества работы с единой кодовой базой.