Middle Backend Developer (Kotlin/Java)
Ищем опытного Backend разработчика. На старте мы предлагаем гибкий формат начала работы - от 4 часов в день, чтобы у вас была возможность комфортно погрузиться в проект и познакомиться с его архитектурой, процессами и командой.
Для эффективного взаимодействия с командой важно, чтобы рабочее время приходилось на интервал с 09:00 до 18:00.
Проект активно развивается, появляются новые сервисы и направления разработки, поэтому мы рассчитываем на долгосрочное сотрудничество. По мере роста количества задач и успешной адаптации разработчика возможен переход на большую загрузку, вплоть до полной занятости.
Если вы ищете проект, в котором можно начать с частичной занятости и со временем стать полноценной частью команды, этот формат подойдет идеально.
Мы разрабатываем крупную enterprise-платформу с архитектурой White Label, которая позволяет создавать и масштабировать корпоративные информационные системы для различных заказчиков.
Основная идея платформы заключается в том, что существует единый backend, а для каждого клиента формируется собственный пользовательский интерфейс с индивидуальным дизайном, логикой отображения данных и бизнес-процессами. Благодаря этому один backend обслуживает несколько отдельных клиентских решений. Такой подход позволяет быстро адаптировать продукт под новых клиентов без существенных изменений в серверной части.
Проект построен на современной микросервисной архитектуре. Основная разработка ведется на Kotlin с использованием Spring Boot. В системе также присутствует Java-монолит, который постепенно декомпозируется и переносится в микросервисную архитектуру.
В экосистему проекта входят специализированные сервисы, отвечающие за хранение данных, управление динамическими формами, обработку пользовательских действий, построение списков и маршрутизацию запросов. Взаимодействие между сервисами реализовано через REST API.
Одной из ключевых особенностей платформы является механизм динамического управления интерфейсом. Backend хранит информацию о формах, полях, таблицах, кнопках, расположении элементов и пользовательских действиях. Благодаря этому новые бизнес-процессы могут создаваться через интерфейс продукта, либо напрямую через REST API.
Проект находится в стадии активного развития. Команда регулярно создает новые микросервисы, расширяет существующие API, оптимизирует производительность системы, развивает внутренние сервисы платформы и постепенно переносит функциональность из монолита в современную микросервисную архитектуру.
В обязанности разработчика входит:
- создание и поддержка микросервисов на Kotlin
- развитие существующих сервисов
- создание новых REST API
- исправление ошибок
- оптимизация существующего функционала
- оптимизация запросов к базам данных
- анализ существующей архитектуры
- работа с PostgreSQL, MySQL, MongoDB и Redis
- поддержка Java Monolith (небольшая часть задач)
- написание Unit и Integration тестов
- разработка новых бизнес-функций
- работа с продуктом, помимо его разработки
- создание и развитие внутренних сервисов платформы
- работа с Docker и Docker Compose
- создание Grafana Dashboard при необходимости
- участие в реализации новых механизмов аутентификации
- интеграции через OAuth 2.0
- активное участие в улучшении архитектуры продукта (используется api gateway как паттерн, он уже реализован)
- документирование API
- Kotlin
- Java
- Spring Boot (Spring Web, Data JPA, Mail, Security)
- Hibernate / JPA
- Lombok
- REST API
- WebSockets
- JSON
- PostgreSQL
- MongoDB
- Redis
- MySQL (Monolith)
- Docker/Docker Compose
- Git/GitLab
- Microservices
- API Gateway Pattern
- JWT
- Swagger / OpenAPI
- Grafana
- SSH/Bash/Shell
- Liquibase
- GitLab CI/CD
- N8N (Low-code Automation Platform)
- коммерческий опыт разработки на Kotlin от 2-х лет
- опыт коммерческой разработки на Java
- английский - уровень, достаточный для общения с зарубежной командой, обсуждения технических вопросов и работы в международной среде
- опыт разработки микросервисов
- понимание ACID, SOLID, DRY, KISS
- уверенное знание Spring Boot, Spring Security
- опыт разработки REST API
- опыт работы с PostgreSQL
- опыт работы с MongoDB
- понимание принципов работы Redis
- опыт работы с Docker
- опыт написания Unit и Integration тестов
- опыт работы с Git
- опыт интеграции со сторонними API
- опыт реализации Social Login (по OAuth 2.0)
- опыт работы с Grafana (создание дашбордов)
- опыт настройки GitLab Pipelines (опыт миграции на GitLab CI/CD)
- опыт работы с Flyway или Liquibase
- понимание Hibernate (связи, каскадные операции, жизненный цикл entity, n+1 проблема в hibernate)
- знание паттернов разработки (Decorator, Builder, Singleton);
- понимание CAP-теоремы
- опыт работы с N8N
- опыт работы с SSH/bash/Shell
- опыт поддержки legacy Java-приложений
- опыт миграции монолитной архитектуры на микросервисную
- опыт разработки собственных Java аннотаций
- опыт работы с Loki/Prometheus/Tempo/Promtail
Мы ищем не просто разработчика, а инженера, который:
- не боится работать при ограниченной документации, самостоятельно разберется, как устроено внутреннее приложение; как взаимодействуют его компоненты; каким образом реализована бизнес-логика
- умеет самостоятельно исследовать существующий код
- способен быстро разобраться в сложной предметной области
- умеет эффективно взаимодействовать с международной командой
- готов предлагать технические решения и задавать вопросы
- умеет работать как с современными микросервисами, так и при необходимости с legacy-кодом