Мы создаём высоконагруженный сервис с современным стеком технологий. Работаем по принципу mobile-first — разрабатываем приложение для iOS и Android. Занимаемся десктопной версией, пишем бэкенд, продолжаем активно обновлять технологии и пробовать новые подходы.
В приложении для Android пишем код на Kotlin (свыше 90% всей кодовой базы) и избавляемся от legacy на Java, используем свою реализацию паттерна MVI, Dagger 2 и RxJava. Активно присматриваемся к Flow и Jetpack Compose, разбиваем приложение на модули — сейчас их больше 70. Для сборок используем GitLab-CI, поддерживаем версии в трёх магазинах приложений.
В iOS большая часть модулей собрана на VIPER, часто с координаторами для переходов между модулями в рамках одного флоу. Верстаем кодом: PinLayout, FlexLayout. Всё новое пишем на Swift, большая часть legacy на Objective-C уже переписана. Сетевые слои на RestKit и на Alamofire, пользуемся Codable. В планах — попробовать SwiftUI. Сборку, подпись, загрузки и тесты делаем через GitLab-CI.
Веб реализован на стеке TypeScript, React и Redux. Большая часть legacy на JavaScript уже переписана. Для взаимодействия с сервером используем REST API и GraphQL — для работы с последним используем Apollo. Кодовую базу храним в Lerna-монорепозитории. Активно делимся опытом и приветствуем инициативы.
Основа бэкенда и API реализована на PHP и Go. Для управления данными и их хранения используем MongoDB, Tarantool, Kafka и Redis. Поисковая система работает на базе Elasticsearch. В качестве диспетчера сообщений настроен Apache Kafka, данные хранятся в Hadoop и ClickHouse. Для клиент-серверного взаимодействия используем GrapfQL и REST-эндпоинты. Особое внимание уделяем развитию рекомендательной системы Юлы, которая работает на основе больших данных и алгоритмах машинного обучения.
Пишем Unit-тесты, BDD-сценарии REST, Web, а также мобильные UI-тесты на Appium, нативные UI-тесты на Kaspresso. Описываем кейсы в Allure.
Мы запустили первую версию Юлы в 2015 году командой из семи человек в очень короткие сроки. Теперь нас больше, но мы по-прежнему сохраняем атмосферу драйва, взаимовыручки и командной сплочённости. Наши сильные стороны — это качество продуктовых и технических решений, высокая скорость разработки и отлаженные процессы в команде.
Становитесь частью команды, мы вас ждём!