Микросервисы
Знакомы ли вы с микросервисами?
Да, микросервисы — это подход к разработке программного обеспечения, при котором приложение строится как набор маленьких, автономных сервисов, каждый из которых решает конкретную бизнес-задачу. Основные характеристики микросервисной архитектуры:
-
Независимость: Каждый микросервис может быть разработан, развернут и масштабирован отдельно от других.
-
Гибкость и масштабируемость: Изменение и масштабирование одного сервиса не влияет на работу других.
-
Легкость в развертывании и обновлении: Благодаря отдельному развертыванию, обновления микросервисов проще и безопаснее.
-
Язык и технология: Каждый микросервис может быть написан на разных языках программирования и использовать разные технологии.
-
Изоляция сбоев: отдельный сервис может отказать независимо, но зависимые сервисы тоже могут пострадать. Таймауты, ограничения повторов и изоляция ресурсов уменьшают риск каскадных отказов.
Микросервисы позволяют эффективно реагировать на изменения в бизнес-требованиях, улучшать масштабируемость и гибкость системы, улучшать сопровождаемость и обеспечивать большую независимость разработки и развертывания компонентов.
Что такое Хореография и Оркестрация?
Хореография и оркестрация — это два подхода к управлению взаимодействием микросервисов в распределённых системах:
-
Хореография: В этом подходе каждый микросервис знает о своих задачах и взаимодействует напрямую с другими сервисами по согласованным между ними правилам. Отсутствует централизованное управление, и вся логика распределена между участниками взаимодействия.
-
Оркестрация: Здесь есть централизованный компонент, называемый оркестратором, который координирует действия микросервисов. Оркестратор управляет последовательностью вызовов и обеспечивает согласованное выполнение бизнес-процессов.
Различия:
-
Хореография подразумевает децентрализованный подход, где каждый сервис самостоятельно управляет своей логикой взаимодействия.
-
Оркестрация предполагает централизованное управление оркестратором, который управляет и согласовывает действия сервисов.
Какие достоинства и недостатки микросервисов вы знаете?
Микросервисы имеют ряд достоинств и недостатков:
Достоинства :-
Разделение на слабосвязанные компоненты: Позволяет разрабатывать и поддерживать каждый сервис независимо.
-
Гибкость и масштабируемость: Легкость в масштабировании отдельных сервисов в зависимости от нагрузки.
-
Технологическое разнообразие: Разработчики могут выбирать технологии, наиболее подходящие для каждого сервиса.
-
Быстрая разработка и доставка: Позволяют ускорить разработку новых функций и функциональных улучшений.
-
Изоляция сбоев: отдельный сервис может отказать независимо, но зависимые сервисы тоже могут пострадать. Таймауты, ограничения повторов и изоляция ресурсов уменьшают риск каскадных отказов.
-
Сложность управления: Усложняется управление и мониторингом множества микросервисов.
-
Сетевая задержка: Взаимодействие между сервисами через сеть может вызвать задержки.
-
Сложность тестирования: Необходимость интеграционного тестирования между микросервисами.
-
Потребление ресурсов: Для работы множества микросервисов требуются дополнительные ресурсы.
Выбор между монолитной архитектурой и микросервисной зависит от конкретных требований проекта и специфики бизнес-задач, которые необходимо решить.
Расскажите про токен-авторизацию в микросервисах.
Токен-авторизация в микросервисах является методом обеспечения безопасности и аутентификации пользователей. Основные принципы:
-
Выдача токена (
Token issuance): После аутентификации пользователя сервис выдает токен, который содержит информацию о пользователе и правах доступа. -
Типы токенов:
-
JWT содержит набор claims. Подписанный JWT обычно доступен для чтения после декодирования base64url; подпись защищает от подмены, а конфиденциальность требует шифрования, например JWE.
-
Opaque token: Ссылка на информацию аутентификации, хранящаяся в базе данных или кэше.
-
-
Валидация JWT включает проверку подписи разрешённым алгоритмом, доверенного издателя, аудитории и срока действия. Проверка подписи не является расшифровкой. Для opaque token обычно нужна серверная проверка или introspection.
-
Обновление токена (
Token refresh): Используется для продления срока действия токена без необходимости повторной аутентификации пользователя. -
Использование в микросервисах:
-
Каждый микросервис проверяет токен при получении запроса от клиента.
-
Общие сервисы аутентификации или аутентификационные шлюзы могут облегчить процесс валидации токена.
-
-
Преимущества:
-
Безопасность: Токены могут содержать ограниченный набор прав доступа.
-
Масштабируемость: Управление доступом и аутентификацией может быть легко расширено на большое количество микросервисов.
-
Гибкость: Возможность централизованного управления правами доступа и аутентификационными данными.
-
Токен-авторизация позволяет обеспечить безопасность и управление доступом в среде с множеством микросервисов, где требуется высокая гибкость и надежность системы.