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