Блог

«я про бэкенд»: идеи для Adal Cloud и технологии на мотоцикле

Юрий Мельников

На «я про бэкенд» я пришёл как создатель Adal Cloud. Увёз идеи для своего продукта, полезный совет о простоте архитектуры и ощущение, что с появлением AI технологии пересели на мотоцикл. Делюсь тем, что запомнилось и пригодится в работе.

3 октября я побывал на конференции «я про бэкенд» от Яндекса в Москве. День получился насыщенным: доклады о надёжности, потоковой обработке данных, поиске и распределённых системах, разговоры с инженерами и несколько идей, которые хочется обдумать для собственного проекта.

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

Я развиваю инфраструктуру для надёжной доставки вебхуков. Поэтому меня особенно интересовали сбои, повторная доставка, состояние сервисов и поведение системы, когда всё идёт немного не по плану. Или совсем не по плану.

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

Юрий Мельников, Adal Cloud
Юрий Мельников, Adal Cloud

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

Владислав Тюльбашев рассказывал о доставке конфигураций на 200 тысяч хостов при отказах дата-центров.

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

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

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

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

Потоковая обработка: важен и момент перезапуска

Алина Шестакова из Positive Technologies рассказывала об обработке потока событий с ML и LLM, включая рестарты и масштабирование компонентов с состоянием.

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

Что осталось в памяти? Что уже сохранено? С какого места продолжать обработку? Что произойдёт с задержками, пока компонент возвращается к рабочему состоянию?

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

YTsaurus Flow и смысл гарантий обработки

Егор Хайруллин представил YTsaurus Flow: потоковую обработку со скоростью свыше 100 ГБ/с, с акцентом на состояние и гарантии обработки.

Здесь я снова задумался о том, как легко произнести «без потерь и дублей» и насколько важно понимать, что именно стоит за этими словами.

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

Мой вывод для Adal Cloud — точнее описывать гарантии и проверять их на конкретных сценариях. Чем понятнее обещание продукта, тем проще оценить, выполняет ли его архитектура. Это относится и к реализации, и к документации.

Векторный поиск: разобраться, что находится внутри

Андрей Аксёнов из Авито говорил об основах векторного поиска, его устройстве и компромиссах.

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

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

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

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

Архитектура меняется вместе с продуктом

Сергей Синягин рассказывал о развитии архитектуры поиска лекарств в Яндекс Еде при росте нагрузки.

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

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

Для Adal Cloud это повод оставлять возможность менять решения по мере накопления опыта. Хорошо понимать вероятное направление роста, но ещё полезнее различать уже возникшую проблему и ту, которую пока только воображаешь.

Распределённый кеш: посмотреть на путь запроса целиком

Сергей Акимов рассказывал о переработке распределённого персистентного кеша: асинхронном выполнении и работе с составными объектами.

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

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

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

Самый полезный разговор — после доклада

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

После завершения мероприятия я заметил Владислава Тюльбашева и подошёл с вопросами по Adal Cloud. Получился хороший разговор: я рассказал о своих задачах и получил несколько интересных идей.

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

Увидев систему на сотни тысяч серверов, легко увлечься и начать мысленно переносить её устройство в свой продукт. Разговор помог вернуться к текущим потребностям Adal Cloud. Чужой опыт полезен ещё и тем, что позволяет осознанно отложить решение, а не только добавить его в план разработки.

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

Технологии сели на мотоцикл

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

Раньше можно было сказать, что технологии идут вперёд. С появлением AI они сначала побежали, а потом, кажется, сели на мотоцикл и поехали. И ты стоишь рядом со своими привычными инструментами и думаешь: так, похоже, пора ускоряться.

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

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

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

И, конечно, фуршет

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

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

Я ушёл с несколькими идеями для Adal Cloud и желанием разобраться в них подробнее. Для одного дня на конференции — хороший результат.