Основні обов'язки
Проєктування та розробка нових функціональних модулів складних інформаційних систем та Data-Core на базі Java 21+
Підтримка, рефакторинг та оптимізація існуючих програмних комплексів для підвищення їх продуктивності та стабільності
Розробка архітектури даних та проєктування схем баз даних (нормалізація, складені PK, Table-per-Type, зв'язки, цілісність, SQL та NoSQL)
Розробка чистого SQL та DAO-шару (Spring JdbcTemplate/NamedParameterJdbcTemplate, RowMapper)
Впровадження складних архітектурних патернів, таких як Saga та Orchestration (ідемпотентність, компенсаційні механізми), для забезпечення цілісності розподілених систем
Побудова високоефективних інтеграцій через REST API та черги повідомлень (Kafka/RabbitMQ)
Налаштування систем моніторингу та спостережуваності (Observability) за допомогою OpenTelemetry та Micrometer
Розробка метаданих-орієнтованої архітектури (Metadata-driven architecture) та створення декларативних шаблонів обробки даних (annotation-based генерація, рекурсивні структури/дерева)
Написання чистого, тестованого коду з використанням сучасних підходів до автоматизації тестування (JUnit 5, Testcontainers, Mockito)
Проєктування стратегій міграції даних та управління схемами через Liquibase (changeset-и, rollback)
Участь у процесах Code Review, управління гілками в Git (branching strategy, PR flow), обмін технічним досвідом всередині команди та менторство колег
Робота з Docker та Docker Compose для забезпечення консистентності середовищ розробки та розгортання
Основні вимоги
6+ років досвіду комерційної розробки на Java
Глибоке знання Java 21+ (включаючи records, sealed classes, pattern matching, Stream API, var, Reflection, Generics, Annotation Processing)
Впевнене володіння Spring Boot 3.x/4.x (DI, Service/Component, Transactional, RestController, RestClient, HikariCP, Spring Security)
Глибокі знання PostgreSQL: JOIN/subquery, DDL (CREATE TABLE, FK, CONSTRAINT), індекси (типи, вибір індексів), query optimization, EXPLAIN
Написання чистого SQL + DAO (Spring JdbcTemplate/NamedParameterJdbcTemplate, RowMapper); SQL руками - обов'язково (ORM - як плюс)
Досвід управління схемами баз даних через Liquibase (changeset-и, migration strategies, rollback)
Досвід роботи з Jackson 2.x/3.x (convertValue, TypeReference, builder-based ObjectMapper конфігурація)
Досвід структурованого логування за допомогою Logback/SLF4J (MDC, custom appenders)
Навички роботи з Git (branching strategy, PR flow, code review)
Досвід роботи з брокерами повідомлень Kafka або RabbitMQ (проєктування топології, partitioning, робота з DLQ, розуміння гарантій доставки)
Практичні навички роботи з реляційними базами даних та MongoDB
Розуміння та застосування ідемпотентності та компенсаційних механізмів у розподілених транзакціях
Автоматизоване тестування: JUnit 5, Testcontainers, Mockito
Навички роботи з Docker та Docker Compose
Стабільність професійного досвіду (тривалі періоди роботи на одному місці, без job-hopping)
Високий рівень відповідальності, увага до деталей, аналітичне мислення та вміння працювати в команді
Буде перевагою
Досвід розробки Metadata-driven архітектури (декларативні шаблони, annotation-based генерація, рекурсивні структури/дерева)
Просунуте володіння PostgreSQL (JSONB, CTE, віконні функції, MVCC
Розуміння теорії графів (DAG traversal, topological sort.
Знання SpEL (Spring Expression Language) або інших мов виразів
Досвід налаштування Observability (OpenTelemetry, Micrometer)
Застосування патернів Saga / Orchestration
Досвід роботи з Quartz Scheduler (кластеризація, job, trigger, cron, persistent job store, стратегії обробки misfire)
Досвід роботи з Workflow Engines (Temporal, BPMN, state machines)
Практика Property-based тестування (jqwik)
Досвід використання MapStruct для мапінгу об'єктів
Розуміння архітектурних компромісів (Trade-offs: consistency vs performance, sync vs async)
Своїм співробітникам ми пропонуємо
Роботу в найбільшому та інноваційному банку Україн


