Бесконечная лента
Создатели проекта бесконечной ленты поделились с нами некоторыми фактами из разработки. Передаём им слово.
Основная информация о разработке
Основным элементом интернет-проекта является лента, состоящая из «пикселей», которыми являются фотографии участников. Когда на портале регистрируется новый пользователь и загружает свою фотографию, один «пиксель» окрашивается цветом ленты. Главная особенность и сложность реализации этой идеи в том, что лента масштабируется в зависимости от количества участвующих в проекте пользователей и не имеет ограничений по длине.
Техническая реализация
Регистрация пользователей через социальные сети реализована с помощью протокола Oauth. Публикация ссылок на «пиксель» пользователя и на страницу проекта реализована через API социальных сетей с использованием технологии Open Graph.
Для ускорения загрузки главной страницы проекта используется кеширование на уровне прокси-сервера Nginx.
Получение всей информации для построения ленты (загрузка и обновление ленты, поиск по координатам, статистика) происходит по протоколу WebSocket с двухуровневым gzip-сжатием данных (первый является расширением WebSocket, а второй был реализован самостоятельно на уровне приложения). «Пиксели» пользователей передаются по WebSocket в формате base64.
Для обработки запросов используется событийная модель работы сервера приложений. Для обеспечения оптимальной производительности и поддержки работы с WebSocket настроен сервер Puma в режиме кластеризации.
Поддержка событийной модели на уровне приложения (server-side) осуществляется на основе push-нотификаций.
В качестве основного языка программирования используется Ruby.
Особенности разработки
Основная проблема, с которой пришлось столкнуться разработчикам – это постоянная асинхронная передача большого объема данных для построения ленты (“пиксели” пользователей) на client-side и их обновление в онлайн режиме большому числу пользователей без задержек. В качестве решения этой проблемы была разработана архитектура работы системы на основе событийной модели (в качестве транспорта для client-side используется протокол WebSocket, а передача информации о событиях на server-side осуществляется с помощью push-нотификаций).
Разработчик компания AT Consulting
AT Consulting — это один из сильнейших игроков на рынке информационных технологий и консалтинговых услуг для телекоммуникационного, финансового, государственного и других секторов. Ключевые направления деятельности компании: внедрение и сопровождение сложных информационных систем, управленческий и операционный бизнес-консалтинг, управление проектами и ИТ-аутсорсинг.