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

Во всей команде более 50 человек из разных направлений: backend, frontend, mobile, QA, devops и helpdesk. Они работают по методологии, близкой к скраму: в продуктовой разработке живут двухнедельными спринтами, декомпозируют задачи, отталкиваясь от приоритизированных бэклога продукта и технического долга. В каждой команде есть дейли, груминги, оценка покером, ретроспективы и демо. Практикуется командное код-ревью, чтобы процесс не замыкался на одних и тех же участниках команды, а с новым кодом знакомились больше людей.
Какие технологии мы используем?

Backend
Архитектура построена на микросервисах (Golang), которые запускаются в кластере Kubernetes в нескольких экземплярах. Сервисы спрятаны за гейтвеем, с которым внешний мир общается по GraphQL API. Микросервисы с гейтвеем и между собой взаимодействуют по gRPC.

Асинхронное межсервисное взаимодействие базируется на RabbitMQ. Часть трафика обрабатывается в легаси монолитах (Perl, PHP) и зачастую используется как прокси в GraphQL для обеспечения обратной совместимости. Как хранилище данных используем MySQL, кэшируем в Redis. Производительность системы мониторится на нескольких уровнях: БД, кэш, очереди, CPU и RAM контейнеров, сеть.

В бэкенде все новые микросервисы покрыты unit-тестами, в некоторых местах присутствуют интеграционные. Старый код покрыт тестами частично, в основном с защитой от нелепых ошибок.

Frontend
Новые страницы реализованы с применением Vue, TypeScript и стейт-менеджера Pinia. Для общения с бэкендом используется GraphQL. Рендеринг страниц на сервере (SSR) выполняется за счет связки Vite и Fastify. Код хранится в монорепозитории под управлением pnpm и nx. Старая часть сайта, которая переписывается на новый стек, по большей части работает на шаблонах, куда напрямую передаются данные от бэкенда по паттерну MVC.

Во фронтенде тоже есть unit-тесты (покрыто более 90% бизнес-логики), используются инструменты для отслеживания за визуальной консистентностью (storybook).

Mobile
Мобильные приложения пишутся нативно под обе платформы. Новое приложение для Android разрабатываем на многомодульной архитектуре MVI с использованием подхода Single Activity. Для отображения пользовательского интерфейса предпочтение отдаем Compose. В тестировании применяем Junit, а для асинхронной работы – Coroutines. Весь код пишем на Kotlin.
iOS-приложение – полностью на Swift. В проекте используем многомодульную архитектуру MVVM и фреймворк Combine, для создания пользовательского интерфейса – UIKit и SwiftUI, для внедрения зависимостей – Needle. Все общение с бэкендом также по GraphQL.

Devops
DevOps-инженеры поддерживают и развивают существующую инфраструктуру: следят за работоспособностью серверов и сервисов, оперативно решают возникающие проблемы в среде эксплуатации, помогают командам разработки развивать CI/CD (Gitlab CI + werf). Приоритетное направление работы команды сейчас – переход инфраструктуры в облачную экосистему, поэтому мы наращиваем компетенции в FinOps. Также девопсы развивают в компании принципы IaC везде, где это применимо.

QA
Специалисты по тестированию отвечают за качество всех сервисов компании. Они подключаются на ранних этапах разработки, готовят тестовую документацию, проводят приемочное тестирование и регресс. Команда занимается развитием end-to-end тестов, используя Playwright, а также проводит регулярные нагрузочные тесты с помощью Locust, частота которых увеличивается перед запуском новых проектов или релизом крупного рефакторинга.