惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
U
Unit 42
A
About on SuperTechFans
Vercel News
Vercel News
B
Blog
Martin Fowler
Martin Fowler
MyScale Blog
MyScale Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
腾讯CDC
D
Docker
V
Visual Studio Blog
博客园 - 叶小钗
The Cloudflare Blog
Jina AI
Jina AI
B
Blog RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
T
Tailwind CSS Blog
MongoDB | Blog
MongoDB | Blog
D
DataBreaches.Net
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Как мы переносили интеграции с монолита на микросервис
Гульшат · 2026-06-26 · via Все публикации подряд на Хабре

Как мы переносили интеграции с монолита на микросервис

Средний

3 мин

40

В этой статье я делюсь нашим опытом выноса интеграций из монолита в микросервисную архитектуру: какие решения мы принимали, на что обращали внимание и где было сложнее всего. В моем случае монолитами были: CRM или ERP-системы.

Авторизация

В монолите авторизация была встроена в ядро. При выносе интеграции в отдельный сервис нужно было решить, как проверять, что запрос пришёл от доверенного источника. Мы выбрали протокол авторизации - OAuth 2.0, так как у нас уже был реализован единый сервис авторизации по типу Яндекс ID. Это позволило нам:

  • не создавать новый механизм с нуля

  • использовать существующую инфраструктуру

  • быстро интегрировать авторизацию в новый микросервис

Проектирование интерфейса микросервиса

В монолите (CRM или ERP-система) настройки некоторых интеграций были расположены в разных разделах интерфейса. Это усложняло поддержку - чтобы изменить один параметр, пользователь должен был знать, где именно его искать. При переносе мы не могли просто скопировать этот хаос в новый интерфейс.

Нам нужно было:

Собрать всё воедино. Мы проанализировали, где именно в монолите хранятся настройки переносимой интеграции, и собрали их в единый список. Это помогло увидеть полную картину: какие параметры есть, какие из них обязательные, а какие - опциональные. На этом же этапе мы сопоставляли поля интерфейса с полями в базе данных: для каждого параметра определяли, в какую таблицу и в какой столбец он записывается.
При переносе некоторых интеграций на этом этапе выявлялось, что какие-то параметры не хранятся ни в базе данных, ни в кеше. В зависимости от особенностей интеграции принималось решение: сохранять эти данные в БД микросервиса или нет.

Скорректировать интерфейс монолита. Мы собрали все настройки, связанные с интеграцией, из разных разделов монолита и разместили их в интерфейсе микросервиса, переосмыслив логику их группировки.

Пример: В CRM-системе в нескольких разделах было упоминание названия внешнего сервиса, куда передавались данные: в названиях кнопок, статусов. Пришлось корректировать интерфейс монолита, не задев другие функции.

Спроектировать интерфейс микросервиса с нуля. Мы собрали все настройки, связанные с интеграцией, из разных разделов монолита и разместили их в интерфейсе микросервиса, переосмыслив логику их группировки.

Пример: В CRM-системе имя отправителя для СМС можно было задать в различных разделах сервиса. Мы убрали эту возможность из всех разделов и вынесли ее в интерфейс микросервиса.

Проектирование базы данных микросервиса

Мы выявили в монолите все таблицы и поля, относящиеся к интеграции, и использовали их как основу для проектирования БД микросервиса. Логика связей между данными была сохранена.

Структура базы данных микросервиса:

  • данные авторизации (ID, токены)

  • данные интеграции (ID, настройки интеграции)

  • данные, участвующие в обмене с внешним сервисом (например, данные товаров, выгружаемые из ERP в интернет-магазин)

Перенос и оптимизация текущих алгоритмов

Код интеграции в монолите работал, но был написан давно и не всегда оптимально. Мы могли просто скопировать его в микросервис, но это было бы ошибкой. Вместо копирования мы пересмотрели алгоритмы и оптимизировали их под новую архитектуру.

Пример: В одной из интеграций раньше в рамках одной конкретной выгрузки разнородные данные отправлялись в разных итерациях. Для упрощения алгоритма мы объединили выгрузку в одну итерацию. Это помогло нам избежать потерю запросов и часть данных.

Доработка API монолита

В монолите часть данных ранее запрашивалась через прямые SQL-запросы. Мы не могли использовать тот же подход для микросервиса, так как это нарушало архитектуру. Поэтому мы доработали API монолита. Микросервис запрашивает и передает данные через API, а не через SQL. Это снизило связанность между сервисами и сделало систему более управляемой.

Развертывание микросервиса

Что мы сделали:

  • настроили окружение для нового сервиса

  • провели регрессионное тестирование на тестовых и прод контурах

  • поэтапно переключили трафик с монолита на микросервис

Мы использовали подход с параллельной работой двух систем на время перехода, чтобы минимизировать риски.

Миграция

В монолите хранились данные интеграций. Нужно было перенести их в базу микросервиса, сохранив их целостность.

В зависимости от особенностей интеграций мы применяли два подхода.

Интеграция

Подход к миграции

Интеграция А

Миграция данных из базы монолита в базу микросервиса

Интеграция Б

Пользователи настраивали интеграцию заново в новом интерфейсе - миграция не потребовалась

После успешного релиза и миграции данных в базе данных монолита необходимо удалить таблицы и поля для хранения данных интеграции, так как теперь все данные хранятся в базе микросервиса.

Заключение

Если вы планируете переход интеграции с монолита на микросервисную архитектуру - не пытайтесь сделать всё идеально с первого раза. Начните с одного простого микросервиса, отработайте процесс, а затем масштабируйте.