Экосистема инструментов для валидации контрактов между сервисами в IT-архитектуре, где каждый сервис описан машиночитаемой спецификацией (OpenAPI, AsyncAPI).
В электронике pinout — это распиновка микросхемы: какие сигналы идут на какие пины, какие напряжения, какие протоколы. Чтобы две микросхемы заработали вместе, их pinout должен быть совместим.
В микросервисной архитектуре роль pinout играет спецификация сервиса — OpenAPI для синхронных REST API или AsyncAPI для асинхронного обмена сообщениями. Спецификация описывает «распиновку» сервиса: какие операции он принимает, какие сообщения отправляет, по каким каналам и протоколам.
pinout берёт на себя ту же задачу, что continuity test берёт на печатной плате: проверяет, что распиновки потребителя и поставщика сходятся до того, как сервисы попадут в продакшн и начнут падать на runtime-несовместимости.
| Модуль | Назначение | Статус | Репозиторий |
|---|---|---|---|
| pinout | Зонтичный проект, общие типы и интерфейсы для модулей экосистемы | 🚧 в разработке | codemonstersteam/pinout |
| pinout-asyncapi | Валидатор контрактов AsyncAPI 3.0 между consumer и provider. Поддержка Request-Reply, Fire-and-Forget, Pub-Sub. CLI для CI/CD | ✅ готов к использованию | codemonstersteam/pinout-asyncapi |
| pinout-openapi | Валидатор контрактов OpenAPI между REST-сервисами по той же модели consumer/provider | 📋 запланирован | — |
| pinout-netlist | Координатор связей сервисов: хранит граф consumer↔provider, метаданные, версии контрактов. Название — отсылка к netlist в PCB-дизайне (формальное описание всех соединений в схеме) | 📋 запланирован | — |
| pinout-cli | Единый CLI-фронт для всех валидаторов и работы с координатором | 📋 запланирован | — |
- Спецификация — источник истины. Контракт описан один раз в OpenAPI/AsyncAPI, валидаторы только проверяют совместимость.
- Локальный запуск в CI/CD. Несовместимость контрактов должна обнаруживаться на pre-merge стадии, а не в проде.
- Модульность. Каждый протокол (REST, AMQP, MQTT, Kafka и т.д.) — отдельный валидатор; общая модель consumer/provider.
- Инженерная диагностика. Сообщения об ошибках с кодами, контекстом и местоположением — для людей и для машин.
- Стабилизация
pinout-asyncapi: расширение поддержки протоколов (AMQP, MQTT, Kafka, WebSocket bindings). - Запуск
pinout-openapi: проектирование и реализация по аналогии с AsyncAPI-модулем. - Запуск
pinout-netlist: модель данных графа сервисов, API для регистрации контрактов, веб-интерфейс для визуализации зависимостей. - Сборка
pinout-cli: единая точка входа для разработчиков и CI.
Проекты экосистемы публикуются под открытой лицензией (см. файл LICENSE в каждом репозитории).