Масштабирование Rails-приложений [Thinknetica] [Юрий Самойленко]

Цена: 4900р. — Экономия от стоимости -62%

Взнос: 1816р.

Складчина: Масштабирование Rails-приложений [Thinknetica] [Юрий Самойленко]

Этот воркшоп для вас, если вы:

  • Хотите быть готовым к горизонтальному масштабированию и сложным архитектурным вызовам.
  • Стремитесь эффективно использовать ресурсы и обеспечить стабильную работу системы под нагрузкой
  • Сталкивались с проблемами производительности и стремитесь лучше понимать, как их предсказывать и устранять
  • Хотите быть готовым к нетривиальным и неочевидным проблемам, возникающим при масштабировании

День 1. Стратегии масштабирования Rails-приложений
Изучим общие подходы к масштабированию, параллельной обработке данных, асинхронности и рассмотрим влияние на производительность и потребление ресурсов.

Результат

  • Сможете выбрать конфигурацию web-сервера, подходящую именно под вашу нагрузку
  • Определитесь со стратегией масштабирования: потоки, процессы или файберы
  • Оптимизируете потребление памяти при масштабировании

Содержание

  • Проблемы и подходы к масштабированию
  • Введение в процессы/потоки: IO-bound и CPU-bound нагрузки
  • Архитектура веб-серверов Puma (Multi-threaded, Multi-process, Standalone), Passenger Master Process
  • Асинхронная обработка запросов: throw :async, Rack Socket Hijacking
  • Потребление памяти: Copy On Write, Garbage collection, фрагментация памяти

День 2. Проблемы при масштабировании Ruby-приложений
Разберёмся с проблемами общих данных при масштабировании и вариантами их решения. На примерах рассмотрим техники синхронизации данных и обеспечения одновременного доступа. Научимся настраивать мониторинг системы для повышения Observability

Результат

  • Научитесь заранее решать типовые проблемы и проблемы с общим доступом к данным
  • Сможете организовать мониторинг и всегда быть в курсе происходящего в системе
  • Поймете, как устроено взаимодействие экземпляров приложения между собой

Содержание

  • Кеширование: KeyDd/Redis
  • Синхронизация: Leader Election и Distributed Locking, Consul/Redlock
  • Работа с данными: Posix-File, S3/MinOO
  • Мониторинг: Victoria/Prometheus, dynamic targets
  • Service Discovery: consul, traefik

День 3. Разделение приложений на компоненты и налаживание взаимодействия
Разберёмся, из каких функциональных частей состоит Rails-приложение, как они взаимодействуют и масштабируются, какое место занимают в выполнении бизнес-функций.

Результат

  • Сможете разделять приложение на части с точки зрения бизнес-функций
  • Научитесь выделять и масштабировать отдельно только нагруженные компоненты
  • Повысите качество обслуживания приложения на протяжении его жизненного цикла

Содержание

  • Проблемы и выгоды единой кодовой базы
  • HTTP-компонент. Rails
  • JOBS-компонент. Solid Queue, Sidekiq, Delayed Job
  • Cron/Scheduler-компонент, Rufus Scheduler
  • Вспомогательные компоненты: AMQP-listener, KAFKA-listener
  • Мониторинг компонентов приложений
  • Service Discovery компонентов приложений

Этот воркшоп поможет:
Настроить сервер под реальную нагрузку

  • Выберете подходящую конфигурацию веб-сервера
  • Определитесь со стратегией масштабирования
  • Сократите потребление памяти.

Избежать типовых проблем масштабирования в продакшене

  • Научитесь организовывать доступ к данным
  • Научитесь выстраивать мониторинг
  • Научитесь понимать взаимодействие экземпляров приложения.

Масштабировать приложение без лишних затрат

  • Разделите приложение на части по бизнес-функциям
  • Оптимизируете нагруженные компоненты.
  • Обеспечите стабильность и высокую доступность
  • Улучшите поддержку приложения на всех этапах жизненного цикла
  • Добьётесь надежной и предсказуемой работы приложения.

Автор воркшопа
Юрий Самойленко. Архитектор и Техлид в RNDSOFT

Цена 5900 руб

Источник