Рейтинг
0.00

H3LLO CLOUD

2 читателя, 37 топиков

Ваше мнение стоит целого ЦОДа




Добрый день, H3llo!

Мы тут готовимся к публичному запуску последнего коммерческого облака в России и не хотим стрелять себе в ногу.

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

Поэтому я пришёл к вам с вопросами.

Их всего три: что у вас случалось раньше плохого с облаками или хостингами, что бы вы хотели исправить и что вы бы лично хотели от нашего облака.

Ответить можно тут. Займёт от 30 секунд до 1 года, но медиана где-то в районе 3 минут.
survey.h3llo.cloud


Заранее большое спасибо!

Не обещаю, что всё это имплементируем, но обещаю, что очень внимательно к этому отнесёмся и потом поделимся с вами и сообществом результатами всего опроса.

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

С уважением,
Константин \m/
H3LLO.CLOUD

h3llo.cloud/ru/

У нас в названии есть слово «гиперскейлер»




У нас в названии есть слово «гиперскейлер». На подкасте меня спросили, а что это.
Я прям растерялся.
Это хостинг масштабом больше любого потенциального клиента в разы. В смысле, когда у клиента случится пиковая нагрузка, он сможет получить все нужные ресурсы.
Это значит несколько неочевидных вещей:
  • Нет единого крупного клиента (привет, Сбер).
  • График потребления ресурсов у клиентов разный (а не облако для розницы, падающее в чёрную пятницу).
  • Есть свободные ресурсы или ресурсы, с которых можно сдвинуть какие-то проекты вроде месячного расчёта для поиска обитаемых планет в фоновом режиме.
  • Есть платформа, которая позволяет так масштабироваться.
  • Есть куча автоматизаций, которые решают проблемы свёртывания-развёртывания.
Напомню, мы выкинули всё, что раньше делали другие (потому что у других получился Опенстек), переосмыслили всё это полностью и написали свою платформу. У нас никакого легаси, сложных совместимостей, зато есть самое топовое железо. И как следствие мы строим лучший пользовательский опыт. Мы не идём в сторону сотен сервисов, как у Амазона. Мы идём в сторону того, чтобы это было просто, понятно, удобно и экономически эффективно.
Местами получается. Мы только начали.

h3llo.cloud/ru/

Чисто русский переезд в другой дата-центр




У нас на неделе был эпический переезд из Ростелекома в IXcellerate. Кажется, мы обязаны про это рассказать.

Потому что случился просто весь сок того, как работает отечественный рынок:
  • Те, кто ждал подъёма своего облака всё это время — вы ждали СДЭКа, который вёз два патч-корда «день в день».
  • У нас глючили сетевые железки, и мы не знали, в чём дело. Две недели поиска бага закончились тем, что мы перевезли их в другой дата-центр, и там глюк прошёл полностью.
  • Нельзя зайти в ЦОД Ростелекома 21 человеку, потому что 1 человек оформляется охраной 5 минут с записями в бумажный журнал, а через час они просят пересоздать заявку.
  • Если у вас в команде есть белорусы и казах, то их будут проверять 3 дня, прежде чем пустить на стратегический объект, потому что таков SLA безопасников по обмену данными. Но если у вас есть сириец, его пустят сразу (вероятно, потому что обмен данными не налажен).
  • И да, после переезда мы наконец-то обновили бесплатные лимиты, теперь даже не надо пополнять счёт, чтобы их получить.


Бета облака
Мы строим последнее коммерческое облако в России. Есть масштабная бета, в бете много халявных ресурсов, но надо помнить, что, несмотря на 5 автономных зон, геораспределённое хранилище, другие плюшки, в любой момент всё может пойти по звезде. Потому что мы решили поправить какой-то баг на проде (на самом деле нет).

Нашу бету уже ломали коллеги (спасибо большое), ломали тестеры (спасибо большое), нам показывали на проблемы с UI, была куча пожеланий — в общем, постоянно идут работы.

В целом всё началось с желания запуститься как можно быстрее. Поэтому мы развернули нашу бету на самом оптимальном стеке. Демоинсталляция с халявными ресурсами живёт всё ещё не на той же архитектуре, что прод. В ней ещё торчали куски Козистека — уже кубероцентричного, красивого и новомодного, блестящего такого, но с прослойкой для своего, пока ещё сырого API и без физического разделения сетей. Ну и заодно оказалось, что это решение тоже не очень нормально работает. Мы постепенно избавлялись от него итерация за итерацией, но его наследие продолжало нас преследовать.

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

Массово посыпались проблемы на бете
То на ровном месте начинали флапать внутренние BGP-сессии с хостов до ToR-коммутаторов. То внезапно отваливалась наша гиперконвергентная дисковая подсистема — поды начинали мигрировать, отваливаться, а хосты «затенялись» (становились tainted) и переставали принимать новые нагрузки. Всё упиралось в один маршрутизатор ядра. Производительность у него была неплохой, оверхед маленький, но стабильность исчезла.

Мы привезли новые железки, и они стали показывать примерно 40–50% от номинальной производительности по пропускаемому трафику. Представьте: у вас 25-гигабитный линк, а он выкачивает от силы треть.

Почему? Расследование в моменте, когда всё вокруг горит, не дало результатов, но копались мы пару недель. В итоге подъехали 100-гигабитные карточки и мы решили не тратить время и просто пересобрать всё на них.

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

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

Как потом оказалось, на новом месте железки заработали, и от шутки про то, что «я же тебе говорил, место проклятое!», мы удержаться не смогли.

Как переезжать? Был вариант с плавным переносом серверов, частичными переездами, попыткой обеспечить совместимость двух несовместимых кластеров. Это долго, мучительно и чревато новыми, ещё более изощрёнными проблемами.

Если вы любите приключения, рекомендую такой путь.

Но поскольку это бета, а в бете, как известно betta than nothing, мы выбрали путь Безумного Макса и Дороги ярости. Полностью всё вырубить, физически перевезти и собрать с нуля в новом стеке и новом ЦОДе. Да, это означало простой около 2 дней для пользователей беты (как нам казалось вначале). Но так было быстрее и, как оказалось, веселее.

Мы объявили, что берём тайм-аут, и дальше затеяли масштабный тимбилдинг: почти весь офис, включая фаундеров, отправился в Ростелеком паковать серверы.


Место проклятое!
Шаг 1: подаём заявку на проход 21 человека за сутки. Мы такие заявки (правда, на меньшее количество людей) подавали полтора года по одной и той же форме. Перезванивают их сотрудники и говорят:
— Надо заявку переделать!
— А почему?
— Вам надо по-другому название ЦОДа написать, не Nord, а «РТК-Медведково-1», потому что Nord — это слишком прозападно.

Ладно, поменяли. Последний раз же.

Потом за пару часов до времени заезда коллеги внезапно выясняют, что у нас в штате работают белорусы и пара человек из Казахстана. Им вход блокируют.

— Я сотрудник физической безопасности, мне надо на то, чтобы проверить человека из Беларуси, три дня. У вас их тут двое. Ещё из Казахстана двое. Короче, идите на хер, пересоздайте заявку без них.

Интересно, что у нас есть сириец, который такие проверки не триггерил ни в одной заявке.

Ладно, пересоздались без них. Последний раз же.

Наученные прошлым опытом, печатаем серийники для заявки на выезд.

Дальше мы сломали их физический IAM. То есть попыткой зайти разом вся их пропускная система подвисла так нехило, больше чем на час. Потому что каждого они пропускают минут по 5. Записи в бумажный журнальчик делают, паспортные данные какие-то переписывают, забивают, хотя они все в заявке есть. Потом ещё выдают тебе на планшете ту самую инструкцию, которую никто не читает, но вместо галочки — роспись пальцем. Потом это всё в определённый момент просто зависает, ломается. А у них же ещё двое ворот на входе в ЦОД. И, понятно, чтобы не создавать очередь, часть людей уходит на другие ворота, и их логика ломается окончательно.

В итоге оказалось, что пропустить всех надо за 1 час, потому что потом слот активации пропуска заканчивается. Пять человек не попали вообще.

— Заявка закрылась, мы не можем запускать новых людей. Пересоздайте, пожалуйста, заявку на вход!

Ладно, пересоздали. Последний раз же.

Около 14 звонит газель, которая должна была всё это вывозить. Она, как это принято, внезапно ломается. Мы срочно ищем другую. Пересоздаём заявку. Последний раз же.

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





Патч-корды — оказывается, это проблема
Заезд в IXcellerate как небо и земля. Мы приехали чуть раньше, чем грузовик, успели выпить кофе и посидеть. Заявка делается просто по списку людей, документы проверяют на входе, без всяких журнальчиков (всё электронное). Проход занял по 20 секунд на человека.

Примерно за 3 часа всё смонтировали — быстрее, чем разбирали в РТК, потому что белорусов пустили.


Но! Для того чтобы в IXcellerate связать наш meet-me-room с новой инсталляцией (она у нас идёт как отдельный контур), понадобилась парочка отдельных патч-кордов. Трассы проложены, кроссы разварены, трансиверы есть. И вот нам, значит, нужен обычный патч-корд, FC — LC-дуплекс.

Заказываем его 30-го, в среду.

На «Всех инструментах» патч-корды были, на них было написано «доставка 1 день», но при добавлении в корзину дата доставки превращалась в 5 августа.

Нашли на Nag.ru. Они такие — «сейчас привезём!» Оплачиваем супернаценку за доставку СДЭКом. Это, кстати, в два раза дороже, чем сами патч-корды, чтобы доставить день в день.

И СДЭК их морозит на хрен.


Прикол в том, что у нас собрано уже всё. Контур заведён, уже всё крутится. Связать его с ядром сети — два, два маленьких патч-корда, и их не хватает!

То есть все, кто ждали нашего облака, имейте в виду, вы ждали два патч-корда, которые мы заказали в трёх разных местах. Мы с коллегами из ЮЛ-Ком уже шутили на предмет купить аппарат для сварки этих патч-кордов и варить их самим. Оказалось, это стандарт рынка. Это боль. Оказалось, что у многих это блокер включения нового клиента. Потому что две недели ждать патч-корды! Что происходит, почему в Москве их дефицит, я не знаю.

СДЭК привёз заказ день в день через 6 дней.


Изменения в архитектуре демоинсталляции
Была архитектура, растянутая на VLAN’ах. Пять физически изолированных сетей (для управления, хранения, публичного трафика и т.д.), которые всё равно терминировались как разные VLAN на одном маршрутизаторе. Мы жили даже в продакшене с MTU 1500 (!), что создавало проблемы для оверлейных сетей и производительности. И не спрашивайте, почему мы не пробовали его увеличить — мы пробовали, но пришлось откатиться. Это мешало построить полноценную оверлейную сеть Kube-OVN и изолировать теннаты друг от друга.

Сейчас полностью перешли на микросервисную архитектуру, выпилив все рудименты. Сеть теперь построена на EVPN VXLAN с физической топологией Dragonfly+. На уровне отдельной группы стоек — Clos (Node, Leaf, Spine), между Спайнами — full-mesh. Там тоже не без сюрпризов, про то, какие грабли поймали, напишем отдельно.

Выкатили API напрямую. Здесь мы вдохновлялись подходом AWS, которые через свой IAM прокачивают до миллиарда запросов. Наш API станет точкой входа для веб-интерфейса, CLI и внешних инструментов типа Terraform’а. То, что вы просили с беты, тоже запустим. Теперь эти доработки делаются ещё быстрее. Будут VPC для объединения машин в разных зонах доступности, Managed Kubernetes, управление DNS-зонами, очереди сообщений (Kafka, RabbitMQ, NATS).



Про бесплатный доступ
Для юрлиц сделали ролевую модель доступа (RBAC) для создания и управления пользователями с разными правами. Корпораты, добро пожаловать! При регистрации юрлица сразу даём 50 тысяч бонусов на 3 месяца.

Для пользователей-физлиц обновили наши бесплатные лимиты. Теперь, чтобы их получить, не нужно пополнять счёт. Мы просто будем холдить небольшую сумму на привязанной карте на несколько дней для верификации пользователя, потом отпускать. Сделали грейды бесплатных ресурсов: если нужен будет быстрый кластер с балансировщиком и расширенной СУБД, уже после пополнения счёта он подключится в бесплатные ресурсы.

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

h3llo.cloud/ru

Переезжаем в новый ЦОД, где всё будет распределено и отказоустойчиво




BGP — автоматический протокол маршрутизации.

То есть чтобы BGP начал работать, нужно отправить письмо. В 2025 году. Две тысячи. Двадцать. Пять на дворе, леди и джентльмены.

Всё, что мы анонсируем, должно распространяться по интернету, желательно моментально. Понимаете, какая тут зависимость от оператора.

Пару недель назад переключаемся с основного провайдера на резервного. Всё анонсировано корректно, но интернет не работает. Пишем в поддержку — в ответ:

А вы не уведомили нас письменно, что начали анонсировать новые подсети. Поэтому мы их игнорируем.

Сервисы для большинства пользователей работали штатно. Но историю мы запомнили.

Теперь у нас автоматическая балансировка маршрутов по восьми линкам. Переезжаем в новый ЦОД, где всё будет распределено и отказоустойчиво. Надеемся, что письма писать не придётся.

Как мы получали лицензию на работу с гостайной




Мы пошли в сертификацию ФСТЭК, аттестацию 152-ФЗ и на получение лицензии для работы с гостайной. Потому что мы вместо Опенстека сделали свою платформу и на ней смогли всё настроить под требования госорганов.

Поэтому вот пост, как получить сертификацию на гостайну по ФЗ-152 — уровень УЗ1.

Очень подробный и со всеми деталями.

Всё ████████ ████ с ████████. В соответствии с новым ████████. Для ████████ требовалась ████████. Поэтому ████████, и в рамках очень жесткого SLA.
████████.

████████ ████.

████████ ████████ █████ █ █████.

Началось с ████████. ███ █████████ █ ███████ ████ комиссия. Их ████████. Потребовали выделить ████████ под ████████ периметр ██████. Только ████, ███████, ███████ bare-metal. Весь наш IaaS-слой пришлось ████████████.
В ███████████ с █████████ от ██.██.████, на █████████ ████████████, ██████████ █████████ о █████████████ ███████████ ████████. В ███████ ███████████████ и ████████████ по ██████████ в ███████████████████, ██████████ ███████████ ████████████, █████████████ на ███████████████.

Основные ████████████:

████████████ в ███████ █████████████████ ████████ «█████████████-████»;

██████████ для █████████████ с █████████ всех █████████████ ███████, через ███████████████ ████████████;

████████████████ по ███████████ с ███████ ██████████ и █████████████, ████████████ после ███████████.

В ██████ с ████████████████, █████████████ по █████████ ████████████ на █████████████ ██████. Все █████████████ ██████████ ██████ █████████████ и ██████████ в ██████ до ███████████ ███████. При ███████████ █████████████, ████████ ████████████ к ████████ № ███-ФЗ.

Контроль за █████████████ ██████████ █████████ ██████████ на ████████████████████████ (████████ ████ ██).

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

Ввиду ███████████████████████████ **угрозы считывания дрожания стекла **лазерным лучом, █████ ██████ ███████████ ███████████ █████████ ███████ ███████████████ к █████████████ ██████ ███████.
Критерии ████████████:

███████ █████████ ████ ███████████ ███ █ ██████████ ██████████ █████.

Соответствие ██████ █ ██████ ████ ██ ████ ██████ ███ ████ ГОСТ ██████-██.

██████ ███████ ████████ ███████████. ████ █████ █████ ███████████ и ████ ██████████████.

Сроки из-за этого поплыли, конечно.

Теперь самое сложное:

█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████

Далее — сеть
Весь трафик ████████. Сегментация на уровне ████████. Отдельный VLAN. И ████████ роутинг через ████████. Логирование ████████.

Затем ████████. Наша PaaS-платформа на ████████ была ████████. Каждый деплой через ████████. Все образы ████████ по ГОСТ. Шифрование на уровне ████████ и на уровне ████████.

В соответствии с ██████████████ от ██.██.████, а также на основании ██████████████, было ██████████ решение о █████████████ следующих ██████████. В целях ██████████████ и ████████████ по ██████████ в ███████████████████, необходимо ██████████ ряд ████████████, направленных на ███████████████.

Основными ████████████ являются:

████████████ и ███████████ в рамках █████████████████ проекта «█████████████-████»;

██████████ для ███████████████ с ███████ всех ██████████████ сторон, в том числе через █████████████████ ████████████;

████████████████ по ███████████ с учётом ██████████ и ██████████████, полученных после █████████████ ██████████.

По возможности делайте именно в таком порядке, а не обратном, не наступайте на наши грабли.

В связи с вышеизложенным, ████████████ по ███████████ ответственность ████████████ на █████████████ отдел. Все █████████████ документы должны быть █████████████ и ██████████ в архив до █████████████ ███████. При ███████████ █████████████ █████████████, следует ████████████ к ███████ ████-ФЗ.

Контроль за █████████████ настоящего ██████████ пришлось передать ████████████████████████ (██████████ ██. ██.). И это, конечно, дикий сюрприз.

Затем — финальная аттестация. ████████. Мы ████████. Потом ████████. И так по ████████.

После ████████. Мы ████████. Думали, что всё ████████.

А потом ██████ ██ ████████.

Как видите, всё просто, и вы сможете это легко повторить.

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

Казалось бы, 2025 год на дворе, какие могут быть сложности с интернетом?




Казалось бы, 2025 год на дворе, какие могут быть сложности с интернетом?

А вот и могут! Нам в Александрове понадобился 10-гигабитный канал. Прикол в том, что запроса на такие скорости на рынке пока практически нет — мы, можно сказать, пионеры.

Рынок Александрова не очень требователен к скорости соединения, да. Некоторых до сих пор устраивает железнодорожный рельс. Он широкий и стабильный.

Из всех провайдеров, кого мы трясли, нашлось только два: Ростелеком и VIP-Телеком-Сервис.

Местный Трайтек вообще предлагал 100 000 ₽ за гигабит — то есть миллион в месяц за десятку. Не, спасибо.

С Ростелекомом мы начали мучения ещё в декабре. Долгие согласования, заминки на ровном месте. Например, один из затыков — отсутствие 10G-трансиверов. Серьёзно?! Это расходник, который стоит 1–2 тысячи рублей, у нас на столе таких коробок куча. Но у Ростелекома не было. Наши со стола они брать тоже не хотели.

Предложили подождать месяц-другой. В итоге договор подписали только в июне. А приведение всего в рабочее состояние займёт ещё 5 месяцев. Ну вы поняли. Ростелеком.

Параллельно работали с VIP-Телеком-Сервис. Они пришли по рекомендации и с ходу зарядили: «Мы вам построим точку на M9 и в Александрове за 20–25 дней». И знаете что? Построили!

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

Почему же мы всё равно ждали Ростелеком, если VIP такие шустрые? Потому что облачный бизнес — это не про один канал. Нужны минимум два независимых! Сейчас один интернет есть (VIP), второй будет от Ростелекома. Плюс строим отдельное тёмное волокно.

В итоге будет:
— 10G от VIP.
— 10G от Ростелекома.
— Тёмное волокно наше, домашней выпечки.

Если с одним из провайдеров что-то происходит — всё не полетит к чертям.

Кстати, на «девятке» самые долгие истории — это не кабели и не документы. Это сетевые перемычки. Именно они тормозят всё сильнее всего.

h3llo.cloud/ru

Мы получили статус LIR, подсеть /29 IPv6 и встали в очередь на подсеть /24 IPv4!




Мы получили статус LIR, подсеть /29 IPv6 и встали в очередь на подсеть /24 IPv4!
www.ripe.net/membership/member-support/list-of-members/ru/h3llo-cloud/

Если что, RIPE NCC — даёт айпишники и автономные системы в Европе, Азии и России. LIR-статус — это возможность творить в своём блоке IP-адресов что угодно. Например, использовать. Раньше мы получали IP-адреса от другого LIR, то есть цепочка была чуть длиннее.

У нас уже давно (со старта) своя автономная система, и мы анонсируемся по BGP. Получить свою AS и поднять BGP-пиринг — квест недетский, но мы на старте его прошли. Теперь вот уполномочены сами выдавать AS своим клиентам.

В очереди на IPv4-блок мы под номером 954. Кажется, это никогда. Поэтому мы продолжаем закупать айпишники у поставщиков, как обычно и делается. Но фишка не в этом. Со статусом LIR мы можем покупать сети напрямую у других владельцев, а не через цепочку вышестоящих LIR. Так получается серьёзно дешевле.

/29 в IPv6 — это первые 29 бит адреса фиксированы для нашей сети. 128 — 29 — остаётся 99 бит для адресации. Если долго возводить в степень, то получится 512000 сетей /48. А сеть /48 — это 65536 сетей /64. В сети /64 целых 2^64 хостов (примерно 1.8 x 10^19). Короче, это очень дохрена. Адресов должно хватить каждому. Это нужно на достаточно большие сети для новых крупных клиентов. А они уже заезжают.

h3llo.cloud/ru

Что было на выставке ЦИПР — парадная сторона и мрачная изнанка






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

Удивительно, но многие узнавали нас по блогу на Хабре.

Участие стоит несколько десятков миллионов рублей за стенд (мы не взяли) — ну или 50 тысяч рублей за самый простой билет и 150 тысяч за VIP. Мы взяли за 150, но сразу скажу, подсыхающие канапе этого не стоили. Но тем не менее оказалось дичайше полезно.

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

Вообще-то изначальная задумка была как в анекдоте про то, что когда программисты придут к власти, целые министерства можно будет заменить на один скрипт. Это место, где собираются все ключевые люди, определяющие будущее ИТ России. Чтобы обсудить важные вещи, познакомиться лично и прибухнуть, конечно.

В этом году основной темой были LLM. Их теперь все называют ИИ. Ещё импортозамещение, ИБ, как и что автоматизировать, где брать и как обучать людей и всё такое. Но основной лейтмотив был — хайп на LLM и «внедряй, а то проиграешь».

Почему Нижний — потому что там крупный ИТ-кластер, наука и промышленность. Почти как Екатеринбург, где тоже промышленность и большое население дали отличный старт для роста ИТ в 90-х.

Начну с того, что, конечно, дико жалко денег. Жаба прям давит.



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

Дальше надо было обойти всех, поменяться контактами и познакомиться, чтобы, если что, писать напрямую, а не через секретарей и продажников. Приезжают чиновники (особенно Минцифры и Минпромторг), госкорпорации типа Сбера и ВТБ, Росатома, Роскосмоса, Ростеха, Ростелекома, РЖД и т.п., крупный бизнес вроде Яндекса, 1С, Позитива, Касперского, потом промышленность — там я мало кого знаю лично, но в целом хотя бы по человеку от всех крупных производств, куча стартаперов (хотя, казалось бы, венчур в России кончился в 2022-м), преподаватели из университетов и дамы разного поведения, которые не могут пропустить такую концентрацию людей с деньгами.

Со всеми, кроме последних, мне как представителю компании, конечно же, интересно познакомиться и пообщаться. В этом разрезе денег за участие уже не жалко, потому что они окупаются.



«Аааа, мы читали вас на Хабре!»
На рынке мы немного нашухерили, сделали с десяток публикаций на Хабре и начали вести телеграм-канал про гомерические особенности российского бизнеса. Но этого, как оказалось, хватило, чтобы нас очень хорошо заметили.

Это я понял почти сразу, в совершенно неожиданный момент.

Дальше прямая речь Антона (коммерческого директора):
Проходя мимо стенда МТС, где я когда-то работал, меня узнали бывшие коллеги. Мы разговорились, и тут их взгляд упал на мой бейдж с нашим логотипом. Реакция была мгновенной: «А-а-ах, вот ты кто! Вот вы кто такие!» Оказывается, по их словам, они за нами следят, читали наши публикации на Хабре и даже было совещание, которое длилось два дня, посвящённое тому, чтобы выяснить, «кто вот такие, откуда вы взялись вообще, чем будете заниматься. Подобные истории я слышал и от коллег из Ростелекома — те тоже говорили, что читали, смотрели, а некоторые даже заходили на наш демостенд и пробовали всё ручками.

Ходили слухи, что в Сбере проводили подобные совещания и даже служба безопасности по своим каналам пробивала информацию о нас.

Так что да, за нами следят и ждут, когда же рванём.

Пользуясь случаем, передаю привет уважаемым коллегам. И напоминаю, что пока вы корпорация, вы двигаетесь раз так в 7–8 медленнее, чем маленькие команды, где нет бюрократов и идиотов. Ну, знаете, как мы. Хотя про идиотов я ещё не до конца уверен, это время покажет. С гранатой за птицами мы уже бегали.

Что было в целом

Основных тем было три. Первая — импортозамещение. Было удивительно приятно видеть столько отечественных производителей, и не только софта, но и железа. Даже мои бывшие коллеги из Росатома, как я узнал, уже начали свои железки делать.



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

Но главной, просто всепоглощающей темой стал искусственный интеллект, ГИГАЧАТ 2.0. Это они так называют LLM, как уже говорил. А вместе с LLM туда под общий хайп загребли всё: от классификаторов машинного зрения до термоса. В конце концов, он же знает, какую воду хранить — если налить горячую, через час в нём горячая, если холодную — там через час не горячая, а холодная. Для этого нужен серьёзный AI.

Про ИИ говорили абсолютно все, даже те, кто, по моим ощущениям, к нему особого отношения не имеет. Ярчайший пример — тот же МТС. Я до сих пор не понимаю, что они там в искусственном интеллекте делают, кроме как предоставляют в аренду видеокарты, да и то их кластер довольно скромный по сравнению со Сбером. Но на стенде у них была заявлена собственная разработка — МТС GPT. Однако, по инсайдерской информации из достаточно надёжных источников, это не совсем их продукт. Похоже, они через аффилированные маленькие компании получили контракты на доступ к платным версиям зарубежных аналогов, а потом просто сконсолидировали это под собой в одной оболочке и теперь выдают за свой продукт. У них банально не хватит карточек даже для инференса, не говоря уже о том, чтобы что-то своё обучать.

Атмосфера на самой конференции была предсказуемой. Первые два дня — огромное количество народа, не протолкнуться. На третий-четвёртый день народ заметно поуменьшился.

Организация пространства интересная. Внутри выставочного комплекса — закрытое помещение со стендами, условные площадки 5 на 3 метра. Там же был и зарубежный павильон: китайцы, белорусы, иранцы, но всё как-то невизуально, ничего, что заставило бы остановиться.

А вот на площади, в зоне, где, по идее, кормили людей, были отдельные лаундж-зоны. Там можно было поваляться на подушках, посидеть на лавочках с ноутбуком. И вот там, особенно под вечер, собиралось много народа. Погода стояла жаркая, за 30 градусов, и некоторые компании этим отлично пользовались: ITGLOBAL.COM (Айтиград) разливали пиво, Softline готовили коктейли. Я видел, как крупные интеграторы привозили заказчиков, как говорится, культурно на выгул.

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


Изнанка
У меня был статус VIP за 150 тысяч рублей. И он был вообще ни о чём. Абсолютно пустая трата денег. В теории он давал доступ к контактам, но на письма по этому списку никто не отвечал — вообще мёртвая история. В следующий раз, если поедем, то только как обычные делегаты за 50 тысяч. Мы даже рассматривали вариант со своим стендом, но цена вопроса уходит сильно за новый Майбах и квартиру в Москве. Там спонсорский пакет + проектирование стенда ещё 3–4 миллиона, а строить его можно только силами рекомендованных компаний за отдельные деньги.

Лучше мы за эти деньги купим какой-нибудь новый сервак последнего энтерпрайзного поколения.

Логистика и быт просто ужасны. Интерфейс для покупки билетов как у кривых копий Фаргуса, «озвучено профессиональными программистами». Чтобы попасть на какую-то вечеринку, нужно было регистрироваться за пределами основной системы где-то в third-party софте. Когда нам понадобилось переоформить билет с одного сотрудника на другого, это заняло неделю! А ещё нужно распечатать соглашение, вручную заполнить его, подписать, отсканировать и прислать обратно!

На самой площадке были отвратительный Wi-Fi и мобильная связь, видимо, работали глушилки. Даже передвижная точка от Теле2 не спасала.

Но хуже всего было с едой. За те сумасшедшие деньги, что стоили билеты, нас не кормили. Выдавали какие-то канапе и бутербродики, настолько маленькие, что явно это была ESG-повестка. Ресторан на территории был один, и очередь туда была такая, что точно не все попадают.

В итоге, чтобы пообедать, я брал ребят, с которыми уже пообщался, и предлагал пойти в ближайшую кафешку по супчику.

Проблемы были даже со входом. Бейджи, которые мы заранее распечатали, на второй день, после визита Мишустина, перестали работать. Всем надо было стоять в очереди, чтобы их перепечатать. Естественно, с паспортом, который многие оставляли в номере. Меня вообще не нашли в базе, я прошёл, просто показав паспорт, — сверили имя на бейдже. Зачем тогда была вся эта процедура печати — непонятно.

Ну и вишенка на торте: после регистрации мне до сих пор летит всякий спам и рассылки. Возможно, как раз от других VIP-участников.

Немного публикаций, чтобы вы понимали уровень:

Интернет на борту отечественных самолётов может появиться в 2027 году. «Любой винтик, лампочка, модем, который будет установлен на борту воздушного судна, — это лишний вес, лишний объём, и это должно быть подтверждено производителем», — отметил заместитель гендиректора по информационным технологиям и информационной безопасности «Аэрофлота» Антон Мацкевич. «Именно поэтому речь пока идёт о перспективных отечественных самолётах, которые сейчас испытываются».



Итог
Несмотря на всё это, поездка была полезной. Прямых заказчиков найти было сложно — они все прям за ручку ходили со своими менеджерами, которые их не отпускали разговаривать с конкурентами, незнакомцами и вообще взрослыми дядями. Но мне больше дало личное знакомство с коллегами по цеху. Я встретил людей, которых не видел много-много лет. И вот так, слово за слово: «Привет, как дела?», и вдруг: «Слушай, а не хотите поучаствовать с нами в проекте?» Субподряд для Касперского так нащупался, а наш директор по партнёрствам Андрей пообщался со многими топ-менеджерами, например из Positive Technologies, Astra Group, РЕД СОФТ, SberTech, Nexign, NAUMEN, PostgresPro, Directum, Express, Р7, Almi Partner и Цифровыми технологиями Москвы, которые теперь нас знают и готовы вести диалог.



Надеюсь, что-то сработает. Любые конференции дают результат не сразу, а через некоторое время. Горячего заказчика оттуда не уцепишь.

Но зато нас увидели и, возможно, поняли, что мы адекватные. Хотя это неточно.

h3llo.cloud/ru

Не корми Яндекс: зачем мы сделали свою метрику




Мы любили Яндекс Метрику. Правда, любили. Издалека.

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

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

Тут-то мы и решили: это пора прекратить, надо делать свою метрику, хватит уже этих граблей. Потому что лоб ещё чесался от предыдущих — self-hosted аналитики PostHog, которая нам доставила изрядно танцев с бубнами. Именно оттуда мы, собственно, и перешли на Яндекс Метрику.

И это была ошибка.

Как всё начиналось

Когда мы делали наш первый продукт — L1veStack, нам хотелось сэкономить время и не писать всё с нуля. Поэтому мы взяли несколько хороших опенсорсных систем, которые могли бы закрыть приличную часть функционала. Одна из них — система аналитики PostHog. Она поставляется в двух версиях: облачная и self-hosted. Второе — как раз то, что мы искали, чтобы поставить у себя и не передавать данные на сторону. Мы решили затащить её к себе.

Функционал у PostHog — огонь: красиво, удобно, всё на месте. Поставили, встроили, и вроде всё шло нормально. Пока не решили, что мы хотим не просто смотреть цифры, а и сессии пользователей записывать — как в Яндекс Вебвизоре, когда можно посмотреть, что человек на сайте делал.

Мы включили эту опцию — и… ничего не заработало. Начали разбираться. Долго и больно.

Ковырялись с CORS (Cross-Origin Resource Sharing) и CSRF (Cross-Site Request Forgery) — это те штуки, которые отвечают за безопасность запросов между разными доменами. У нас PostHog был на одном домене, сайт — на другом. Вроде всё правильно делали, но ничего не помогало. Решили попробовать обновиться, потому что с момента установки вышла новая версия. Поставили. О чудо — сессии заработали! Но развалилось всё остальное.

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

Время шло, до релиза оставалось всё меньше, и мы поставили Яндекс Метрику. Не потому что хотели, а потому что без аналитики было нельзя.

Первое, что сразу резануло, — все данные теперь у Яндекса. Именно этого мы и хотели избежать. Но на старте решили с этим мириться. Посмотрели первые сессии, получили полезные инсайты, кое-что переделали, стало понятнее и удобнее.

Но радость была недолгой. Начались проблемы уже у самой Метрики — прямо в интерфейсе висело сообщение, что у них что-то сломалось и отчёты теперь не грузятся. Пользователь аналитики, ты сегодня отдыхаешь.



Да ещё проблема блокировки трекеров, пытающихся отследить действия пользователя. Браузеры всё больше встают на защиту приватности пользователей: например, Safari практически полностью блокирует сторонние аналитические системы, да и другие браузеры постепенно движутся в том же направлении. Метрики проседают, мы лишаемся данных о части пользователей. Мы не хотим терять информацию. И отдавать данные компании, которая может использовать их против нас.

Остаётся вариант — хранить данные у себя
Главный аргумент — контроль. Когда ваши данные гуляют по чужим серверам, всегда есть риск, что они утекут к конкурентам.
  • Например, когда вы используете ту же Яндекс Метрику, происходит следующее:
  • Яндекс видит, какая аудитория посещает ваш сайт, и может повышать для вас цены на рекламу именно этой аудитории (а кто-то же ещё интеграцию с Яндекс Директ настраивает и выручку от транзакции отдаёт, добровольно).
  • Яндекс анализирует, какие функции вашего продукта популярны, и может внедрять похожие в свои сервисы.
  • Яндекс понимает, в какие моменты пользователи покидают ваш сайт, и может использовать эту информацию для улучшения своих продуктов.

Представьте, что вы строите инновационный финтех-сервис, а все данные о поведении ваших клиентов уходят в Яндекс Деньги (которые теперь ЮMoney). Или разрабатываете маркетплейс, а информацию о предпочтениях пользователей получает Яндекс Маркет.

То есть хранение данных у себя — это не просто технический выбор, это стратегическое конкурентное преимущество. Своя система даёт инструмент для глубокого анализа поведения пользователей без риска раскрытия секретов фирмы. Полный контроль над информацией позволяет быстро реагировать на изменения, обходить блокировки браузеров и использовать самые крутые методы профайлинга. Выгода тут очевидна. Свой продукт не зависит от внешних факторов и обеспечивает конфиденциальность, скорость и стабильность.

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

Нам нужен был инструмент, который:
  • Хранит все данные на наших серверах.
  • Стабильно работает даже при агрессивной блокировке трекеров.
  • Легко настраивается и не требует команды DevOps для поддержки.
  • Предоставляет всю необходимую функциональность для глубокого анализа.

А раз нужен, то его надо сделать. Ну мы и сделали.



Что под капотом нашей метрики и зачем всё именно так
Основной приоритет — полный контроль над данными и лёгкость внедрения. Система предоставляет всё, что нужно для глубокой и точной аналитики:
  • Базовый сбор метаданных: IP, тип устройства, браузер, ОС, разрешение экрана и другие параметры — всё, что помогает понять пользователя.
  • Запись сессий пользователей — аналог Вебвизора: можно воспроизвести действия пользователя на сайте и отследить моменты фрустрации или проблем.
  • Продвинутый профайлинг: события до и после авторизации объединяются в один профиль. Если пользователь несколько раз заходил как гость, а затем авторизовался — вся его история объединяется в единую сессию (если не чистил куки).
  • Feature flags (фича-флаги): гибкое управление функциональностью. Можно включать/отключать фичи для конкретных сегментов пользователей — например, для мобильной аудитории, зарегистрированных в декабре или просто раскатить новую фичу на 5% случайных посетителей.
  • A/B-тестирование: настройка продуктовых гипотез на базе фича-флагов. Можно тестировать разные интерфейсные решения или функционал на разделённых группах пользователей и собирать аналитику.
  • Customer Journey Map (CJM): визуализация пути пользователя — от первого визита до ключевого действия. Видно, где он свернул, где ушёл и как можно улучшить путь.


Отдельно расскажу про прогнозный профиль. Это не просто метрика, это чуть-чуть предсказатель. Мы его почти доделали и вот-вот выпустим. Он анализирует поведение пользователя в реальном времени и пытается понять, кто перед нами, ещё до того, как он что-то купил, зарегистрировался или вообще раскрылся.

Если человек зашёл на сайт, походил, потыкал кнопки — система собирает сигналы, классифицирует и относит его к одной из поведенческих групп. Похож на тех, кто чаще возвращается? Или на тех, кто сливается после третьего шага? А может, это «быстрый покупатель» и ему нужно меньше отвлечений и больше CTA?

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

Работает он на базе простых ML-моделей, которые дообучаются по мере накопления исторических данных. Всё быстро и с каждым шагом всё точнее.

Архитектура с прицелом на будущее
С самого начала мы собирали систему с прицелом на простоту, скорость и масштабируемость. Поэтому — микросервисная архитектура, язык Go и только проверенные Open Source компоненты (и то — по минимуму). Всё летает, не ломается и легко разворачивается.

Каждый компонент упакован в контейнер: всё разворачивается через Docker Compose или Helm Chart. Установить на собственные серверы можно за 3–4 клика. А при размещении у нас — вообще в один.

Интеграция тоже продумана: трекер можно поставить на тот же домен, что и основное приложение. Поэтому он не определяется браузером как сторонний и не блокируется.

В архитектуре:
  • REST API принимает данные с фронта;
  • Микросервис записывает сессии пользователей;
  • Работает система профилирования и объединения данных до и после авторизации;
  • Админка построена на GraphQL;
  • Для интеграции на фронте — SDK для React (Next.js).

Между сервисами данные передаются по gRPC — это быстрее, надёжнее и стабильнее, чем классический HTTP. Снаружи этого не видно, но именно это делает систему живучей и быстрой даже под нагрузкой.

Для админки — отдельный GraphQL-микросервис. Он общается только с внутренними компонентами и не торчит наружу. Всё, что касается настройки фича-флагов, A/B-тестов, CJM и просмотра сессий, — делается через него. Это повышает безопасность: административная логика отделена и не доступна извне.

Всю систему мы собрали на проверенных Open Source компонентах: Postgres — для хранения структурированных данных, Redis — для кеширования, Kafka — для обмена сообщениями, ClickHouse — для аналитики. Никаких закрытых зависимостей или скрытых ограничений.

Сразу внедрили инструменты наблюдаемости — LGTM-стек (Loki, Grafana, Tempo, Mimir). Это позволяет отслеживать состояние системы, трассировать запросы и анализировать логи — всё прозрачно и под контролем.

В общем, получилось решение, которое легко разворачивается, стабильно работает и масштабируется вместе с бизнесом.



Вайб-кодинг: нейросети в разы ускорили нам разработку
Разработка такой системы вручную — это долго и дорого. Если собрать команду из 2–3 бэкендеров, 2 фронтендеров, DevOps и тимлида, то даже на минимальный MVP уйдёт полтора-два месяца плотной работы. Именно так это делалось бы год-полтора назад — без нейросетей, с написанием всего кода вручную. И затраты на разработку вряд ли оправдали бы себя — проще было бы просто оформить подписку на готовый платный сервис.

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

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

В первом подходе прототип был размером в полмиллиона строк кода, с гигантской, размазанной по пяти слоям системой и стоил нам 200 долларов. Я смотрел на всё это и офигевал от того, что она умеет и сколько сразу тратит денег.

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

Кодовая база сократилась в разы, функциональность стабилизировалась. С каждой итерацией ТЗ конкретизировалось, и нейросеть предлагала всё более эффективные решения. В итоге код стал проще, компактнее и логика — такая, как если бы ты писал сам.

Что в результате получилось
Это рабочая аналитическая система, которая включает примерно всё, что нужно для глубокого понимания пользователей:
  • Базовый сбор метаданных — то же самое, что собирает Яндекс Метрика: IP-адрес, данные о браузере, тип устройства, разрешение экрана.
  • Запись сессий — полноценный аналог Вебвизора, позволяющий воссоздать каждое действие пользователя на сайте.
  • Продвинутый профайлинг — объединение данных о пользователе до и после авторизации, что решает извечную проблему «потери» посетителя при логине.
  • Фича-флаги — включение или отключение функций для разных групп пользователей без необходимости деплоить новую версию.
  • A/B-тестирование — инструменты для проверки продуктовых гипотез с детальной аналитикой результатов.
  • Customer Journey Map (CJM) — визуализация пути клиента с выявлением точек отказа и затруднений на каждом этапе воронки.

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

В разработке находится система прогнозного профиля (уже почти готова). Она позволит группировать схожих пользователей и предсказывать их поведение в самом начале сессии.

В чём мы круче конкурентов
Про Яндекс Метрику я уже много сказал. Добавлю ещё про PostHog: он требует отдельного домена, 4 vCPU, 16 Гб ОЗУ и 30 Гб диска. Установка долгая, несмотря на контейнеры и собственный инсталлятор. При трафике выше 50 тысяч пользователей в сутки начинаются проблемы с производительностью.

Собственно, для наглядности сведу всё в таблицу:


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

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

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

В итоге наш продукт — это универсальное решение для компаний, которые хотят контролировать свои данные и экономить деньги.



Чему всё это нас научило
Вот ключевые уроки, которые мы извлекли:
  • Технологические ограничения внешних сервисов неизбежны. Когда вы используете чужой продукт, вы всегда зависите от решений, принятых его разработчиками. Собственная система даёт полный контроль.
  • Выбор правильного технологического стека критически важен. Go и микросервисная архитектура позволили создать легковесное, но мощное решение, которое легко масштабируется.
  • Нейросети способны радикально ускорить разработку при правильном подходе. Секрет в строгих технических рамках и постоянном тестировании промежуточных результатов.
  • Меньше кода — лучше код. По мере развития проекта мы постоянно оптимизировали архитектуру, уменьшая объём кода и делая его более поддерживаемым.

Для разработчиков, которые задумываются о создании подобных систем, наши рекомендации просты:
  • Начинайте с чёткого понимания проблем, которые вы хотите решить.
  • Используйте компактные, хорошо тестируемые компоненты.
  • Не бойтесь применять нейросети, но устанавливайте для них чёткие рамки.
  • Фокусируйтесь на создании ценности для конечных пользователей, а не на технологиях ради технологий.

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

Контроль над данными — это не роскошь, это необходимость. Не отдавайте своё золото конкурентам. Стройте будущее на основе собственных знаний о своих клиентах.

h3llo.cloud/ru