Академический Документы
Профессиональный Документы
Культура Документы
микросервисной
архитектуры
Руслан Сафин, @razonrus
Руслан Сафин
Рефакторинг архитектуры 00
Пример с проблемами 01
Алгоритм рефакторинга 02
Итерационный рефакторинг 03
Рефакторинг
архитектуры
В случае микросервисов
Рефакторинг архитектуры
▪ Изменение гранулярности
▪ Повторы или циклы в трассировках
▪ Нарушение инкапсуляции и избыточности
▪ Дублирование
▪ Линейный рост инфраструктурных работ
▪ Повторы в трассировках
▪ High coupling, low cohesion
Нарушение Acyclic Dependencies
Principle
Allow no cycles in the component dependency graph
Нарушение Common Closure
Principle
A change that affects a component affects only that
component and no other components
Нарушение Reuse/ Release
Equivalence Principle
The granular of reuse is the granular of release
Нарушение Common Reuse Principle
The parts in a component are
reused together.
If you reuse one of the parts
in a component, you reuse
them all
Повторы в трассировках
Повторы в трассировках
High coupling, low cohesion
High coupling,
low cohesion
Алгоритм рефакторинга
И пример его выполнения
Алгоритм рефакторинга
1. Сделать видимым
2. Выделить мастер-данные и их связи
• провалидировать потоками данных и сценариями
3. Выделить ответственности и bounded context
• провалидировать потоками данных и сценариями
4. Наложить потоки данных и сформировать драфт
архитектуры
5. Провалидировать драфт принципами
(если валидация не прошла — возвращаемся в п.2)
6. Составить итерационный план перехода
1. Сделать видимым
• визуализация as is
• визуализация проблем
• визуализация потоков данных
Потоки данных. Сценарий 1.
Парсинг
Сценарий 2. Реалтайм расчет срока
Потоки данных. Сценарий N …
• Визуализация наложения
архитектуры и сценариев
• Валидация архитектуры
и связей
• Определение
«стабильных» частей
системы —например,
География
Алгоритм рефакторинга
1. Сделать видимым
2. Выделить мастер-данные и их связи
• провалидировать потоками данных и сценариями
3. Выделить ответственности и bounded context
• провалидировать потоками данных и сценариями
4. Наложить потоки данных и сформировать драфт
архитектуры
5. Провалидировать драфт принципами
(если валидация не прошла — возвращаемся в п.2)
6. Составить итерационный план перехода
2. Мастер-данные
2. Мастер-данные. Не всё так
просто
Валидация сценарием. Расчет
срока
Алгоритм рефакторинга
1. Сделать видимым
2. Выделить мастер-данные и их связи
• провалидировать потоками данных и сценариями
3. Выделить ответственности и bounded context
• провалидировать потоками данных и сценариями
4. Наложить потоки данных и сформировать драфт
архитектуры
5. Провалидировать драфт принципами
(если валидация не прошла — возвращаемся в п.2)
6. Составить итерационный план перехода
3. Ограниченные контексты
*Контекст ≥ микросервис
Алгоритм рефакторинга
1. Сделать видимым
2. Выделить мастер-данные и их связи
• провалидировать потоками данных и сценариями
3. Выделить ответственности и bounded context
• провалидировать потоками данных и сценариями
4. Наложить потоки данных и сформировать драфт
архитектуры
5. Провалидировать драфт принципами
(если валидация не прошла — возвращаемся в п.2)
6. Составить итерационный план перехода
4. Архитектура
Алгоритм рефакторинга
1. Сделать видимым
2. Выделить мастер-данные и их связи
• провалидировать потоками данных и сценариями
3. Выделить ответственности и bounded context
• провалидировать потоками данных и сценариями
4. Наложить потоки данных и сформировать драфт
архитектуры
5. Провалидировать драфт принципами
(если валидация не прошла — возвращаемся в п.2)
6. Составить итерационный план перехода
5. Stable Dependencies Principle
Depend in the direction of stability
6. Stable Abstractions Principle
A component should be
as abstract
as it is stable
Алгоритм рефакторинга
1. Сделать видимым
2. Выделить мастер-данные и их связи
• провалидировать потоками данных и сценариями
3. Выделить ответственности и bounded context
• провалидировать потоками данных и сценариями
4. Наложить потоки данных и сформировать драфт
архитектуры
5. Провалидировать драфт принципами
(если валидация не прошла — возвращаемся в п.2)
6. Составить итерационный план перехода
План итерационного
рефакторинга
И пример его выполнения
Как постепенно отрефакторить?
Итерационный план перехода
1. Выносим отделимое
2. Разделяем логику и данные
3. Мигрируем данные
4. Убираем дублирование
1. Выносим отделимое
2. Разделяем логику и данные
3. Миграция данных
4. Убираем дублирование
Бинго
Итоги
1. Рассмотрели принципы архитектуры
микросервисов
2. Разобрали пример с нарушением принципов
3. Составили алгоритм
рефакторинга/перепроектирования
4. Спроектировали целевую архитектуру
5. Составили итерационный план перехода
Непрерывный процесс рефакторинга
архитектуры