Camfrog Video Chat - Сервис аудио-видео чатов. Разработка начата нами с нуля в 2002 году, проект запущен в жизнь в 2003 году и продолжает развиваться по настоящий момент. Владельцем проекта является компания Camshare, Inc. США. База пользователей: более 100М скачиваний по всему миру, 200К пользователей онлайн. Команда разработки: 30+ сотрудников, включая разработчиков, верстальщиков, тестировщиков, дизайнеров, системных администраторов.

Основные компоненты проекта:
  • Клиентские приложения для платформ Windows, Android, iOS, macOS
  • ВЕБ сайт для пользователей, плюс внутренний сайт для администрирования и управления системой
  • Центральный сервер, который реализует бизнес логику работы системы, поддерживает постоянные и сеансовые коннекты с клиентскими приложениями
  • Медиа сервера, которые обеспечивают координацию передачи и распараллеливание потоков передачи видео и аудио информации от пользователей
Клиентское приложение для Windows:
  • WTL/ATL/STL, C++17, CMake, Conan
  • CI/CD: Gitlab CI, слегка модифицированный GitFlow, Python, NSIS
  • В процессе миграции на Чистую Архитектуру с прицелом на замену UI-фреймворка
  • Активно внедряем юнит-тесты (gtest/gmock), приветствуем TDD (без фанатизма)
  • Есть комплект UI тестов
Клиентское приложение для Android:
  • Основной язык Kotlin
  • Есть немного на Java, постепенно переписывается на Kotlin
  • CI/CD: Gitlab CI, GitFlow
  • Активно используем RxJava/RxKotlin
  • MVP + The Clean Architecture
  • Поддерживаем внутренний, общий фреймфорк для разработки, который позволяет быстро и удобно добавлять новые ui-модули и использовать их в двух разных проектах cо своими стилями и бэкендом
  • Retrofit2, OkHttp
  • Есть комплект UI тестов
Клиентское приложение для iOS/macOS:
  • Основной язык SWIFT
  • Есть немного кода на ObjectiveC, который планово переписывается на SWIFT
  • CI/CD: Gitlab CI, GitFlow, Codemagic
  • Придерживаемся подхода: Clean Architecture
  • Модульная архитектура
  • RxSwift, Swinject
  • Все разработчики активно участвуют в CodeReview
Веб-сайт:
  • PHP7.4, Yii2, Vue.js v2, Doctrine 2.x
  • Постепенно переходим на Vue.js v3, в ближайших планах переход на PHP 8.x
  • Микросервисы на Golang и PHP Swoole
  • E2E-тесты и Unit-тесты
  • MySQL, MongoDB, Memcache, Redis, Kafka, Nats
  • Gitlab, CI, Docker, Kubernetes
Центральный сервер:
  • Занимается обслуживанием высоконагруженных процессов для предоставления возможностей проекта онлайн пользователям, инфраструктура состоит из нескольких десятков серверов, на которых работают 30+ различных микросервисов
  • Написан на C++17, используются: Protobuf, CMake, Conan, gtest
  • Некоторые сервисы на Golang, планируется внедрение Rust
  • Микросервисная архитектура, брокер-сообщений NATS
  • Используем Gitlab CI/CD, Docker
Распространенный среди пользователей США видеочат, более 4 тыс. каналов и более 4 млн. активных пользователей. На каждом канале могут одновременно общаться тысячи пользователей. Каналы, как правило, посвящены различным тематикам: музыка, спорт, религия и т. п. Владелец: компания Paltalk Inc., США

Мы разрабатываем клиентские приложения для платформ Windows, macOS, Android, iOS
Клиентское приложение для Windows и macOS:
  • Единая кодовая база для Windows / macOS приложений
  • C++17, STL, Qt 5 Widgets, CMake, Conan
  • CI/CD: Gitlab CI, слегка модифицированный GitFlow, Python, NSIS
  • Активно внедряем юнит-тесты (gtest/gmock), приветствуем TDD (без фанатизма)
  • Есть комплект автоматизированных UI тестов с использованием Squish for Qt
  • В процессе миграции на Чистую Архитектуру
Клиентское приложение для Android:
  • Основной язык Kotlin
  • Есть немного на Java, постепенно переписывается на Kotlin
  • CI/CD: Gitlab CI, GitFlow
  • Активно используем RxJava/RxKotlin
  • MVP + The Clean Architecture
  • Поддерживаем внутренний, общий фреймфорк для разработки, который позволяет быстро и удобно добавлять новые ui-модули и использовать их в двух разных проектах cо своими стилями и бэкендом
  • Retrofit2, OkHttp, WebSockets
  • Есть комплект UI тестов
Клиентское приложение для iOS/macOS:
  • Основной язык SWIFT
  • Есть код на ObjectiveC, который планово переписывается на SWIFT
  • CI/CD: Gitlab CI, GitFlow, Codemagic
  • Придерживаемся подхода: Clean Architecture
  • Модульная архитектура
  • RxSwift, Swinject, SwiftLint
  • Все разработчики активно участвуют в CodeReview
Начиналось все с виртуальной камеры, которая позволяла нескольким приложениям получать доступ к видеопотоку с одной веб-камеры. Теперь же ManyСam - это многофункциональное приложение для захвата, обработки, наложения видеоэффектов и передачи множества мультимедийных потоков как по сети, так и через локальный виртуальный драйвер. Среди источников реализованы веб камеры, IP камеры, захват рабочего стола, захват игр, мультимедиа файлы как офлайн, так и онлайн, сетевая передача с мобильных устройств и видео звонки. Владелец компания Visicom Media Inc, Канада. У приложения более 100 миллионов загрузок.

Мы разрабатываем этот проект с 2006 года с самого начала. Сейчас в команде 20+ сотрудников. Приложение доступно для платформ: Windows, macOS, Android, iOS. Существует сайт для пользователей и внутренний, административный. Клиентское приложение для Windows и macOS:
  • C++17, Qt 5 Widgets, CMake
  • Активно занимаемся ускорением приложения на GPU (DirectX/Metal/аппаратные кодеки), а также другими оптимизациями, включая низкоуровневую нативную разработку под все платформы
  • Широкий набор используемых технологий и протоколов в области медиа и графики: Media Foundation, DirectShow, DirectX/Metal, RTMP, WebRTC, AVFoundation
  • Активно развивается направление прикладного Machine Learning в области Computer Vision (в частности виртуальный фон): как непосредственно обучения (Pytorch), так и деплоя (OpenVINO, CoreML, WinML)
  • CI/CD: jenkins, активно переходим на Gitlab CI, GitFlow
  • Планируем мигрировать на плагинную архитектуру
  • Есть комплект автоматизированных UI тестов, работающих на API, предоставляемом приложением
Клиентское приложение Android:
  • Много кода на Java, весь новый код пишется на Kotlin
  • RxJava2 (ещё не везде, но мы стараемся)
  • Используем архитектуру MVVM, DI-фреймворк Dagger
  • Вся логика обработки видео реализована на GPU (OpenGL), включая аппаратные кодеки
  • Потоковое видео на основе RTMP
  • Активно развивается направление видеозвонков и чатов с использованием WebRTC и кастомных протоколов и серверов (WebSocket)
  • В будущем планируется Machine Learning
  • Более миллиона установок, больше 100000 активных пользователей
  • Мы любим рефакторинг
ВЕБ сайт:
  • PHP7, MySQL, Yii, новую логику переносим на микросервисы на Laravel, Gitlab CI
  • Веб-сервисы на golang и redis для нотификаций и чатов для большого числа клиентов
  • 15+ серверов для БД, веба, сервисов с горизонтальным масштабированием
  • Активное использование возможностей Amazon Cloud: AWS SES, WAF, Auto Scaling, Balancing
  • Elasticsearch и Kibana для сбора и отображения аналитики
Веб-сервис удаленного доступа к десктопным компьютерам. Не требует установки плагинов, использует новейшие веб-технологии. Поддерживает несколько протоколов для обеспечения скорости и стабильности соединения, такие как p2p (webrtc), websockets, https, что позволяет работать в сложных условиях за корпоративными файерволлами. Позволяет разграничивать права доступа к машинам (доступно только для корпоративных аккаунтов) и отслеживать все проведенные сессии. Реализована система для управления контактными данными клиентов, создания квитанций об оказанных услугах, а также другие функциональные возможности.

Реализован собственный механизм упаковки для минимизации передаваемого трафика. Адаптивная система подстройки качества к скорости канала передачи данных.
Проект содержит компоненты:
Клиентское приложение для Windows и macOS:
  • C++13, WinApi, boost, WebRTC
  • Реализованы сборки брендированных клиентов (с подстановкой логотипа и данных компании)
  • Автоматический деплой посредством стандартных средств контроллера домена
Клиентское приложение Android:
  • Kotlin
  • WebRTC
ВЕБ сайт:
  • PHP7, MySQL, Laravel, Gitlab CI
  • ReactPHP, Websockets
Сервис передачи данных:
  • C++13, boost, WebRTC, Linux
Для обеспечения надежности используется дублирование ВЕБ сайтов, сервиса передачи данных и дополнительных компонентов.
Видеочат, работающий непосредственно в веб-браузере. Для этого на клиентской стороне реализован полноценный WebRTC client с использованием фреймворка Polymer. При разработке нативных мобильных клиентов общая часть по работе с сетью (WebRTC) и бизнес логикой выделена в отдельный компонент Middleware, написанный на C++. На серверной стороне реализован полноценный WebRTC server, который позволяет плавно балансировать нагрузку между медийными endpoints и динамически добавлять новые ноды в общий пул. Большая часть проекта заключалась в построении стабильной, отказоустойчивой системы, способной справляться с большими объемами трафика, в том числе и DDOS атаками. Часть сервисов модерации контента, характерных для UGC проектов, реализована на языке Go.

Проект содержит компоненты: Клиентское приложение Android:
  • Java, Kotlin, JNI
Клиентское приложение iOS:
  • Swift
Клиентская библиотека Middleware
  • с++11, webrtс
ВЕБ сайт:
  • PHP7, MySQL, Laravel, Gitlab CI
  • ReactPHP, Websockets
  • Redis, Memcache
  • Golang
Сервис передачи данных:
  • STUN
  • C++13, Golang, boost, WebRTC, Linux
Сервис агрегации и анализа отзывов пользователей о товарах, позволяющий выбрать действительно качественный товар у надежного продавца в интернет-магазинах. Основан на технологии машинного обучения и оригинальных алгоритмах анализа текстов на естественном языке.
"Акинатор" в мире фильмов, развлекательный сервис, который задает пользователям простые вопросы с ответами да/нет и за пару десятков таких вопросов угадывает о каком фильме они думают. Интересно, что многие используют сервис для поиска забытых старых фильмов, а также для подборки похожих фильмов.