Go-разработчик

Требования

Бэкенд разработчикSQLGitgRPCRabbitMQ

Местоположение и тип занятости

Санкт-Петербург, Ижевск, КировПолный рабочий деньМожно удаленно

Компания

Система управления бизнес-процессами и эффективностью

Описание вакансии

Условия работы

Наш продукт направлен на автоматизацию процессов внутри компании. Интеграция различных внутренних и внешних систем, а также взаимодействие с пользователями. Система построена на микросервисной архитектуре с учётом масштабирования и замены отдельных сервисов под нужды клиента. Продукт представляет из себя SaaS-решение и доступен по подписке в B2B сегменте.

Основной нашей задачей является универсализация и переиспользование решений. Мы не реализуем все запросы пользователя как есть, но работаем на коммуникации и выстраивании общих и целостных решений. Наша компания имеет огромный опыт в построении бизнес-процессов различных компаний в России и странах СНГ. Наша задача поделиться этим опытом и сделать целостный и качественный продукт.

В данный момент мы ведём работу по подготовке Enterprise версии системы, устанавливаемой на серверах заказчика. С этим связаны задачи по выделению новых абстракций, позволяющих встроить систему в инфраструктуру заказчика, но сохранить независимым функционал ядра.

Технологии:

Бэкенд системы написан на языке Go, с использованием gRPC-протокола, упаковкой в Docker-контейнеры и выкладкой в k8s-кластер. Для различных сервисов используются различные бд: PostgreSQL, MongoDB, Redis. Также масштабируемые части системы вынесены за очереди в RabbitMQ.

Фронтенд написан на Angular 2+ с использованием REST API для обмена данными и оповещением об изменениях на сервере через веб-сокеты.

Взаимодействие внутри команды построено на нашей же системе, мы придерживаемся подхода dogfooding. Для формальных задач, контроля кода и CI используем Gitlab.

Что предстоит делать:

Работа в рамках проекта Enterprise версии системы подразумевает замену некоторых частей имеющейся системы на сервисы заказчика. Для этого предполагается вводить новые точки расширения, разделения функционала на ядро (то, что остаётся неизменным) и периферию (заменяемые сервисы). Множество архитектурных решений. Написание новых сервисов с нуля. Возможность влиять на решения в рамках проекта, а также имеющейся системы.

Требования:

- Умение писать хороший код на Go (конкурентная модель, разделение концепций, тесты)

- Знание SQL и умение писать запросы средней сложности

- Отсутствие предубеждений против написания логики на фронтенде (многие компоненты готовы и конструирование интерфейса чаще сводится к сборке конструктора, но логику сложных валидаций и обмена данными необходимо будет писать)

Отлично, если вы также:

- Умеете работать с git (мы используем подход с ребейзом)

- Имели опыт с gRPC, RabbitMQ и другими технологиями из нашего стека