Ваш надійний партнер в пошуку роботи та підборі персоналу
Сервіс збору та версіонування файлів app-ads.txt (Ad Tech). NestJS, TypeScript, PostgreSQL 16, BullMQ / Redis, undici, S3 (MinIO), Docker.
• Скоротив зайвий трафік і навантаження на базу умовними HTTP-запитами (If-None-Match / If-Modified-Since) та звіркою хешу вмісту: парсинг і мердж запускаються лише для файлів, що реально змінилися — близько 0.4% доменів за добу.
• Спроєктував модель версіонування SCD2-lite: рядки не перезаписуються, а живуть із first_seen_at / removed_at; повторна поява рядка є реактивацією того самого запису, а не дублем. Повна історія переходів пишеться в append-only таблицю.
• Реалізував мердж через COPY ... FROM STDIN в UNLOGGED staging-таблицю з подальшим FULL OUTER JOIN проти активних записів — усе в межах однієї транзакції.
• Побудував HTTP-сервіс на undici: спільний dispatcher, окремі таймаути на з'єднання / заголовки / тіло, ліміт розміру відповіді, тротлінг по хосту. Розділив паралелізм на три незалежні ліміти — черга, http-запити та запис у БД, оскільки ці шари впираються в різні ресурси й мають різну латентність.
• Тести: парсер, класифікація помилок, валідація конфігу та сам мердж; інтеграційні тести піднімають реальний PostgreSQL через Testcontainers.
• Навантажувальний тест: 5 млн рядків авторизації опрацьовано за 6–7 хвилин на 4-ядерному сервері. Початкове наповнення бази — 5 млн доменів (частина — без файлів або з пошкодженими файлами); щоденне навантаження — ~49 тис. доменів, у файлах яких є зміни.
Внутрішній Task-tracker: мікросервіси + legacy-моноліт.
Обов'язки:
• Розробка та підтримка backend-частини на Node.js / NestJS у мікросервісній архітектурі та legacy-моноліті.
• Аудит та оптимізація повільних ендпоінтів і SQL-запитів у PostgreSQL.
• Подієва взаємодія між сервісами через Kafka, контракти gRPC (Protobuf).
• Розвиток функціоналу: модулі фільтрації, DTO та ендпоінти під нові вимоги.
• Unit- та інтеграційні тести на Jest.
Досягнення:
• Прискорив ключовий ендпоінт у 7.5 разів (з 15 до 2 сек): переніс агрегації з Node.js у PostgreSQL для вибірки обсягом близько 3,3 млн записів (щоденні дані по 1500 співробітниках за 6 років), скоротив обсяг вибірки та декомпозував heavy-ендпоінт, винісши отримання деталізації в окремий API-метод.
• Усунув проблему N+1, аналізував SQL-запити за допомогою EXPLAIN ANALYZE, переніс обчислювальну логіку з коду в PostgreSQL.
• Реалізував подієву взаємодію через Kafka — продюсери та консюмери, підписка на топіки суміжних сервісів. Забезпечив ідемпотентність обробки: повторне надходження дубля повідомлення не призводить до повторного застосування бізнес-логіки.
• Спроєктував алгоритми визначення субординації з рекурсивним обходом ієрархії департаментів для коректного відображення керівників із нетиповими ролями.
• Усував розбіжності між кодом та БД: аналізував некоректно згенеровані міграції, синхронізував моделі TypeORM/Sequelize із реальною схемою бази даних.
• Провів рефакторинг конфігурації та обробки помилок: мігрував мікросервіси з кастомних рішень на внутрішні бібліотеки.
Контракт, E-commerce платформа бренду спортивного харчування (4 мікросервіси).
Обов'язки:
• Розробка та розвиток мікросервісів платформи (Payment, Notification, Product, Order) на Node.js / NestJS.
• Проєктування схеми даних у PostgreSQL, інтеграція платіжного еквайрингу.
• Міжсервісна взаємодія: ендпоінти, DTO, узгодження gRPC-контрактів.
Досягнення:
• Спроєктував і розробив сервіс платежів з нуля: схема даних у PostgreSQL, модель життєвого циклу платежу та інтеграція еквайрингу Monobank Pay API — від створення рахунку до обробки статусу оплати й переведення замовлення в оплачене.
• Забезпечив атомарність оплати: оновлення статусу платежу та переведення замовлення виконуються в одній транзакції PostgreSQL, що виключає розбіжність між фактом оплати та станом замовлення.
• Реалізував сервіс сповіщень для повернення покинутих кошиків: cron-планувальник добирає кошики, які добу лишаються без оформленого замовлення, і надсилає лист через Gmail API (OAuth 2.0).
• Працював у 4-х мікросервісах платформи: Payment і Notification розробив з нуля, Product і Order розвивав під нові вимоги.
Близько 15 проєктів різного обсягу для малого бізнесу.
Обов'язки:
• Розробка серверної логіки та REST API на Node.js / Express / NestJS.
• Автоматизація бізнес-процесів: боти, скрипти, інтеграції із зовнішніми сервісами.
• Збір даних із веб-ресурсів, робота з SQL-запитами.
• Підтримка та рефакторинг legacy-коду в проєктах замовників.
Досягнення:
• Розробив бота автоматизації WhatsApp для бізнесу на whatsapp-web.js: масові розсилки та автоматичний збір інформації з листувань.
• Проєктував REST API та серверну логіку — кастомні бекенд-рішення на Node.js / Express / NestJS.
• Розробляв парсери на Puppeteer для автоматичного збору даних із веб-ресурсів.
• Писав кастомні Node.js-скрипти: обробка файлів, трансформація даних, вивантаження та синхронізація через Google Sheets API.
• Створював Telegram-боти для автоматизації сповіщень, обробки вхідних запитів та інтеграції із зовнішніми сервісами.
• Оптимізовував SQL-запити та усував баги в проєктах замовників.
Підписатись на розсилку нових резюме: "Backend Developer (Node.js / NestJS) в Києві"