Что такое теневой запуск?
Теневой запуск означает, что вы запускаете новую версию, но она еще не получает живой трафик c. Трафик c старой версии копируется в новую 1: 1, поэтому вы можете сравнивать производительность и результаты новой функции со старой без влияния на работающую систему.
Пробный подход
Я уже пытался создать нечто подобное с помощью функции «Прокси», которая asyn c вызывает новую функцию и выводит результаты, а syn c вызывает старую функцию, возвращающую ее результаты.
Проблема заключается в побочных эффектах: если обе функции что-то делают, например, в DynamoDB, в БД может быть недопустимое состояние из-за запуска тени.
Цель
Я хочу проверить новые версии кода конкретной лямбда-функции.
Пример использования по назначению
У меня есть функция, которая вычисляет Fibbonacci recursive и сохраняет результат с меткой времени в DynamoDB в моей действующей системе.
Эта функция вызывается через AWS Шаговые функции как одна в цепочке из многих.
Как должно быть более эффективно вычислять ее итеративная Я реализую функцию с этим новым алгоритмом.
Теперь я хочу проверить предположение, что новая функция более производительна, чем старая. Поэтому я использую теневую развертку AWS лямбда, чтобы получить реально действующий трафик c в качестве тестовых данных.
Проблема
С текущим набором инструментов, который я обнаружил, можно выполнить функцию только дважды и тем самым создать две записи в DynamoDB, которые я считаю нежелательным побочным эффектом, поскольку мои данные в DynamoDB находятся в непреднамеренном недопустимом состоянии.
Если я высмеиваю внешние службы в новой функции, она всегда может быть более производительной чем старый, поскольку дорогостоящие во времени внешние службы не имеют доступа, и поэтому мой результат будет неверным.
Вопрос
Возможно ли создать теневую версию новой версии AWS лямбды? функционировать без этих побочных эффектов?