Тесты Polyglot: выбор правильного инструмента для правильной работы
Как многоязычные тесты помогают выбрать правильный стек для каждого приложения — а не один язык, который бы управлял ими всеми
Короткий, легко читаемый сопутствующий текст. Для полного погружения в архитектуру — компоновку жгута, матрицу решений, антишаблоны и способы создания тестов — прочитайтев длинной статье.
Ваша организация выбрала один стек в 2019 году. Ваши рабочие нагрузки этого не сделали.
Большинство команд по-прежнему стандартизируют один язык для каждого нового сервиса: все в Node, все в Python, все в Java или героическая ставка на Rust только для новых проектов. Эта привычка понятна: найм сотрудников, шаблоны CI и проверка безопасности становятся проще, когда стек единообразен. Проблема в том, что рабочие нагрузки неравномерны. Шлюз API, ночное задание ETL, граничное преобразование NGINX, микросервис JVM и серверная часть чата с долгоживущими соединениями нагружают различные части среды выполнения. Выбор одного победителя в ходе публичных дебатов или одного микротеста — это то, как вы в конечном итоге получаете неправильный инструмент, несущий неправильную нагрузку.
Тесты Polyglot— это противоядие: воспроизводимая система и интерактивная информационная панель, которая сравнивает восемь сред выполнениянас одинаковыми рабочими нагрузкамиHTTP, поэтому архитекторы могут сопоставлять доказательства с ограниченными контекстами, а не с предвзятостью стека по умолчанию.

Что измеряет
На общедоступной информационной панели сравниваютсяNGINX njs,OpenResty Lua,Python (FastAPI),Go (net/http),Rust (Actix),Bun,Java (Javalin / Jetty)иKotlin (Ktor / Netty)в семи синтетических тестах, которые отражают реальный API и шаблоны границ: базовая линия в виде обычного текста, сериализация JSON, Фибоначчи с привязкой к CPU, строка манипуляции, проверка запросов, внутренний подзапрос + преобразование и логика маршрутизации. В каждом тесте сообщается о количестве запросов в секунду, средней и хвостовой задержке (включая P99), времени до получения первого байта от Curl и количестве ошибок, которые транслируются в реальном времени по завершенииbench.sh.
Java и Kotlin работают вместе со скомпилированными средами выполнения и средами выполнения сценариев, поэтому магазины JVM могут видеть, как Javalin и Ktor торгуются с Go, Rust, Bun и FastAPI по идентичным маршрутам, а не против запутанного повествования «предприятие против нового предприятия». Инструмент находится в примерах/тестах рабочих процессов.: сервисы Docker Compose, общий профильwrk(10 секунд, 4 потока, 100 подключений) и результаты JSON, используемые информационной панелью. Вы можете разветвить его для своих собственных кандидатов и горячих путей.
Почему это система принятия решений, а не таблица лидеров
Тесты Polyglot Benchmarksне являются короной одного языка на все времена. Победители меняются в каждой тестовой строке — именно то, что вам нужно при разработке микросервисов. В разделе вердиктов информационной панели результаты сопоставлены с вариантами использования (граничная маршрутизация в Lua/njs, параллелизм ядра в Rust/Go, сервисы JVM в Java/Kotlin, скорость в Python). Это тезис:полиглот по дизайну, с данными для плат по обзору архитектуры вместо мнений.

Шесть преимуществ для руководителей платформ и разработчиков
- Доказательства важнее мнения— прикрепите диаграммы и настройки к ADR; урегулируйте дебаты по стеку с помощью размеренных прогонов.
- Победители в области конкретных рабочих нагрузок— чувствительные к задержке пути, пакетные преобразования, граничные преобразования и поместья JVM получают разных лидеров.
- Общая стоимость владения— чистого количества запросов в секунду недостаточно; Взвесьте время сборки, размер образа, соответствие навыкам команды и нагрузку на операции.
- Воспроизводимые рабочие процессы— тот же репозиторий, тот же файл Compose, тот же сценарий работы; возможность повторного запуска в CI.
- Легитимные полиглотные микросервисы— разные языки на границе сервиса без стыда и удивления.
- Снижение риска— прототип, занявший второе место перед мандатом всей организации.

Быстрый старт
- Откройте интерактивную панель управленияво время выполнения (или запустите ее локально).
- Клон
workflow-examples,cd benchmarks,docker compose up— восемь языковых служб, а также панель мониторинга и бегунка. - Прочтите
results.jsonна томе информационной панели и сопоставьте победителей сстроками рабочей нагрузки. - Запишите ADR — укажите продолжительность, потоки, соединения и класс оборудования.
Прочитать полную версию
В длинной статьеописан полный макет репозитория, таблица критериев, диаграмма матрицы решений, шаблоны вариантов для каждого семейства тестов (включая Java и Kotlin), антишаблоны, ограничения и готовые для SEO фрагменты для обмена с вашим ARB. ОпубликованоWorkstation; сайт тестов, размещенный по адресуpolyglot-benchmarks.fictionally.org.
#Rust #GoLang #Bunjs #Java #Kotlin #Lua #Python #njs #FastAPI #Javalin #Ktor #OpenResty #polyglot #benchmarks