Представьте себе ситуацию: каждую неделю двести бэкендеров запускают по два-три новых проекта в четырёх сотнях микросервисов на C++, Go, Python, Java и PHP. Именно так дела обстоят в Яндекс Еде.
Очень важно, чтобы все команды понимали, что новый запуск фичи ничего не сломает, не продублирует код смежников и не вызовет негативного эффекта на зависимости сервиса. С этим помогает архитектурное ревью — процесс, который вырос из локальной инициативы в полноценный инструмент управления изменениями. Про него рассказал Роман Юрасов, руководитель службы серверной разработки платформы Еды.
Результаты в цифрах:
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6🥴4❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Наши разработчики регулярно просматривают профильные источники и собирают то, что читают и смотрят сами. В рассылке — короткие подборки статей с Хабра, подкасты и видео, новости индустрии, полезные инструменты, а также ключевые мероприятия и технологические анонсы Яндекса.
В форме можно выбрать мультистек-дайджесты Yandex for Developers или подписаться на новости для конкретных специальностей — Frontend, ML и Analytics.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1
Инженеры Яндекс 360 накопили большой опыт в проектировании систем, которыми пользуются более 100 миллионов человек каждый месяц. И теперь готовы делиться знаниями и объединять вокруг себя единомышленников.
Покажем не только архитектурные решения, но и практический подход к созданию высоконагруженных сервисов, который используют инженеры Яндекс 360.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥11👏3
Привет, меня зовут Андрей Шукшов, в Яндекс R&D я пишу YNMT — движок инференса, на котором работают почти все наши LLM. Большую часть времени я пытаюсь понять, почему некоторые вещи работают медленно, а потом делаю их быстрее. Хочу поделиться с вами кейсом из своей практики:
Я разобрал по частям, почему Attention медленно работает на GPU в режиме генерации (декодирования), и написал fused kernel, который объединяет все операции, — чтобы выжать из железа максимум.
В статье на Хабре я рассказал, как решал эту задачу по шагам:
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥4🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Всем привет, меня зовут Евгений Козев, я руковожу командой NBS в Yandex Cloud. Сегодня расскажу о том, как работают сетевые диски, которые реализуют блочное хранилище и без которых не обходится ни одна виртуальная машина.
Представьте классическую аппаратную систему хранения данных (СХД): вы берёте стойку, набираете в неё диски и подключаете к компьютеру. Это работает, но у такого подхода есть большой недостаток — отсутствие миграции. Нельзя просто взять и передвинуть виртуальную машину на другой хост, потому что она привязана к вашей СХД.
Чтобы её можно было переключать между железными устройствами и подключать к хранилищу по сети, нужна прослойка. А дальше одной СХД уже не хватает. Поэтому приходится строить распределённую систему с оркестраторами, которые выдают доступ к дискам.
Допустим, что вы — небольшая IT-компания, которой хватит готового решения из OpenStack, например Ceph. Это популярная платформа, ей больше 15 лет. Но рано или поздно вы начнёте расти. А когда клиентов станет много, такую систему будет сложно масштабировать. И вам придётся разбираться, как это всё поддерживать.
В итоге вам нужна расширяемая система, которая обеспечивает доступность для клиентов, даёт нужный перформанс, легко масштабируется, не требует больших затрат на эксплуатацию и хранит данные без потерь (это важно!).
Вы как пользователь приходите в региональный сервис Compute, который берёт железный хост в выбранном вами дата-центре и создаёт там Instance с гипервизором — вашу виртуальную машину. А мы как NBS должны присоединиться к нему так, чтобы появились сетевые диски.
У нас есть сервис Disk Manager. Он принимает запросы от Compute и определяет, что хочет сделать пользователь: снять снапшот с диска, создать или удалить его и так далее. Запросы могут идти в разные дата-центры.
Далее мы идём в NBS-control. Это сервис, который отвечает за создание дисков, работу с ними, их увеличение и уменьшение. Он находит железный хост, на котором запущен ваш Instance, и создаёт на нём Volume — логическую сущность с ID диска, его размером и лимитами. Он подключается к гипервизору через протокол virtio-blk, и в вашей виртуальной машине появляется блочное устройство по адресу /dev/vdb.
Для SSD и HDD используем YDB — Yandex Database, СУБД с открытым исходным кодом. Физические диски (pdisk) собираются в виртуальные (vdisk). Из восьми vdisk’ов получается группа. Для репликации, чтобы был консенсус, нужно именно такое количество.
Когда пользователь пишет блок данных, система разделяет этот элемент на четыре части и добавляет к ним ещё две. Это даёт отказоустойчивость ценой накладных расходов. На 1 Мб данных пользователя мы сохраняем 1,5 Мб, но если что-то выйдет из строя, то мы сможем их восстановить.
P. S. В рамках ежегодного митапа about:cloud — infrastructure я также поговорил о трёх процессах, на которые уходят ресурсы нашей системы. Смотрите мою часть выступления здесь.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5❤🔥2👍1
Всем привет, это Миша Ковалёв, я руковожу одним из юнитов разработки в Яндекс Еде. Как выглядит типичный сценарий в нашем сервисе? Вы заходите в приложение, выбираете любимый ресторан и внутри него ищете конкретное блюдо. Вся архитектура годами строилась вокруг этой логики.
Но когда мы начали делать Яндекс Аптеки, то поняли, что здесь такой паттерн не сработает. Если у пользователя болит голова, ему всё равно, как называется аптека, главное — найти конкретное лекарство. Поэтому нам пришлось перевернуть архитектуру на 180 градусов.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯6❤2💯1
Подключайтесь к трансляции:
Напомним, что ждёт слушателей:
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4❤1🥰1
Всем привет, это Алексей Терентьев, я руковожу одной из служб отдела эффективности Яндекс Go. Недавно перед нами поставили амбициозную цель: так оптимизировать ресурсы, чтобы бесперебойно работать при стопроцентной нагрузке серверов, учитывая, что у нас осталось только два из трёх дата-центров.
Для начала мы решили понять, с чем столкнулись. Аудит кодовой базы подсветил болячки, которые давно копились под капотом у наших сервисов.
Вот, например: сердце нашего продукта — обработка заказов такси — синхронно ждёт ответа от сервиса, который отправляет чеки. Если тот прилёг из-за ошибки в релизе, то основной бизнес-процесс тоже останавливается.
☠️ Эта беда осложняется разными багами. Например, в ответе основного сервиса было поле optional_data, которое обогащали данными из десятка других мест. Одно из них упало, а код не был готов к null. В итоге падал весь конвейер. В нашем случае код был на C++ (std::optional), и разыменование nullptr приводило к core dump. Процесс опять мгновенно останавливался.
Это как если бы двигатель машины заглох, потому что в бардачке перегорела лампочка. Абсурдно, но в мире микросервисов такое происходит сплошь и рядом. Поэтому нам нужно было изолировать критичные места от всего, что не нужно для их базовой работы.
Предположим, что для отрисовки баллов Плюса на экране заказов Такси мы периодически ходим в сервис пользовательской статистики, который отправляет запросы в Яндекс Плюс. А чтобы данные не протухали, ему нужно делать это регулярно, например раз в пять секунд. Теперь умножаем эту цифру на количество активных пользователей.
Получается шквал запросов, 99,9% которых приносят один и тот же ответ, ведь баланс баллов меняется от силы пару раз в день. С учётом того, что подобных параметров может быть много, это создаёт серьёзную холостую нагрузку на бэкенд.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4❤3
Чтобы внедрять агентные системы в реальные проекты, мало уметь писать промпты. Важнее понимать, что лежит в основе AI-агентов, и разбираться в их архитектуре.
Этой теме Школа анализа данных посвятила интенсив, который пройдёт с 6 по 10 апреля. Эксперты подробно расскажут про AI-агентов:
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1
Это большой митап от разработчиков Yandex Cloud и Yandex Infrastructure. Предлагаем заглянуть под капот наших продуктов, разобрать технические кейсы, обсудить ошибки и честно поговорить про инфраструктуру.
В программе:
Ещё наша команда подготовила разные активности: в онлайне пройдёт DevChallenge, а очных участников ждут закрытые сессии.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
Речь о сервисе, который ищет юридическую информацию и формирует ответы на основе судебной практики и нормативных документов. И когда команда разработки запускала модель с семью сферами права, то понимала, что предстоит постоянно расширять базу, но сохранять скорость и качество ответов. Значит, нужно было решение, которое хорошо масштабируется 🧐
Ключевая технология, которая обеспечивает быстрые и точные ответы модели, — векторный индекс. Он был с нуля разработан как часть YDB, распределённой СУБД Яндекса. Такое решение даёт возможность создавать для одной таблицы несколько разных векторных индексов с фильтрацией. Одни оптимизированы для глубокого поиска в миллионах документов за 10 мс, другие — для небольших массивов. В момент запроса Нейроюрист автоматически выбирает тот индекс, который лучше всего подходит под конкретный фильтр.
Запрос пользователя превращается в вектор — набор чисел, который отражает смысл вопроса. Затем система ищет в индексе максимально подходящие документы. Они, в свою очередь, добавляются в промпт языковой модели, и уже на их основе Нейроюрист формулирует финальный ответ со ссылками на реальные нормы и судебные решения. Такой подход называется RAG (retrieval augmented generation). Он помогает модели не галлюцинировать и опираться только на найденную информацию.
Нейроюрист гарантированно получает весь релевантный контекст и обеспечивает нужный уровень полноты и скорости поиска (десятые доли секунды!) в любых категориях. При этом он сохраняет высокое качество ответов даже при расширении базы данных, потому что выбор индекса всегда адаптируется под объём, а сама СУБД YDB отлично масштабируется на миллиарды векторов и записей.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3❤2💊2