Dependency graph для міграційного impact

Migration dependency graph показує не лише список модулів, а напрямлені звʼязки між source runtime, framework, build plugins, libraries, integrations, deployment і data/protocol boundaries. На графі важливо бачити target constraints, affected paths і вузли з великим blast radius.

Це окремий артефакт від MODULE_INVENTORY: inventory описує окремі модулі, а migration graph допомагає визначити порядок переходу та compatibility impact між компонентами.

Вузли, ребра та обмеження

ЕлементПриклад змістуЧому важливо
Noderuntime, framework, plugin, client, protocolокрема surface для migration decision
Directed edgeapplication → framework або service → protocolпоказує напрям впливу та порядок перевірки
Constraintsupported version, ABI, config, data formatвизначає blocking або conditional path
Affected flowendpoint, job, event, persistence operationповʼязує graph із observable behavior
Unknownнепідтверджена transitive dependencyблокує необґрунтований compatibility claim

Compatibility matrix як рішення, а не score

Матриця сумісності розкладає source-to-target рішення за вимірами: API, configuration, ABI, runtime, data format, protocol і operations. Для кожної клітинки потрібні status, evidence і owner. Статуси на кшталт compatible, requires verification, blocking або Unknown не можна заміняти одним загальним числом.

Risk map може показати пріоритет і наслідок ризику, але не замінює технічного рішення про те, чи конкретна пара source/target сумісна.

Порядок побудови graph і matrix

  1. Почніть із affected flow і його entry point, а не з повного списку пакетів.
  2. Додайте source/target nodes та direct і transitive dependencies, наскільки вони підтверджені.
  3. Позначте directed edges, version constraints і high-impact hubs.
  4. Для кожного critical edge заповніть compatibility dimensions і evidence.
  5. Призначте owner для Unknown та blocking items.
  6. Виберіть найменший pilot, який перевіряє головну compatibility hypothesis.

Канонічне джерело уроку · JavaRush

Відкрити матеріал JavaRush