HeadlinesBriefing HeadlinesBriefing.com

Определяемая симуляционное тестирование в celld

Hacker News •
×

Мы строим celld, среду выполнения для приложений Cloudflare Workers и Durable Objects на ваших собственных машинах. Он может работать с хранилищем объектов S3-совместимым как единственной внешней зависимостью.

celld — распределенная система. Создание надежных распределенных систем сложно, в части потому, что мы можем неосознанно полагать предположения, которые на практике не выполняются, даже когда мы знаем о ловушках. Список Peter Deutsch "Восемь заблуждений распределенных вычислений" перечисляет восемь таких предположений, включая "Сеть надежна" и "Задержка ноль."

Ошибка может зависеть от определенной задержанных сообщений последовательности, неудачных записей и перезагрузок узлов. Эти события могут происходить в другом порядке на следующем тестовом запуске, что делает ошибку трудно воспроизвести. Нам нужно уметь повторять ошибочный запуск, чтобы мы могли исследовать причину и проверить, действительно ли предложенный исправление решает проблему. Именно поэтому мы используем определяемое симуляционное тестирование (DST).

Наш симулятор все еще в разработке и не включен в публичный репозиторий celld, но он уже находил ранее неизвестные ошибки. В этой статье мы пройдемся по тому, как работает DST в celld и как он помог нам найти, воспроизвести и исправить одну из этих ошибок. DST запускает код производства celld в среде, управляемой симулятором. Ячейка в celld запускает код приложения и имеет свою own SQLite база данных. По мере работы ячеек, celld обрабатывает события, такие как входящие запросы, завершенные операции хранения и срабатывания таймеров. Код, который выбирает следующее событие, отделен от кода, который его обрабатывает. Это позволяет симулятору управлять порядком событий, пока работает тот же код обработки событий, что и в производстве.

Источник: Hacker News · Сводку подготовил HeadlinesBriefing