Различия между монолитной архитектурой и архитектурой микросервисов следующие:
### Монолитная архитектура:
1. **Одно приложение**: Все компоненты (интерфейс, бизнес-логика, доступ к данным) объединены в одном проекте и компилируются в единый исполняемый файл.
2. **Разработка и развертывание**: Изменения в одной части системы требуют повторной сборки и развертывания всего приложения.
3. **Сложности с масштабируемостью**: Масштабирование может быть проблематичным, так как необходимо дублировать все приложение, даже если нужно масштабировать только одну его часть.
4. **Технологическая однородность**: Все компоненты часто используют одни и те же технологии и языки (например, одну версию стека).
5. **Трудности в поддержке**: С увеличением размера приложения усложняется его понимание и сопровождение, особенно новичками.
### Архитектура микросервисов:
1. **Независимые сервисы**: Система состоит из множества маленьких независимых сервисов, каждый из которых отвечает за свою конкретную задачу или функциональность.
2. **Отдельное развертывание**: Изменения в одном сервисе могут быть внедрены и развернуты независимо от других.
3. **Упрощенное масштабирование**: Можно масштабировать отдельные сервисы по мере необходимости, что экономит ресурсы.
4. **Технологическая разнообразие**: Каждый сервис может быть написан на своей технологии и использовать свои базы данных.
5. **Повышенная сложность**: Микросервисы требуют более сложных механизмов взаимодействия (например, API, REST, gRPC), а также могут увеличивать задержки из-за сетевых вызовов.
### Что ожидают услышать на собеседовании:
Собеседующие, как правило, ожидают от кандидатов понимания ключевых различий между этими архитектурами, а также осознание плюсов и минусов каждой из них. Также важно уметь обсуждать кейсы, когда лучше использовать ту или иную архитектуру на основе требований проекта. Работа с микросервисами подразумевает более глубокое понимание взаимодействия компонентов, управления данными и взаимодействия между сервисами.
На собеседовании может быть уместно упомянуть примеры из опыта, когда приходилось сталкиваться с этими архитектурными подходами, и какие проблемы они решали или создавали.