Signadot спонсировал этот пост.
«Эй, еще не объединяй это, мне все еще нужно проверить с моим сервисом». Звучит знакомо?
Координация изменений в микросервисах во время разработки функций всегда начинается просто. Когда весь ваш стек подходит в одну репо или коробку EC2, это не имеет большого значения. Но немного быстро, и вы жонглируете 20, 40, может быть, сотни услуг, принадлежащих различным командам, перемещаясь по разным срокам и в зависимости от друг друга в тонких, недокументированных способах.
Внезапно небольшое изменение внутреннего API нарушает чужую постановку. Запрос на вытягивание frontend (PR) застрял в ожидании развертывания бэкэнд. Вы в Slack Goding: «Может ли кто-нибудь переделать пользовательский сервис с последним основным?» снова. То, что должно занять пять минут, занимает весь день.
В действительности, большинство функций не изолированы. Новая возможность часто означает прикосновение к фронта, настраивая API и обновление пары бэкэнд служб. Вы хотите увидеть, как все эти произведения ведут себя вместе, не прыгая через обручи.
«Но я думал, что микросервисы посвящены разделению вещей, а не в их связи». Ну, да, вы хотите самостоятельно выказывать услуги. Но это не значит, что вы не должны сначала проверять их вместе. То, что услуги могут развернуться отдельно, не означает, что их функциональность существует в изоляции. Тестирование того, как они взаимодействуют во время разработки, все еще важно. Возможность тестировать в процессе изменений вместе, между службами, без слияния рано или координации полного развертывания, не должна быть такой тяжелой.
Три болезненных подхода, которые мы видим
На практике команды обычно попадают в один из трех лагерей, ни один из них не красиво:
Источник: Signadot.
Ни один из них не является идеальным. Но есть четвертый вариант, который в настоящее время принимает больше команд: сделать общую среду многопользой.
Легкая альтернатива: общие среды для многопользования
Основная идея здесь проста: перестаньте сражаться за один общий кластер. Вместо этого сделайте это многопользователем.
Это не фантастическая установка; Это проверенный шаблон, используемый в масштабе. Подход Lyft к проведению переопределения использует Engoy и его сервисную сетку для маршрутизации трафика в общей среде в нужные версии тестируемых услуг, в зависимости от того, кто делает запрос. Нет полного клона, не требуется, никаких изоляционных взломов — просто умная маршрутизация.
Эта концепция «постановки» позволяет разработчикам проводить реальные интеграционные тесты с реальными зависимостями в среде, которая остается стабильной для всех остальных. Вы получаете быстрые контекстуальные отзывы, не высмеивая мир.
Сервисные сетки, такие как Istio или Linkerd, делают эту модель широко доступной. Они позволяют раскрывать предварительные версии услуг и направлять их трафик на основе метаданных запросов. Это сохраняет ваш тест изолированным при разделе инфраструктурой внизу.
Никаких макетов, нет ручной координации, нет парка специальных кластеров.
Источник: Signadot.
Почему это так эффективно?
Реальная магия этого подхода заключается в том, что он не требует переосмысления вашего стека. Он основан на вашем существующем кластере Kubernetes и сервисной сетке для разумного маршрута. Вы получаете изоляцию там, где вам это нужно, и общая инфраструктура, где вы этого не делаете.
Скажем, у вас есть бэкэнд -изменение и передовое изменение, каждый из которых в отдельных PRS. С этим подходом вы можете развернуть оба в один и тот же контекст маршрутизации. Сервисная сетка гарантирует, что запросы, поступающие из вашей тестовой сессии, достигают правильных версий обеих услуг, в то время как любая другая зависимость извлекается из базовой среды. Это означает, что вы тестируете реальную интеграцию, не ломая и не дублируя что -либо.
Источник: Signadot.
Направляя конкретные запросы на конкретные версии службы, вы можете проверить любое количество изменений вместе, будь то один, два или много, не нарушая других. Разработчики могут объединять PR-PR в полете между услугами для воспроизведения реальных потоков, при этом сохраняя среду чистой и предсказуемой для всех остальных.
Эта модель на основе маршрутизации значительно улучшает опыт разработчика. Это сокращает петли обратной связи, уменьшает координационные накладные расходы и позволяет командам проверять реальную интеграцию вместо того, чтобы притворяться. Он естественным образом масштабируется по мере роста числа ваших услуг, потому что вы не клонируете всю среду, просто разумно маршрутируете трафик.
Завершая
Современным командам разработчиков нужны более быстрые и более безопасные способы проверки изменений между услугами, особенно когда эти изменения охватывают несколько репо, команды или слои стека. Традиционные подходы ломаются под весом масштаба и сложности.
Мы не просто говорим о улучшении постановки. Мы говорим о фундаментальном сдвиге: обеспечение значимого тестирования интеграции во время разработки, не замедляя команды. Общие, многопользовательские среды, основанные на интеллектуальной маршрутизации и наложениях, дают командам четкий путь вперед.
Это не просто более приятный опыт разработчиков. Это способ двигаться быстрее без разрезания углов и проверить систему, поскольку она действительно существует, вместо некоторой высмеивающей моделирования. Команды, которые принимают эту модель, не только поставляются быстрее, но и более уверены в том, что они отправляют.
Ускорить обратную связь. Разрежьте изделия. Корабль с уверенностью.
Signadot помогает командам принять эту модель без сложности. Разверните изолированные контексты тестирования, оцениваемые в ваши изменения, разумно маршрутируйте трафик и проверяйте функции по услугам за считанные минуты, а не дни.
Signadot-это платформа для тестирования Kubernetes для микросервисов. Используя Signadot, инженерные команды «сдвигаются налево», чтобы выяснить проблемы раньше и повысить доверие. Узнайте больше новейших из Signadot Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Анируд Раманатан является техническим директором Signadot, где он фокусируется на развитии нативного облака. До этого он работал в Google, сосредоточившись на базовых контроллерах Kubernetes и расширяемости. Он также является комитетом в проекте Apache Spark с акцентом на … Подробнее от Anirudh Ramanathan