Depository of News

Один контракт данных, разные адаптеры: как перестать писать миграцию магазина заново

newsdepo.com · health

<p>Первый файл, который я получил при&nbsp;переезде своего магазина с&nbsp;InSales, парсер прочитал как&nbsp;одну длинную строку мусора. Выгрузка заказов оказалась в&nbsp;UTF-16&nbsp;LE с&nbsp;BOM и табуляцией вместо запятой&nbsp;— ни один разумный дефолт не&nbsp;подошёл.</p><p>Тогда это выглядело как&nbsp;разовая неприятность: поправил чтение, написал скрипт, ночь работы, всё уехало, скрипт лёг в&nbsp;репозиторий. На&nbsp;следующем проекте он не&nbsp;переиспользовался&nbsp;— другая платформа, другие колонки, другие правила. На&nbsp;третьем стало видно, что&nbsp;повторяется почти вся работа: связать заказ с&nbsp;клиентом, не&nbsp;создать дублей, не&nbsp;потерять адреса страниц, уметь перезапуститься. Разное только на&nbsp;входе&nbsp;— кодировка, формат, названия колонок, единицы измерения.</p><p>Отсюда вывод, к&nbsp;которому стоит прийти раньше, чем на&nbsp;третьем проекте: середина должна&nbsp;быть одна, а&nbsp;платформенная специфика&nbsp;— жить в&nbsp;тонком слое на&nbsp;входе. Ниже&nbsp;— как&nbsp;этот каркас устроен у&nbsp;меня, с&nbsp;кодом из&nbsp;работающего проекта: собственного магазина, который я перевёз с&nbsp;InSales на&nbsp;свой движок на&nbsp;Next.js и PostgreSQL.</p><p>Сразу оговорюсь про&nbsp;доставленные миграции: полностью пройдена одна&nbsp;— та, о&nbsp;которой пойдёт речь. Про&nbsp;требования к&nbsp;адаптерам под 1С‑выгрузки и товароучётные API дальше я говорю как&nbsp;о&nbsp;проектных требованиях к&nbsp;каркасу; готовыми кейсами они не&nbsp;являются. Это важно, чтобы вы правильно оценили вес каждого утверждения.</p><p>Резонный вопрос до&nbsp;всего остального: почему не&nbsp;готовый инструмент. Airbyte, n8n, коннекторы к&nbsp;товароучётным системам делают ровно это&nbsp;— вытащить, преобразовать, положить. Для&nbsp;регулярной синхронизации они и есть правильный выбор. Разовая миграция магазина отличается тем, что&nbsp;сложность сидит не&nbsp;в&nbsp;перекладывании строк, а&nbsp;в&nbsp;доменных правилах: как&nbsp;собрать заказ из&nbsp;нескольких строк, что&nbsp;делать с&nbsp;позицией, товара которой больше нет в&nbsp;каталоге, как&nbsp;при&nbsp;повторном прогоне не&nbsp;затереть свежие данные старыми. Эти правила всё равно пишутся руками, а&nbsp;в&nbsp;визуальной цепочке трансформаций их неудобно тестировать и нельзя перезапустить кусочком. Поэтому середина своя, а&nbsp;тонкими остаются края.</p> <a href="https://habr.com/ru/articles/1078092/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=1078092#habracut">Читать далее</a>

Read full article →