TL; DR Примечания из статей, которые я прочитал сегодня.
Проектирование устойчивых систем за пределами переписей: архитектурные шаблоны и инженерный хаос
- Включите идентичность: идентификационная конечная точка возвращает тот же результат, учитывая те же параметры без побочных эффектов, или любые побочные эффекты выполняются только один раз (это делает повторения более безопасными). Если операция имеет побочные эффекты, но не может отличить уникальные вызовы, добавьте параметр ключа iDempotency, который клиент должен предоставить для безопасной повторной попытки (иначе повторная попытка предотвращается).
- Используйте асинхронные ответы для «отложенной работы»: вместо того, чтобы полагаться на успешный призыв к зависимости, которая может потерпеть неудачу, верните успешный или частичный ответ на клиента от самой службы. Это гарантирует, что ошибки вниз по течению не влияют на конечную точку и снижают риск задержки и использования ресурсов с повторными поисками на заднем плане.
- Примените Haos Engineering для проверки устойчивости в качестве наилучшей практики: преднамеренно введите задержку или имитацию отключений в частях системы, чтобы она не удалась, и вы могли улучшить ее. Однако минимизировать «радиус взрыва» экспериментов по производству хаоса — в действии он должен быть противоположностью хаотичности:
- Определите устойчивое состояние. Ваша гипотеза заключается в том, что устойчивое состояние не изменится во время эксперимента.
- Выберите эксперимент, который отражает реальные ситуации: выключение сервера, потерянное сетевое соединение с БД, автоматическим событиями, аппаратным переключателем.
- Выберите контрольную группу (которая не меняется) и экспериментальную группу с серверов бэкэнд.
- Введите сбой в аспект или компонент системы и попытаться опровергнуть гипотезу, анализируя метрики между контрольными и экспериментальными группами.
- Если гипотеза опровергается, затронутые части нуждаются в улучшении. После внесения изменений повторите свой эксперимент, пока не будет достигнута уверенность.
- Автоматизируйте эксперименты по хаосу, включая автоматическое отключение эксперимента, если он превышает приемлемый радиус взрыва.
Полный пост здесь , 6 минут читать
Непрерывное тестирование — создание тестируемого конвейера CI/CD
Для непрерывного тестирования сосредоточиться на доверии, реализации, обслуживаемости, мониторинге и скорости (CIMM):
- Чтобы получить большую уверенность, пари -тестеры с разработчиками, когда они пишут код, для просмотра модульных тестов на предмет покрытия и для добавления сервисных тестов для бизнес -логики и обработки ошибок.
- Для реализации используйте инструменты, которые поддерживают быструю обратную связь от быстрого запуска повторяющихся тестов. Для испытаний на уровне обслуживания введите конкретные ответы/входы в контейнеры Docker или проходят загрязненные ответы из точек интеграции. Для интеграционных тестов запустите обе службы в парных контейнерах Docker в одной и той же сети. Ограничение тестов на полную среду.
- Убедитесь, что тесты поддерживаются и актуальны. Создайте тесты с читаемыми человеком ведения журнала, значимых именования и комментариев.
- Для мониторинга используйте инструменты тестирования, которые интегрируются в инструменты конвейера CI/CD, чтобы сделать сбои/успехи видимыми и даже автоматически отправлять электронные письма. В производстве журналы маркировки, чтобы отслеживать путь пользователя и сведения системы сбора системы пользовательской среды позволяет легче отлаживать.
- Для скорости сохраните тестовый набор минимальным. Пусть каждый тест фокусируется только на одном и разделите тесты, чтобы работать параллельно, если это необходимо. Разделите, чтобы проверить только для измененных областей и игнорировать тех, у кого нет перекрестной зависимости.
Избегайте автоматизации всего. Запустите ручные исследовательские тесты на каждом этапе, чтобы понять новое поведение и определить, какие из них нуждаются в автоматических тестах.
При перемещении в новую среду протестируйте откат окружающей среды. Изменение изменений не должно влиять на пользователей или влиять на целостность данных. Проверьте сам процесс развертывания для производства и запустите тесты на дым. Продолжайте следить за тем, чтобы запустить известные условия ошибки и гарантировать, что мониторинг фиксирует тех, у кого есть достаточная информация для легкой отладки.
Полный пост здесь , 7 минут читать
Получите эти заметки непосредственно в своем почтовом ящике каждый будний день, подписываясь на мою новостную рассылку, in.snippets ().
Оригинал: «https://dev.to/mohanarpit/how-to-design-resilient-systems-create-testable-ci-cd-pipelines-im9»