Пейджер

Фиксируем контракты и схемы ✏️

TL;DR
  • TypeSpec.io фиксирует API-контракты и генерирует сервисы
  • Prisma делает то же для схем базы данных
  • Прекоммит-хуки и линтеры контролируют актуальность
Фиксируем контракты и схемы ✏️

Вот есть у меня N сервисов, которые общаются между собой по REST. Че обычно делают? Фиксируют контракт в каком нибудь swagger и как бы все. Круто если он актуальный, еще круче если по нему генерят код

Но есть проблемы. Так как схему для сваггера обычно генерят на лету, то никакой фиксации контракта тут нет. Сгенерят новую схему и забудут. А хочется чтобы источником истины в первую очередь был контракт, как в каком нибудь gRPC

Много слышал про https://typespec.io и решил попробовать. У меня есть куча микросервисов и гейтвей между ними. И работает это афигеть как прекрасно! Поменял контракт - перегенерил файлы-сервисы и живи дальше. Допом прикрутил себе прекоммит хук, мол, если не поддерживаешь актуальный контракт, то будь добр исправься

Это круто, но у меня тут еще база данных одна на всех, хочется и коллекции в ней также описывать. Не так давно читал на Хабре статейку где схемы описывали как файлы. Но чет оно выглядит очень душно. И может я от жизни отстал, но есть оказывается Prisma! В ней как и с контрактами - описал, сгенерил, поддержал. Ляпота

Теперь мои микросервисы живут в мире и согласии, за которым блюдёт линтер. Допом LLMке проще ориентироваться че у меня есть и кто потребитель контрактов или коллекций с базы
Хотите больше таких постов?
Подпишитесь на канал и читайте продолжение в Telegram.
Подписаться на @coaled_frontender Открыть пост в Telegram