Обязанности:
Мы ищем опытного Senior Go-разработчика для проектирования, развития и поддержки высоконагруженных и распределенных микросервисных систем. Нам важен специалист с сильной архитектурной базой, глубоким пониманием внутренних механизмов Go и проактивным подходом к инженерным процессам. Ключевые требования: От 5 лет коммерческого опыта разработки на Go (Golang) в продакшене. Глубокая экспертиза в философии языка: лаконичность, явность, эффективность, идиоматичный код и конкурентность. Опыт проектирования и развития высоконагруженных (Highload) и распределенных систем. Развитые Soft Skills: умение аргументировать технические решения, менторить коллег, проводить системный Code Review и проактивно влиять на продукт. Детализированные требования 1. Ядро Go и Hard Skills Concurrency & Synchronization: Идеальное владение горутинами, каналами, select, пакетом sync (Mutex, RWMutex, WaitGroup, Pool, atomic). Глубокое понимание Race Conditions и умение проектировать thread-safe архитектуру. Go Internals (Advanced level): Понимание модели памяти Go, работы стека и кучи, механизмов Escape Analysis. Опыт взаимодействия с runtime: работа планировщика (Scheduler), управление памятью и сборка мусора (GC), профилирование и трассировка (pprof, go tool trace). Понимание внутреннего устройства интерфейсов (iface, eface). Осознанное применение рефлексии (reflect) и дженериков (Generics). Тестирование: Покрытие кода Unit-, Integration- и E2E-тестами. Опыт применения testing, testify, gomock/mockery, использование табличных тестов (Table-Driven Tests). Управление зависимостями: Уверенная работа с go mod, SemVer и стратегиями вендоринга. 2. Инфраструктура и смежный стек Протоколы и API: Глубокие знания и практический опыт проектирования gRPC (включая Streaming) и REST (OpenAPI / Swagger). Опыт работы с GraphQL будет плюсом. Базы данных: SQL: Опыт работы с database/sql, sqlx или ORM (GORM). Оптимизация пулов соединений, написание сложных/эффективных запросов, управление миграциями (goose, golang-migrate). NoSQL: Продакшен-опыт работы с Redis (паттерны кэширования, структуры данных), MongoDB, Cassandra. Брокеры сообщений: Понимание паттернов Pub/Sub, Event Streaming и опыт работы с Kafka, RabbitMQ, NATS. Микросервисная экосистема: Контейнеризация и оркестрация: Эффективная сборка Docker-образов (multi-stage builds), опыт работы с Kubernetes (Pods, Deployments, Services, ConfigMaps/Secrets). Service Mesh: Опыт взаимодействия с Istio / Linkerd будет существенным преимуществом. Observability (Мониторинг, Логирование, Трейсинг): Сбор метрик в Prometheus, настройка дашбордов в Grafana. Структурированное логирование (slog, zap, zerolog). Распределенный трейсинг через OpenTelemetry / Jaeger. 3. Архитектура и проектирование Практическое применение архитектурных подходов: Clean Architecture, Hexagonal Architecture, Domain-Driven Design (DDD). Знание и применение паттернов микросервисной архитектуры: CQRS, SAGA, Circuit Breaker, Retry, Rate Limiting, Backoff. Проектирование систем на базе Event-Driven Architecture (EDA). Опыт проведения декомпозиции монолитных систем на микросервисы. Понимание и построение многоуровневых систем кэширования (in-memory, распределенные кэши). 4. Процессы и методологии Git: Уверенное владение Git (complex merges, rebase, gitflow). CI/CD: Понимание принципов Continuous Integration / Delivery, опыт настройки и редактирования пайплайнов (GitLab CI, GitHub Actions, Jenkins). Инженерные практики: Культура конструктивного Code Review, знание Agile/Scrum/Kanban. SRE & Operations: Базовое понимание метрик надежности (SLI / SLO / SLA, Error Budgets). Будет плюсом: Опыт разработки сетевых приложений низкого уровня (TCP / UDP, собственная реализация сетевых протоколов). Опыт коммерческой разработки на других языках (Java, C++, Python) для понимания и сравнения системных парадигм.Похожие вакансии