Бесконечная лента

Создатели проекта бесконечной ленты поделились с нами некоторыми фактами из разработки.  Передаём им слово.

Основная информация о разработке

Основным элементом интернет-проекта является лента, состоящая из «пикселей», которыми являются фотографии участников. Когда на портале регистрируется новый пользователь и загружает свою фотографию, один «пиксель» окрашивается цветом ленты.  Главная особенность и сложность реализации этой идеи в том, что лента масштабируется в зависимости от количества участвующих в проекте пользователей и не имеет ограничений по длине.

20150506141503944_bf0bdb22

Техническая реализация

Регистрация пользователей через социальные сети реализована с помощью протокола 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 – это один из сильнейших игроков на рынке информационных технологий и консалтинговых услуг для телекоммуникационного, финансового, государственного и других секторов. Ключевые направления деятельности компании: внедрение и сопровождение сложных информационных систем, управленческий и операционный бизнес-консалтинг, управление проектами и ИТ-аутсорсинг.