Разработка крупного масштабируемого проекта с нуля [соц.сеть на 100 млн пользователей]
Мастер-класс посвящен разработке архитектуры любого очень большого проекта. Главный сюрприз - для широкого круга проектов можно применить одну архитектуру с честным горизонтальным масштабированием. Она на 100% подходит для социальных сетей, магазинов, маркет плейсов, игр, сми, блогов и т.д.
Цель обучения состоит в изучении и интенсивном освоении этой универсальной архитектуры для проекта, где в будущем появятся десятки-сотни млн. сущностей - профайлов пользователей, товаров, веток блога, игровых объектов и т.д. Мы не зацикливаемся на мелочах, с которыми умный программист справится сам (типа оптимизации запросов или какую SQL выбрать), а решаем более важную проблему - что конкретно делать тимлиду/CTO, которому необходимо создать архитектуру проекта с потенциальным ростом до масштабов Facebook.
Если вам и выпадет шанс участвовать в реально крупном проекте, то вряд ли более 1 раза в жизни. Поэтому главная задача - избежать провала, создав архитектуру БД/кода так, чтобы они развивались много лет без падений из-за внезапного бурного роста трафика и проект в целом работал 24/7. Разумеется, стратегия СТО / тимлида / архитектора "я решу эту задачу за счет масштабирования из коробки в MongoDB / Hadoop / Cassandra / etc" не работает на объемах после пары десятка серверов. Роль нанятого технического специалиста как раз в том, чтобы не перекладывать ответственность на чужой черный ящик или на будущую команду после своего увольнения. К сожалению, на конференциях и в интернете 95% всего контента о крутых коробочных решениях для масштабирования создаются тимлидами, попробовавшими "коробку" на мелких объемах (менее сотен нод). Отзывы оставшихся 5% просто не видны. В итоге - массовая уверенность в чужих продуктах.
Падение готового кластерного решения случается внезапно: время запросов сначала незаметно деградирует, а после некоторого - экспоненциально. Типовой проект в такой типовой ситуации "лежит" в среднем несколько месяцев, причем добавление нод проблемы не решает. Победа первого падения не избавит от системных проблем в будущем, т.к. масштабированием по прежнему занят неуправляемый черный ящик и у команды нет полгода, чтобы избавиться от него. Необходимо изучать особенности масштабирования "до", а не "после", и главное - иметь полный контроль над собственной архитектурой масштабирования (править исходные коды Hadoop - выглядит красиво лишь на словах).
На мастер-классе рассматриваются все аспекты трафика: от входа веб-запроса на балансер, до конечных физических дисковых операций i/o. Изучаются шаблоны хранения данных в nosql (переводится как "не только sql"), nosql баз данных, принципы масштабирования и балансировки нагрузки, шардинг и миграция данных, атомарность и многопоточная работа с данными, кеширование, блокировки и т.д. Знание инструментов разработки и другие навыки опытного программиста в сравнении с главной задачей - уходят на второй план по важности. Обучение состоит в концентрации на темах, которые нельзя заранее прогнозировать: неизвестен характер будущей нагрузки и пр. Эта универсальная архитектура эксплуатируется уже более 9 лет в Topface. В точности по ней же ~15 лет назад были реализованы Facebook и VK, имеющие более 10К нод под базы данных.
Целевая аудитория: программисты PHP, Java, Ruby, Python, node.js, DevOps, DBA, архитекторы, СТО и т.д. Мастер-класс посвящен методам мгновенного оперирования огромным кол-вом данных в реальном времени и не привязан ни к одному из языков программирования (но примеры с кодом изучаем).
Подробный план всех тем мастер-класса, тезисы, цели, о докладчике - http://php.spb.ru
Длительность - весь день, 8 часов. В Москве мастер-класс состоится 22 июня 2019 - покупка билетов на http://devconf.ru. В Санкт-Петербурге - 21.07.2019 (ВС) в 10:00, Ул. Мира 5, покупка билетов на http://php.spb.ru.