Skip to content

codemonstersteam/pinout

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

pinout

Экосистема инструментов для валидации контрактов между сервисами в 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.
  • Инженерная диагностика. Сообщения об ошибках с кодами, контекстом и местоположением — для людей и для машин.

Roadmap

  1. Стабилизация pinout-asyncapi: расширение поддержки протоколов (AMQP, MQTT, Kafka, WebSocket bindings).
  2. Запуск pinout-openapi: проектирование и реализация по аналогии с AsyncAPI-модулем.
  3. Запуск pinout-netlist: модель данных графа сервисов, API для регистрации контрактов, веб-интерфейс для визуализации зависимостей.
  4. Сборка pinout-cli: единая точка входа для разработчиков и CI.

Лицензия

Проекты экосистемы публикуются под открытой лицензией (см. файл LICENSE в каждом репозитории).

About

Ecosystem of tools for validating contracts between services based on their OpenAPI/AsyncAPI specifications. Umbrella project for pinout-asyncapi, pinout-openapi, pinout-netlist.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors