Правила хорошего тона в оркестраторе Flashcards
Какие два основных правила касаются четкого разделения обязанностей в оркестрации?
- Оркестратор должен быть ответственен только за управление потоком выполнения и взаимодействие между сервисами или шагами.
- Логика бизнес-процессов должна находиться в отдельных обработчиках, сервисах или вспомогательных классах.
Что такое идемпотентность в контексте операций оркестратора?
Все операции, вызываемые оркестратором, должны быть идемпотентны.
Идемпотентность в контексте операций оркестратора означает, что выполнение одной и той же операции несколько раз приводит к одному и тому же результату. Это свойство особенно важно для обеспечения надежности и согласованности в распределенных системах, где возможны сбои, повторные попытки выполнения операций и дублирование сообщений.
Как минимизировать долгоживущие операции в оркестраторе?
Не хранить большие объемы данных в состоянии оркестратора и использовать ссылки на внешние хранилища. Примеры внешних хранилищ: базы данных или blob-хранилища.
Что необходимо делать для обработки ошибок на каждом шаге оркестрации?
Обрабатывать все возможные исключения и реализовать retry policies. Например, использовать библиотеку Polly для операций, которые могут временно завершиться сбоем.
Какой подход к асинхронности следует использовать в оркестрации?
Использовать async/await во всех методах оркестрации и в вызываемых шагах, чтобы не блокировать потоки. Не следует вызывать синхронные методы внутри оркестратора.
Что подразумевает декомпозиция в контексте оркестрации?
- Разбивать сложные оркестрации на небольшие и независимые шаги.
- Избегать слишком длинных цепочек шагов — лучше организовать их в виде модульных процессов.
Как обеспечить чистоту кода в оркестрации?
Использовать понятные имена методов и переменных, а также документировать последовательности шагов оркестрации. Это облегчает чтение и понимание процессов.
Для чего нужны идентификаторы корреляции в оркестрации?
Для отслеживания выполнения оркестрации и связывания логов разных шагов. Примеры идентификаторов: GUID или traceId.
Как обеспечить тестируемость шагов оркестрации?
Разрабатывать шаги так, чтобы их можно было тестировать изолированно. Использовать моки или фейки для тестирования взаимодействия с внешними сервисами.
Что учесть при долгоживущих процессах в оркестрации?
- Учитывать сценарии перезапуска сервера или изменения состояния в случае, если оркестрация может продлиться долго.
- Использовать инструменты вроде Durable Functions или сохранения состояния для обеспечения устойчивости.
Как минимизировать побочные эффекты в шагах оркестрации?
Стараться, чтобы каждый шаг был детерминированным. Это означает, что результат шага зависит только от входных данных, а не от внешнего состояния.
Какое значение имеет логирование и мониторинг в оркестрации?
Логирование и мониторинг играют ключевую роль в оркестрации, особенно в сложных системах с микросервисной архитектурой. Они помогают обеспечивать прозрачность, отслеживать выполнение процессов, диагностировать проблемы и поддерживать надежность всей системы. Логировать ключевые этапы выполнения оркестрации и настроить мониторинг можно, например, используя Application Insights или Prometheus для отслеживания состояния процессов.