Tech Lead Go в сервис хранения пользовательских данных
Высоконагруженное файловое хранилище собственной разработки, написанное на языке Go. Это решение отличаются шардированием, репликацией и линейной масштабируемостью, что обеспечивает 100% доступность файлов. Эти файлы играют ключевую роль в процессе совершения покупок клиентами через мобильное приложение и на сайте Wildberries, а также в пунктах выдачи заказов компании.
Продукт обрабатывает более 28 тысяч запросов в секунду, обеспечивая бесперебойную работу 24/7, 365 дней в году.
Количество клиентов сервиса измеряется в миллионах. Мы являемся гарантами синхронизации пользовательских данных на всех платформах Wildberries.
Данные, которые мы храним:
- Корзины пользователей;
- Доставки пользователей;
- Настройки приложения пользователей;
- Кэш пользователя;
- Системная информация по корзине, заказам, пользователям и так далее.
Особенность сервиса заключается в том, что данные для хранения могут быть представлены в любой модели данных, и мы никак не ограничиваем клиентов в сохранении пользовательских файлов в сервисе.
Как мы работаем:
- Пишем на последних версиях Go.
- Используем Kafka для межсервисного взаимодействия.
- В сервисе нет базы данных, данные хранятся в файловой системе на серверах, но в будущем возможно появление ClickHouse.
- Используем Elasticsearch, Grafana, Alertmanager и Kubernetes K8S.
- Все приложения упакованы в Docker и деплоятся нажатием одной кнопки.
- У нас отличный CI/CD запускаем тесты, проверки безопасности и стиля на каждый pull request.
- Все pull request проходят обязательное code review.
- Участвуем в разработке и проектировании архитектурных решений, а также в реализации бизнес-задач.
Задачи:
- Проектировать и управлять архитектурой решений, улучшать существующую микросервисную архитектуру.
- Совершенствовать подходы и процессы разработки, писать новые и развивать существующие сервисы на Go.
- Руководить технической стороной команды разработки: декомпозировать и ставить задачи разработчикам, контролировать выполнение решений, проводить код-ревью, управлять приоритетами работ.
- Участвовать в планировании с менеджером проекта для реализации задач разработки продуктов.
- Согласовывать с бизнес-заказчиками требования, а также ставить приоритеты задачам.
- Участвовать в процессе найма и наставничества разработчиков.
Ожидания от кандидата:
- Опыт коммерческой разработки на Go от 4 лет.
- Отличное знание базовых алгоритмов и структур данных.
- Способность самостоятельно разбираться в сложных вопросах, проактивность в решении задач, умение консолидировать усилия свои и команды для достижения целей.
- Опыт написания провайдеров и библиотек для подключения к базам данных, брокерам сообщений и другим инфраструктурным компонентам, а не только логики приложения.
- Опыт работы с системами логирования и мониторинга: Kibana/OpenSearch, Grafana.
- Уверенные навыки работы в Unix/Linux: глубокие знания операционной системы (ядро, память, процессы), умение диагностировать проблемы, например, определять причины состояния D-state у процесса и анализировать системные вызовы.
- Опыт разработки высоконагруженных систем 100k rps+).
- Практика работы с контейнерами (Docker, Kubernetes) и микросервисной архитектурой.
- Уверенные знания Web/HTTP. Понимание и опыт работы с gRPC.
- Опыт работы с системами обмена сообщениями, такими как Kafka и NATS.
- Опыт работы с реляционными базами данных (PostgreSQL, ClickHouse) на уровне написания сложных запросов, оптимизации, транзакций. Приветствуется опыт работы с NoSQL решениями (Redis, MongoDB, Etcd).
- Умение проектировать API для сервисов.
Обслуживать клиентов: работать со счетами, пластиковыми картами и денежными переводами. Продавать банковские и страховые продукты (кредитные продукты, карты, вклады).
Обслуживать клиентов: работать со счетами, пластиковыми картами и денежными переводами. Продавать банковские и страховые продукты (кредитные продукты, карты, вклады).