Разработка микросервисов на Go: проектирование и написание новых сервисов, расширение существующих.
Проектирование схем и оптимизация запросов в PostgreSQL (индексы, партиционирование, транзакции).
Написание аналитических запросов и агрегаций в ClickHouse для работы с большими объёмами событийных данных (логи, метрики, аналитика).
Использование Redis для кэширования, распределённых блокировок и очередей (в связке с pub/sub).
Создание REST API с документацией (OpenAPI/Swagger).
Разработка gRPC-сервисов на Protocol Buffers (proto3) для внутреннего взаимодействия между сервисами.
Интеграция и асинхронность: настройка обмена данными через брокеры сообщений (RabbitMQ), написание консьюмеров и продюсеров.
Участие в планировании: декомпозиция задач, оценка сроков, взаимодействие с аналитиками и DevOps для выкатки фичей.
Требования:
Golang – коммерческий опыт от 2–3 лет, уверенное владение конкурентными паттернами (горутины, каналы, sync-пакеты), знакомство с пакетами для веб-серверов (chi) и gRPC.
PostgreSQL – написание сложных запросов, оптимизация, знание индексов (B-tree, GIN), работа с миграциями (golang-migrate).
ClickHouse – проектирование таблиц (MergeTree), работа с распределёнными запросами, настройка индексов и партиций, оптимизация производительности аналитических выборок.
Redis – использование различных структур данных (строки, хеши, списки, sorted sets), реализация кэширования, очередей, блокировок с Redlock.
Protocol Buffers (proto3) – умение описывать .proto-файлы, генерировать код на Go, версионировать API.
REST API – проектирование ресурсных эндпоинтов, обработка ошибок, валидация, работа с HTTP-клиентами и middleware (логирование, аутентификация).
Будет преимуществом:
Контейнеризация и оркестрация – опыт с Docker и Kubernetes.
Опыт работы с Prometheus (экспорт метрик), Grafana (дашборды), распределённый трейсинг (Jaeger) и логи.
Умение профилировать приложения (pprof), настраивать пулы соединений, кэшировать запросы, работать с read replicas.