Архитектура системBackend разработчик

Что такое микросервисная архитектура и в чем ее преимущества и недостатки?

Проходите собеседования с ИИ помощником Hintsage

Ответ.

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

Преимущества:

  • Масштабируемость: каждый сервис масштабируется отдельно.
  • Независимость разработки: разные команды могут быстро разрабатывать отдельные сервисы.
  • Устойчивость к отказам: сбой в одном сервисе не приводит к падению всей системы.

Недостатки:

  • Сложность управления: требуется настройка взаимодействий, мониторинга, балансировки.
  • Сложность деплоя: множество сервисов сложно координировать.
  • Рост издержек на коммуникации: сервисы связываются по сети, что увеличивает задержки и требует надёжной интеграции.

Пример REST-макета микросервиса на Python (Flask):

from flask import Flask, jsonify app = Flask(__name__) @app.route('/user/<int:user_id>') def get_user(user_id): return jsonify({"user_id": user_id, "name": "Ivan"}) if __name__ == "__main__": app.run(port=5001)

Ключевые особенности:

  • Каждый сервис — самостоятельное приложение.
  • Легко внедрять новые технологии или языки для разных сервисов.
  • Требуется учёт ошибок сетевых взаимодействий и обеспечения консистентности данных.

Вопросы с подвохом.

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

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

Обязательно ли использовать Docker для микросервисной архитектуры?

Нет, Docker облегчает развертывание и изоляцию, но микросервисы можно реализовать и без контейнеризации, используя, например, виртуальные машины или даже отдельные физические серверы.

Что будет, если API контракт между сервисами сломан, но в CI/CD pipeline всё зелёное?

Сбой в API контракте приведёт к ошибкам взаимодействия между сервисами, которые можно выявить только интеграционными тестами. Зеленый билд в CI/CD не гарантирует, что разные версии сервисов совместимы между собой.