Одноклассникам 20 лет: от фундамента на Java до крупных технологий VK
26 марта ещё одна соцплатформа VK, Одноклассники, отмечает 20-летие. Кажется, что в массовом представлении Одноклассники — это поздравительные открытки с блёстками, подарки от маминой подруги и игры из нулевых. Но на самом деле это один из самых долгоживущих и при этом технологичных высоконагруженных проектов рунета.
За 20 лет сервис пережил несколько технологических эпох, смену форматов контента и привычек аудитории. И на этом пути внутри Одноклассников родились решения, которые стали базовыми для всей VK: облачная платформа One-cloud, видеоплатформа и сервис анализа ошибок Tracer. Кто и как создавал эти технологии и почему они успешно масштабировались — рассказываем в статье.
Соцсеть = инженерная система
Для обычного пользователя соцсеть выглядит привычно и просто: вот сайт с личной страницей, там раздел с сообщениями, лента, видео... А технически это распределённая система, где каждое действие пользователя запускает цепочку операций. Например, чтобы открыть ленту, система должна: получить данные профиля из хранилища, проверить права доступа, собрать персонализированную выдачу, подтянуть медиа из сети доставки контента, записать реакции в базу, обновить счётчики и отправить уведомления. Вся эта цепочка должна укладываться в миллисекунды. Иначе пользователь увидит зависание и закроет приложение. Добавьте к этому, что аудитория соцсети — миллионы людей, которые совершают действия одновременно. Чем больше пользователей, тем выше нагрузка на каждый элемент цепочки.
«Соцплатформа состоит из десятков сервисов: лента, сообщения, медиа, уведомления, рекомендации. Но пользователь не видит этой архитектуры. Если один из этих сервисов начинает работать неправильно, для человека это выглядит как „не работают Одноклассники“. Поэтому для инженеров устойчивость всей цепочки — это крайне важное требование», — объясняет технический директор Одноклассников Василий Кирюхин.
В таких условиях формировались требования и системные инженерные принципы Одноклассников. Отказоустойчивость и надёжность стали базовым условием для архитектуры платформы.
Почему Java стала языком ОК
Технологический стек начал формироваться в конце 2000-х, в первые годы после запуска соцсети. Начальные версии сервиса разрабатывались на C# — но команда быстро поняла, что платформа слабо масштабируется для быстро растущей аудитории. Нужен был язык, способный выдерживать кратный рост нагрузки.
Остановились на Java. К тому моменту это была одна из самых зрелых технологий для высоконагруженных систем и развивалась в основном за рубежом. Платформа Одноклассников проектировалась так, чтобы масштабироваться горизонтально: stateless-сервисы можно было наращивать вместе с ростом нагрузки, а распределённые хранилища позволяли обрабатывать всё больший объём пользовательских данных.
«Масштабирование обеспечивалось глубоким пониманием работы платформы Java и, как следствие, её максимально эффективным использованием. Многие ребята, которые занимались инфраструктурой Одноклассников, раньше работали в Sun, Oracle и других компаниях, тесно связанных с Java. Они помогли оптимизировать узкие места в языке и вокруг него — мы разработали собственные механизмы сериализации, системы удалённых вызовов сервисов, off-heap кеши и оптимизированные сетевые транспорты. Всё это позволило значительно увеличить возможности для масштабирования», — рассказывает Егор Замараев, руководитель отдела разработки контентных сервисов в Одноклассниках.
One-cloud: единая облачная технология
К середине 2010-х Одноклассники уже работали в нескольких дата-центрах и опирались на тысячи серверов. Исторически инфраструктура строилась по простой схеме: один сервер — одна задача. С таким подходом проще эксплуатация, но ресурсы используются неравномерно: часть машин простаивает, а другие не справляются с нагрузкой и задерживают обработку запросов. Такое распределение подтолкнуло команду создать собственную облачную платформу One-cloud.
«В какой-то момент стало ясно, что дальше масштабировать платформу по старым правилам уже нельзя. Нужно было не просто выделять новые серверы под каждый сервис, а научиться гораздо плотнее использовать уже имеющееся железо — так, чтобы сервисы можно было размещать гибко, автоматически распределять ресурсы и при этом не терять предсказуемость для самых критичных нагрузок. По сути, One-cloud и стала таким слоем управления», — говорит руководитель One-cloud VK Руслан Исмагилов.
С инженерной точки зрения One-cloud решала сразу несколько задач:
- Она убирала ручное управление инфраструктурой как главный тормоз роста: разработчик описывает, какие ресурсы нужны сервису и как он должен переживать сбои, а платформа сама размещает его в доступной среде и следит за жизненным циклом.
- One-cloud меняла сам объект управления. Если раньше команда оперировала серверами, то теперь — CPU, памятью, сетью, диском и правилами изоляции между разными типами нагрузок.
Для соцплатформы это принципиально: пользовательские сервисы, фоновые расчёты и аналитические задачи не должны конкурировать друг с другом. Иначе из-за одной тяжёлой задачи будут замедляться, например, лента или сообщения. One-cloud проектировали как систему, которая умеет распределять ресурсы дата-центров и задавать классы изоляции для разных типов сервисов.
Создание One-cloud стало переломным моментом. Команда перестала мыслить отдельными серверами и начала управлять инфраструктурой как единым пулом ресурсов. То, что начиналось как способ эффективнее использовать собственные дата-центры Одноклассников, выросло в облачную технологию для всей VK.
Видео: архитектурные решения для сервисов VK
Одноклассники выступили технологической лабораторией для всей компании ещё в одном направлении — в видео. В середине 2010-х внутри соцсети начали активно развивать собственную инфраструктуру для обработки и доставки видеоконтента.
Изначально это был небольшой экспериментальный проект: несколько разработчиков запустили первую версию видеосервиса для веб-версии соцсети. Но быстро стало понятно, что аудитория активно потребляет видеоконтент, а объём загружаемых роликов растёт почти геометрически.
С ростом просмотров и появлением прямых трансляций видео превратилось из рядовой функции в отдельное технологическое направление. Вокруг эксперимента сформировалась полноценная команда, а сама видеоплатформа начала развиваться как самостоятельный инфраструктурный слой. Системе нужно было принимать ролики, перекодировать их в разные форматы, хранить большие объёмы медиафайлов и быстро доставлять их миллионам зрителей.
«Активно развивать видеотехнологии с продуктовой позиции мы начали примерно с 2018 года. Одноклассники транслировали крупные мировые спортивные соревнования. Во время таких трансляций аудитория быстро росла, и мы видели, что платформа спокойно выдерживает пики нагрузки. При этом пользователи сравнивали трансляции на разных площадках и часто писали, что у нас лучшая картинка — это стало для нас подтверждением, что нашу видеоплатформу можно масштабировать», — рассказывает Сергей Томилов, руководитель по работе с авторами ОК.
Со временем часть архитектурных решений для видео Одноклассников легла в основу видеоплатформы VK. Это инфраструктура, которая сегодня обеспечивает загрузку, обработку, хранение и доставку видеоконтента для разных сервисов компании, включая ВКонтакте, VK Видео и VK Клипы.
Tracer: сервис для анализа ошибок
Если One-cloud помогает управлять инфраструктурой, а видеоплатформа — выдерживать высокую аудиторную нагрузку, то Tracer отвечает за следующий уровень: быструю реакцию на сбои в системе. Когда платформа состоит из десятков сервисов и регулярно выпускает новые версии, ошибки неизбежны. И работать с ними важно на опережение.
Для этого в Одноклассниках появился Tracer — сервис анализа ошибок мобильных приложений и веб-сервисов. По функциональности его можно сравнить с Firebase Crashlytics или Sentry. Для команды ОК он изначально был внутренним инструментом наблюдения за крупной распределённой системой.
«Для большой платформы важно не только зафиксировать, что произошёл сбой, но и быстро понять его причину. Tracer как раз решает эту задачу: он находит ошибку, собирает всю техническую информацию о ней и показывает разработчикам, где именно в системе возникла проблема. Команда мгновенно получает сигнал об инциденте — через интерфейс, почту или мессенджеры. Во многих случаях это позволяет заметить проблему ещё до того, как её успевают почувствовать пользователи», — делится руководитель проекта Tracer Кирилл Попов.
Tracer зарекомендовал себя как надёжный внутренний инструмент для диагностики ошибок в высоконагруженной системе и постепенно превратился в полноценную платформу. А потом вышел на внешний рынок и стал самостоятельным инфраструктурным сервисом. Сегодня его используют не только Одноклассники, ВКонтакте и другие продукты VK — Tracer применяют у себя более 2 тысячи организаций, к системе подключены тысячи приложений.
Одноклассники как лаборатория инженерных стандартов
Как живёт соцсеть: это миллионы пользователей онлайн, десятки связанных сервисов, пиковые нагрузки на инфраструктуру. В таких условиях для архитектуры нужны не теоретически красивые решения, а практичные, масштабируемые и долговечные. Такие и создавали в Одноклассниках с 2006 года. Java-платформа, заложенная в конце 2000-х, до сих пор в основе Одноклассников.
За 20 лет архитектуру ни разу не переписывали, как часто бывает с продуктами на долгой дистанции. Её развивали итеративно: находили узкие места, оптимизировали, добавляли слои наблюдаемости. Это редкий для рынка пример эволюции большой системы без перезапусков, и в случае Одноклассников он объясняется культурой эксплуатации и инженерной дисциплиной.
За двадцать лет Одноклассники стали для аудитории надёжной и привычной платформой для общения: здесь знакомятся, поддерживают дружеские и рабочие контакты, делятся увлечениями несколько поколений пользователей. А для инженерного сообщества Одноклассники смогли создать сильные решения, которые вышли за пределы платформы.