3. Про изобретение велосипеда в век вайб-кодинга
30 апреля 2026 г.
Ещё работая в Гугле, я начал использовать некоторые сервисы Google Cloud для своих собственных хобби-проектов. Моим любимым был Cloud Run, который позволяет написать HTTP-сервер на любом языке с любым стеком и задеплоить его одной командой:
gcloud run deploy --source .
Там на самом деле чуть больше параметров, но идею вы поняли.
Внутри там магия: репозиторий архивируется git archive и кладётся в storage bucket, потом Buildpacks определяет, что там внутри, Cloud Build билдит Docker image, создаётся версия сервиса и вы получаете URL типа https://you-service-name-some-random-letters.run.app, и когда вы к нему обращаетесь, запускается ваш контейнер и отвечает ваш HTTP-сервер.
Круто ведь, да?
Ну, да, если не думать про всю сложность, которая там выполняется под капотом, чтобы отправить вам res.send("Hello World"). А думать про неё иногда приходится. Cloud Run остановит ваш контейнер по неактивности, и следующий посетитель залетит на «холодный старт»: будет ждать, пока запускается контейнер, в нём процесс (node, python или что угодно), который слушает порт, и так далее. Холодный старт у меня обычно занимал 1-2 секунды, но бывает и хуже.
Помимо холодных стартов, были и всякие другие неудобства.
Деплой занимал 2-3 минуты: во-первых, там почему-то не кэшируются Docker layers, так что каждый ребилд выкачивает всё заново. Поверх этого gcloud, видимо, ждал окончания билда с exponential backoff, что легко добавляло полминуты к ожиданию. Не так уж долго, но всё равно ждать.
Подключение своего домена к Cloud Run довольно просто, но всё же требует времени. Сначала Google должен убедиться, что домен действительно ваш, проверив TXT-записи в DNS, это обычно несколько минут занимало. Потом нужно привязать домен к сервису в Cloud Run и подождать, пока будет выписан SSL-сертификат, и вот это могло занять час или дольше.
Ну и, наконец, Cloud Run по сути бесплатный, когда у вас совсем нет трафика, но зато когда он появляется, приходится платить. Я обычно не выхожу за $1-$2 в месяц ни на одном из проектов (можно сделать вывод об их популярности), но за один проект, игра в «дурака», я довольно быстро начал получать счета в $20 и больше в месяц, после чего мне пришлось в экстренном порядке переезжать из облака на дешёвый VPS. Ну да, потратил время на настройку systemd и потерял простой способ деплоймента, но зато плачу конечную сумму, а VPS, скорее всего, потянет и в 10 раз больший трафик.
Но даже с учётом всего сказанного Cloud Run был самым простым способом немедленно задеплоить только что написанный код, и я использовал его постоянно. У меня на Cloud Run крутились несколько телеграмных ботов, которые мне посылали всякие сообщения и нотификации, всякая там аналитика и прочее. Недавно я посмотрел и насчитал более 30 сервисов, разбросанных где-то по 20 проектам, и с каждым месяцем их становилось всё больше и больше.
Надо было этот процесс как-то останавливать.
Это уже, возможно, возраст, но я открываю инструкцию для Caddy, Dokku или чего угодно ещё, и через 2 минуты они меня потеряли. Помнится, я раньше мог по памяти написать VirtualHost для Apache, но эти времена давно прошли, сейчас дайте мне, пожалуйста, команду для копи-паста. Желательно одну, в крайнем случае две. Я не хочу тратить часы на выяснение, как пользоваться тулзой, у которой сто разных ключей командной строки и опций в конфиге. Ленюсь, видимо.
Так я и сидел на Cloud Run, в основном из-за вот этого его деплоя одной командой, и был не рад, потому что было понятно, что надо с этим что-то делать, но что — было непонятно.
И вот я наконец решил, что хватит, и сел вайбкодить с Клодом.
Нелюбимая мной русская википедия официально называет это синдромом неприятия чужой разработки, «Not invented here». Говоря по-простому, изобретать велосипед, делая свои решения там, где существуют признанные сторонние продукты, считается плохим решением.
Ну, как сказать.
Я пришёл к Клоду с одним абзацем описания того, чего я хочу: один сервер, Caddy для SSL-сертификатов, каждый сервис в своём Docker-контейнере (эта часть мне очень нравится в Cloud Run), и деплоймент при помощи написанной на Golang тулзы в командной строке. Клод мне написал начальный набросок README.md, который я перетащил в Codex, который добавил больше деталей, вплоть до того, как будет выглядеть интерфейс командной строки. Кстати, это вообще довольно интересный способ разработки, когда используешь одновременно Claude и Codex: они обращают внимание на разное.
Потом агенты у Клода начали писать код, и после трёх пятичасовых сессий у меня была работающая тулза, я купил VPS и задеплоил туда первый сервис. А потом ещё один, и ещё. Прошло несколько вечеров, и я почти полностью переехал с Cloud Run. Ещё неделю назад я не мог поверить, что это получится настолько просто.
И теперь несколько мыслей.
Я не хочу разбираться с вашими инструментами. Я не хочу покупать ваш сервис. Я лучше потрачу такое же (или меньшее!) время на разработку своей штуки, которая будет делать ровно то, что мне надо, так, как мне надо, а то, что не надо, делать не будет.
Всегда ли это хорошее решение? Нет, конечно. В конце концов, я же взял Caddy (не написав, правда, ни строчки его конфигурации вручную), потому что SSL-сертификаты это сложно, и пусть ими лучше занимается готовая штука. Но для остального — вайбкодинг поможет написать своё.
Я недавно об этом уже писал: очень хорошо понятно, что всем пофиг на тулзу, которую я сделал, и никто, кроме меня, ей пользоваться не будет. Код теперь стоит очень дёшево, и инструменты тоже. Я не хочу пользоваться вашими, но и вы моими тоже не хотите.
Впрочем, если вдруг захотите, то вот, пожалуйста: decloud
Если вы хобби-разработчик или небольшой стартап и вы деплоите код в облако, то, возможно, нужно остановиться и задуматься, не пора ли перестать это делать. Раньше какие были причины идти в облако? Во-первых, деплоить было быстро, а во-вторых, невозможно было представить, что можно дома переписать всю функциональность, которую облака предоставляют. Но по факту вам не нужна вся функциональность, только часть, а эта часть вайбкодится довольно просто, и потом её можно использовать абсолютно бесплатно. Ещё и сэкономить кучу времени на разборках, что там у облачного сервиса есть и как оно работает. А главное — никакого IAM!
Ну и, само собой, делать своё решение просто намного интереснее и прикольнее. Даже если не написал там ни строчки кода, потому что Клод всё сделал. Всё равно прикольно.
В общем, буду дальше изобретать велосипеды.