
Neotecnica
| Галузь: | Інженерне та промислове ПЗ (Engineering / Industrial Software) |
|---|---|
| Локація: | Італія |
Про клієнта
До середини 2025 року інженерна команда накопичила значний технічний борг: базова база коду зростала без належного контролю якості, процес роботи з Git спирався на прямі пуші в гілку main без код-рев'ю чи перевірок безпеки, а інфраструктура (яка працювала на власному Kubernetes-кластері) не мала сучасних інструментів CI/CD, управління артефактами та моніторингу інцидентів. Також був відсутній формалізований процес виявлення вразливостей безпеки до того, як код потрапляв у продакшн.
Neotecnica залучила WWG для проведення комплексного технічного аудиту всіх чотирьох репозиторіїв, реструктуризації процесів розробки та розгортання, посилення безпеки інфраструктури та оцінки готовності бекенду AFM до міграції у хмару. Головна мета — мінімізувати ризики та створити масштабовану основу для подальшого розвитку продукту.
Виклики проєкту
- Технічний борг у чотирьох різнорідних репозиторіях. Технологічний стек Neotecnica охоплював React-фронтенд, приватну бібліотеку React-компонентів із галереєю Storybook та монолітний Java EE/Spring бекенд. Кожна система мала власне дерево залежностей, конфігурацію лінтерів та зони потенційних вразливостей. Проведення якісного аудиту вимагало скоординованого набору інструментів та вміння інтерпретувати результати з урахуванням ролі кожного репозиторію в загальній системі.
- Робочий процес у Git без захисних механізмів. Усі репозиторії Neotecnica функціонували без захисту головних гілок. Фіча-гілки (деякі з яких існували настільки довго, що фактично виконували роль бета-версій) зливалися напряму без Pull Request, код-рев'ю чи перевірок у CI. Це означало, що неперевірений та непротестований код міг потрапити у продакшн будь-якої миті, а відкат змін був операційно складним через відсутність єдиних правил тегування та версіонування.
- Інфраструктура без сучасного CI/CD та аналітики (Observability). Наявний Kubernetes-кластер працював із застарілою конфігурацією сертифікатів, не мав резервування control-plane для високої доступності (HA) та був позбавлений оркестрації CI/CD, окрім базової збірки в Jenkins. У системі був відсутній репозиторій артефактів для управління приватними NPM-пакетами та Maven-збірками, не було централізованого сповіщення про стан кластера чи додатків, а також системи чергування відповідальних за інциденти (on-call).
- Монолітний бекенд на межі архітектурних можливостей. Бекенд AFM мав системні проблеми, які виходили за межі якості коду. Тісна зв'язаність (tight coupling) фронтенд- і бекенд-шарів, зашиті в код (hardcoded) облікові дані та конфігурації, ручне управління потоками, вбудований SQL та відсутність чітких меж модульних сервісів ускладнювали тестування, підтримку та розширення системи. Міграція у хмару вже планувалася, але оцінки готовності або покрокової стратегії її реалізації компанія не мала.
Давайте зустрінемося та обговоримо ваш проєкт.
Наші рішення

WWG реалізувала проєкт за чотирма паралельними напрямами, спланованими так, щоб забезпечити як миттєве зниження ризиків, так і чітку дорожню карту для довгострокової модернізації.
1. Аудит бази коду: безпека, залежності та якістьWWG провела повний аудит усіх чотирьох репозиторіїв із використанням комплексної методології. У кожному репозиторії було оцінено:
- Вразливості безпеки: за допомогою npm audit та osv-scanner виявлено 19+ проблем у фронтенді та бібліотеці компонентів, включаючи критичні CVE в основних залежностях та підтверджену вразливість ReDoS, яка впливала на три окремі репозиторії.

- Стан залежностей: інструменти npm-check та depcheck виявили незадіяні пакети («мертвий код») та десятки пакетів, які відставали від актуальних версій на один або більше мажорних релізів.
- Якість коду: аналіз за допомогою ESLint виявив близько 9,000 проблем у React-фронтенді та понад 4,000 у бібліотеці компонентів (переважно порушення no-undef, невикористані змінні та зловживання @typescript-eslint/no-explicit-any).
- Java-бекенд: аналіз коду в SonarQube визначив зашиті в код конфігурації, загальні блоки обробки винятків (catch-all exceptions), ручний SQL, закоментовані блоки коду та великі, занадто зв'язані класи як основні ризики для технічної підтримки.
Кожен аудит було оформлено у вигляді структурованого звіту з градацією ризиків за рівнем критичності та пріоритетизованим планом їх усунення.
2. Аудит Git-процесів та редизайн стратегії розгалуженняWWG провела повний аудит робочих процесів у Git для всіх репозиторіїв Neotecnica, задокументувавши ризики поточного підходу: незахищені гілки main, прямі злиття з тривалих фіча-гілок, відсутність код-рев'ю через PR та відсутність перевірок у CI перед релізом у продакшн.

Було детально оцінено дві альтернативні стратегії розгалуження: GitHub Flow (оптимізовано для частих релізних циклів) та Trunk-Based Development (оптимізовано для мінімізації конфліктів слияння за допомогою короткоживучих гілок та фіча-прапорців). Для приватної бібліотеки React-компонентів оцінка окремо враховувала проблему тривалих бета-гілок, які не вписуються в стандартні моделі. Разом із результатами аудиту клієнт отримав конкретні рекомендації щодо впровадження: правила захисту гілок, шаблони PR та точки інтеграції з CI.
Ми підготували технічний звіт щодо бекенду AFM із фіксацією його поточних архітектурних обмежень та запропонували поетапну стратегію міграції:
Короткострокова перспектива: контейнеризація в Docker, розгортання у хмарних віртуальних машинах (AWS EC2/ECS) та міграція БД Oracle на RDS.
Довгострокова перспектива: перехід на мікросервісну архітектуру Spring Boot, PostgreSQL та Kubernetes із повною аналітикою системи (Prometheus, Grafana, ELK).
Для підтримки команди розробників на майбутнє WWG підготувала два стандарти: «Правила написання коду бекенду та стандарти модульної архітектури» (що охоплюють правила найменування в Java, шарову архітектуру, Spring Security, цілі тестування та інтеграцію із SonarQube) та «Професійні інструкції зі створення React NPM-пакетів» (що охоплюють конфігурацію збірки, tree-shaking, peer-залежності та подвійний вивід CJS/ESM).
WWG з нуля реструктуризувала Kubernetes-кластери Neotecnica для забезпечення високої доступності (HA) та підтримки сучасних процесів CI/CD:
- Створено кластер високої доступності з 3 вузлами управління (control-plane) та виділеними групами робочих вузлів (worker nodes) залежно від типу навантаження.
- Встановлено та налаштовано Rancher як графічний інтерфейс управління кластером, що забезпечило прозорість робочих навантажень та операційний контроль без необхідності використання CLI.
- Налаштовано Jenkins із нативними Kubernetes-агентами: конвеєри запускаються в тимчасових (ephemeral) подах, що усуває потребу в постійних агентах на віртуальних машинах.
- Розгорнуто репозиторій Nexus Artifact Repository для хостингу приватних NPM-пакетів (замість git submodules) та збірок Maven.
WWG провела оцінку за стандартами CIS Benchmark для серверів, на яких працюють допоміжні сервіси, такі як сервер ідентифікації Keycloak та OpenVPN-сервер, підготувавши детальні звіти щодо відповідності критеріям безпеки. Також було налаштовано OpenVPN-сервер для віддаленого доступу команди з індивідуальними конфігураційною файлами та резервним копіюванням PKI.
Технологічний стек
Сканування вразливостей безпеки в усіх JavaScript/TypeScript репозиторіях — виявлення CVE та класифікація критичності.
SonarQube
Статичний аналіз для Java AFM бекенду — виявлення «запахів коду» (code smells), проблем безпеки та оцінка зручності підтримки.
Rancher
Графічний інтерфейс управління Kubernetes — візуалізація навантажень, управління вузлами та операційний контроль.
Nexus Artifact Repository
Приватний хостинг артефактів для NPM-пакетів та Maven-збірок, що замінив git submodules.
PagerDuty + Healthchecks.io
Управління інцидентами з інтеграцією в MS Teams, графіками чергувань та конфігурацією політик ескалації.
Контроль якості коду, виявлення невикористаних залежностей та аналіз актуальності версій пакетів у React та бібліотеці компонентів.
MicroK8s on VMware
Власний Kubernetes-кластер, реструктуризований для високої доступності (HA) з 3 вузлами control-plane та виділеними групами робочих вузлів.
Jenkins з Kubernetes-агентами
Оркестрація CI/CD конвеєрів із тимчасовими подами-агентами; автентифікація через GitHub App та паттерн Shared Library з повторно використовуваними шаблонами.
Keycloak + OpenVPN
Управління ідентифікацією та доступом; налаштування правил VPN для кожного користувача та резервне копіювання PKI; посилення безпеки серверів за стандартами CIS Benchmark.
AWS (EC2, ECS, RDS)
Цільова хмарна інфраструктура, запропонована в дорожній карті міграції AFM для короткострокових та довгострокових етапів.
Ключові технічні виклики
Кожен із чотирьох репозиторіїв працював із власними базовими конфігураціями — різними наборами правил ESLint, різними пакетними менеджерами та системами збірки. Стандартизація методології аудиту для всіх проєктів без зміни їхніх поточних конфігурацій вимагала ретельного вибору інструментів та грамотної інтерпретації результатів. Зокрема, відокремлення зауважень ESLint, які були артефактами конфігурації (наприклад, правил, що виявляли навмисно динамічні патерни), від реального технічного боргу вимагало перевірки на рівні коду паралельно з автоматизованим аналізом.
У репозиторії бібліотеки компонентів сформувалася модель, де фіча-гілка фактично перетворилася на довготривалу бета-гілку. Ані GitHub Flow, ані Trunk-Based Development не охоплюють цей патерн у чистому вигляді: GitHub Flow не рекомендує існування гілок понад тиждень, а Trunk-Based Development вимагає використання фіча-прапорців для незавершеної роботи. Аудит Git від WWG врахував цю специфіку, запропонувавши гібридну модель, яка задовольнила потреби у версіонуванні бібліотеки без створення незручностей для команди.
Три основні репозиторії Neotecnica — React-додаток, приватна NPM-бібліотека та Java Maven бекенд — мають суттєво різні вимоги до CI/CD. React-додаток вимагає стандартизованого процесу перевірки якості та автоматизованої доставки. NPM-бібліотеці потрібні автоматичне версіонування та безпечне управління артефактами для дистрибуції. Maven-бекенд потребує складного процесу збірки, включаючи контейнеризацію та публікацію в приватний реєстр. WWG розробила приклади конвеєрів для всіх трьох типів, використавши Jenkins Shared Libraries для винесення повторно використовуваної логіки. Це зменшило дублювання та забезпечило команду Neotecnica готовими робочими прикладами замість абстрактних інструкцій.
Сервери Keycloak та OpenVPN активно використовувалися під час виконання проєкту. Оцінка за стандартами CIS Benchmark та подальше посилення безпеки вимагали чіткого розмежування заходів: що можна застосувати миттєво, а що потребує спланованих вікон технічного обслуговування.

Результати
- Повна технічна картина по всіх 4 репозиторіях Кожну базу коду було проаудійовано за допомогою єдиного набору інструментів. Підготовлено структуровані звіти з деталізацією за рівнем критичності та пріоритетизованими планами робіт — це вперше дало команді Neotecnica повне розуміння їхніх ризиків та боргу з якості й безпеки.
- 19+ вразливостей безпеки задокументовано з інструкціями щодо усунення Усі критичні та високого рівня CVE були ідентифіковані, прив'язані до конкретних пакетів та доповнені покроковими інструкціями з усунення — включаючи цільові версії, альтернативи для міграції та автоматичні перевірки в CI для запобігання регресіям.
- Запущено Kubernetes-кластер високої доступності Кластер MicroK8s було реструктуризовано з 3 вузлами control-plane (HA), системою управління Rancher, нативними Kubernetes-агентами в Jenkins та хостингом артефактів у Nexus. Це дозволило замінити нестабільну конфігурацію з одним вузлом на надійну інфраструктуру доставки, готову до продакшну.
- Моніторинг інцидентів у реальному часі з маршрутизацією на чергових Інструменти PagerDuty та Healthchecks.io були налаштовані та інтегровані з Microsoft Teams, надавши інженерній команді структуроване управління інцидентами з політиками ескалації, графіками чергувань та персоналізованою маршрутизацією сповіщень.

Висновок
WWG підійшла до кожного напряму за єдиною методологією: точно оцінити поточний стан, зрозуміти бізнес- та операційний контекст і надати рішення та рекомендації, які команда дійсно зможе використовувати щодня.
Результат — база коду з повним контролем ризиків, інфраструктура, готова до сучасних CI/CD процесів, та команда розробників, забезпечена стандартами й інструментами для підтримки високої якості в міру подальшого зростання платформи.