Бэкенд-разработчик в команду Platform Runtime (IPC)

В работе мы ставим амбициозные цели и не останавливаемся на достигнутом. Поэтому для нас так важно, чтобы каждый участник большой команды Авито разделял культуру компании. Погрузиться в неё помогает Манифест, в котором собраны наши основные ориентиры — миссия, ценности, принципы работы manifesto.avito.com

О команде

Мы часть большой команды, которая занимается разработкой платформы PaaS.

Основная цель нашей команды — скрыть сложность синхронных и асинхронных взаимодействий от пользователей платформы — других инженеров в Авито, а также дать простые инструменты для работы с RPC, OpenAPI и асинхронными обменами.

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

 Первое направление, которым мы занимаемся — это RPC-фреймворк для синхронных межсервисных обменов. В это направление входят разработка библиотек для создания клиент-серверных приложений, кодогенерация клиентов и серверного кода, проработка и реализация общих для компании подходов по организации таких обменов. Мы используем собственный RPC-фреймворк под названием Brief.

Второе направление — предоставление для сервисов механизмов описания внешних контрактов на базе OpenAPI. Почти все внешние API Авито используют наш инструментарий. В этой области мы также предоставляем наборы библиотек, кодогенерации и валидации контрактов.

Третье направление — асинхронные обмены. Они позволяют сервисам обмениваться сообщениями через общую центральную шину под названием DataBus, а также использовать внутрисервисные очереди через центральную систему под названием Queues. В качестве систем хранения мы используем Apache Kafka, Apache Pulsar, Redpanda. Каждая из этих систем обрабатывает более 10-15 млн rpm нагрузки на запись и 15-20 млн rpm на чтение.

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

Примеры будущих задач:

  • разрабатывать control plane для управления конфигурациями шины данных DataBus и Queues;
  • проектировать и реализовывать подходы к централизованному управлению таймаутами и другими настройками межсервисных обменов;
  • заниматься задачами по улучшению Developer Experience для разработчиков в Авито;
  • участвовать в разработке Quasar — внутреннего решения для масштабирования консьюмеров в системах на базе Apache Kafka без необходимости в скейлинге числа партиций.

Мы ждём, что вы:

  • обладаете уверенными навыками Golang или желанием на нём писать, имея уверенные навыки в другом языке;
  • знакомы с принципами микросервисной архитектуры и построением распределённых систем;
  • имеете опыт работы с брокерами сообщений, например Apache Kafka, RabbitMQ, NATs и др.

Будет здорово, если вы:

  • работали в платформенных командах;
  • имеете опыт в работе с Kubernetes не только на уровне пользователя;
  • имеете опыт разработки инструментов для других разработчиков или библиотек.

Работа у нас — это:

  • возможность реализовать свои идеи в проекте с многомиллионной аудиторией;
  • талантливая команда, готовая поддержать ваши инициативы;
  • мощное железо, дополнительные мониторы и всё, что нужно для продуктивной работы;
  • прозрачная система премий, достойная зарплата — размер обсудим на собеседовании;
  • личный бюджет на обучение, который можно тратить на книги, курсы и конференции;
  • забота о здоровье: с первого дня у вас будет ДМС со стоматологией, в офисе принимают терапевт и массажист;
  • удалёнка из любой точки мира или замечательный офис в двух минутах от метро «Белорусская»: панорамный вид на центр города, места для уединённой работы и зоны отдыха.