Back home

Платформы среды выполнения начинают конкурировать за доступ к полнофункциональной цепочке инструментов

После того как сборка, тестирование, предварительный просмотр и развертывание включены в одну и ту же цепочку выполнения, рабочий процесс по умолчанию будет определять право собственности на платформу раньше, чем цена хостинга.

Как только проект начнет одновременно затрагивать SSR, фоновые задачи, хранилище объектов и предварительное развертывание, инструмент сборки вскоре раскроет свои первоначальные границы. vite dev отвечает за запуск страницы, возврат управления средой тестирования, развертывание CLI для выхода в Интернет и добавление связующего слоя к уровню адаптации среды выполнения. Поначалу такой набор вещей был терпимым, но как только проект разделил локальную среду отладки и производственную среду выполнения, начали возникать проблемы: он мог работать локально, но предварительный просмотр не удался; при обновлении версии адаптера привязки очереди и хранилища больше не были совместимы; команды остались прежними, и я уже знал, что на каждом уровне могут возникнуть проблемы независимо.

Самым очевидным изменением в цепочке инструментов за последние два года является то, что платформу больше не удовлетворяет «последний этап развертывания». Они начали двигаться вперед, объединяя локальную разработку, моделирование во время выполнения, обратную связь по тестированию и команды выпуска в одно и то же соединение. В связи с недавним слиянием VoidZero и Cloudflare на самом деле стоит обратить внимание не на сами новости о приобретении, а на более четкий сигнал: платформы среды выполнения начинают напрямую конкурировать за доступ к полнофункциональной цепочке инструментов.

Как только инструмент сборки попадает в среду выполнения, граница платформы сдвигается вперед

В традиционном смысле обязанности инструмента сборки очень ясны: прочитать исходный код, сгенерировать пакет и передать его последующей системе для обработки. Этого разделения труда уже недостаточно. Пока в приложении есть маршрутизация на стороне сервера, базы данных, очереди, хранилище объектов и пограничные функции, завершение построения не означает завершение доставки. Еще предстоит согласовать целый раздел семантики времени выполнения.

Самый простой момент, когда проект такого типа может застрять, заключается не в том, достаточно ли быстр сборщик, а в том, является ли то, что на этот раз выполняется локально, той же средой выполнения, установленной в Интернете. Пока ответ отрицательный, цикл разработки будет становиться все тяжелее и тяжелее. Чтобы восполнить этот пробел, платформа обязательно найдет способ перенести сервер разработки в свою собственную среду выполнения и сделать «написание кода локально» и «запуск его онлайн» в одной и той же модели.

Таким образом, изменения, которые мы видим сейчас, заключаются не только в том, что платформа предоставляет адаптер для определенной платформы, но, в свою очередь, собственный интерфейс командной строки платформы, плагины среды выполнения и локальная среда активно преобразуются в форму цепочки инструментов, с которой разработчики уже знакомы. Таким образом, меняется вход. Платформа больше не ждет появления шага deploy. Он уже вышел на рынок, начиная с dev, build, test и даже формата подсказки об ошибке.

Агент усилил все мелкие трудности в цепочке инструментов, которые можно было допустить.

Когда этот вопрос переводится на стадию чисто ручной разработки, темпы не столь срочны. Люди запомнят, какие команды нужно запускать более одного раза, какие ошибки — это просто проблемы окружающей среды, а какие адаптеры время от времени трясутся в конвульсиях. После появления агента эта неопределенность по сути становится издержками.

Агент будет неоднократно подключаться к серверу разработки, повторно запускать тест, читать ошибки, изменять код и снова проверять. Несогласованные команды, нерегулярные журналы и непоследовательное поведение во время выполнения. Эти небольшие сбои, которые ранее были устранены опытным путем, напрямую станут бесконечным циклом в цикле выполнения. Конечно, скорость сборки, скорость тестирования и скорость проверки также важны, но что более ценно, так это то, имеет ли вся ссылка унифицированные ограничения: одинаковый набор CLI, одинаковый набор моделей конфигурации, одинаковый тип вывода ошибок и одинаковые отношения локального и производственного сопоставления.

Вот почему статус таких инструментов, как Vite, меняется. Изначально они были всего лишь самым полезным механизмом на этапе построения интерфейса, но теперь они постепенно стали базой по умолчанию для агента, которым легче всего стабильно управлять. Быстрый, простой и широко совместимый. Раньше эти преимущества в основном служили опыту разработки, но теперь они напрямую служат надежности выполнения. Пока платформа присоединяет свои возможности среды выполнения к этому циклу по умолчанию, она получит не только цель развертывания, но и целый набор навыков создания и проверки приложений.

Что действительно ценно, так это не согласованность фреймворка, а то, кто убирает рабочий процесс по умолчанию.

Просто взглянув на заголовки новостей, легко интерпретировать такие действия как экологические инвестиции или как платформу, которая хочет перенаправить трафик на свои собственные хостинговые услуги. Более чувствительные изменения в разработке на самом деле находятся на другом уровне: как только каркас проекта по умолчанию, локальная среда выполнения по умолчанию, цикл тестирования по умолчанию и команды выпуска по умолчанию попадают в одну и ту же цепочку инструментов, единица конкуренции платформ изменится с «чья машина дешевле» на «кто первым определяет, как создается приложение».

Эта разница не мала. Цены можно сравнивать горизонтально. После того как рабочий процесс записан в хранилище, сценариях, CI и привычках команды, его редко бывает легко изменить. Если платформа может взять на себя только последний этап развертывания, порог миграции невысок; если платформа заняла весь путь от dev до deploy, миграция повлияет на локальную среду, привычки команд, ссылки предварительного просмотра, методы отладки и сценарии выполнения агента. Часто именно этот слой действительно образует липкость.

Эта недавняя волна движений также выявила еще одну вещь: полнофункциональная цепочка инструментов дает новое определение понятию «нейтральность». В прошлом нейтральность означала больше то, что она была независима от платформы и работала на разных сборщиках. В настоящее время требования нейтралитета ужесточаются. Возможности платформы должны быть подключены, но саму цепочку инструментов нельзя превратить в частный протокол платформы. Тот, кто сможет сохранить уровень абстракции, не зависящий от поставщика, при этом сделав свою собственную реализацию опытом по умолчанию, с большей вероятностью получит следующий раунд вступительных бонусов.

Этот путь подходит только для команд, которых сдерживает сложность доставки

Не все проекты должны учитывать такого рода разногласия при входе. Для статических сайтов, небольших бэкэндов или сервисов с единой формой развертывания, возможно, не помешает и дальше разделять создание, тестирование и развертывание. Когда масштаб проекта велик, быстро возникают следующие типы проблем:

  • Различия между локальной разработкой и онлайн-средой выполнения начали постоянно отнимать время на устранение неполадок.
  • SSR, очередь задач, хранилище объектов и привязка базы данных находятся в одном хранилище.
  • Команды уже полагаются на среды предварительной версии, команды формирования шаблонов и шаблоны CI для совместной работы. — Агенты участвуют в кодировании, исправлении ошибок и тестировании, а стабильность цепочки инструментов начинает напрямую влиять на результат.

На данном этапе уже поздно рассматривать инструмент сборки как чистый компонент внешнего слоя. Он уже становится частью точки входа приложения, связанной со средой выполнения, развертыванием и исполнением. Слияние VoidZero и Cloudflare только проясняет этот вопрос: следующий раунд конкуренции платформ будет все больше и больше напоминать конкуренцию за рабочий процесс по умолчанию. У того, кто наиболее плавно замкнет эту цепочку, будет больше шансов решить, на каком фундаменте приложение будет расти в первую очередь.