Этот воркшоп для вас, если вы: Хотите быть готовым к горизонтальному масштабированию и сложным архитектурным вызовам. Стремитесь эффективно использовать ресурсы и обеспечить стабильную работу системы под нагрузкой Сталкивались с проблемами производительности и стремитесь лучше понимать, как их предсказывать и устранять Хотите быть готовым к нетривиальным и неочевидным проблемам, возникающим при масштабировании День 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 20+ лет опыта в IT Более 10 лет в области web, ruby/rails, асинхронных систем Эксперт по распределённым системам и devops ex-Core Linux Developer Помогает командам создавать надёжные и масштабируемые системы В настоящее время работает в RNDSOFT - техлид, архитектор, devops и еще много всего интересного