Yandex for Backend
9.46K subscribers
771 photos
56 videos
3 files
356 links
Канал для бэкендеров от Яндекса. Рассказываем про события по Python, Go, Java и C++ и не только, делимся экспертизой, обсуждаем технологии и поддерживаем бэкенд-комьюнити.

Другие каналы Яндекса по стекам разработки: https://xn--r1a.website/addlist/Hrq31w2p1vUyOGZi
Download Telegram
💹 Как проходить алгоритмические собеседования

👩‍💻 Это Павел Косицын, разработчик из Финтеха. В Яндексе я провёл 400 алгоритмических собеседований за 3 года и в этом посте хочу поделиться парочкой советов.

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

❇️ Начнём с базы

Стоит заранее потренироваться с «уточкой»: научиться объяснять проблему вслух неодушевлённому предмету. Например, открыть LeetCode и прочитать условие задачи. Затем тщательно продумать решение так, чтобы не пришлось переписывать код по ходу. Доходчиво объяснить его «уточке». Желательно, чтобы даже она поняла. Например:

«Я иду двумя указателями. Левый двигаю, если в окне уже есть две заглавные буквы. Если нет, то правый. Так найду самое большое окно без двух них. Обновляю ответ на каждой итерации».

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

❇️ Хуже всего, когда на секции ничего не происходит

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

❇️ В день собеседования не забудьте подготовиться

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

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

👩‍⚕️ Советы по поводу самого интервью ищите в карточках выше.

🧬 Чтобы попробовать свои силы в настоящем собеседовании, участвуйте в Week Offer Backend 11–17 апреля.

🔶 Мы приглашаем бэкенд-разработчиков на Python, Java/Kotlin, C++ или Go. Пройдите секции, познакомьтесь с командами и получите офер за неделю. Зарегистрироваться можно здесь.

Подписывайтесь:
💬 @Yandex4Backend
📹 @YandexforBackend
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
24🔥15🗿6🙏4👍1🥱1😭1
🔎 Архитектурное ревью: как мы строим «небоскрёб» Яндекс Еды

Представьте себе ситуацию: каждую неделю двести бэкендеров запускают по два-три новых проекта в четырёх сотнях микросервисов на C++, Go, Python, Java и PHP. Именно так дела обстоят в Яндекс Еде.

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

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

Результаты в цифрах:

🟢 С 2020 года мы провели более 800 архитектурных ревью, в пиковый месяц — 30
🟢 SLA — четыре дня. За последний год 80% задач проходят согласование быстрее этого срока
🟢 95% разработчиков довольны процессом
🟢 Архитектурное ревью выполняет команда из 10 человек

👩‍⚕️ В карточках Роман разобрал процесс по шагам.

🔶 Подробности можно найти в статье на Хабре.

На каких столпах держится архитектурное ревью в Еде, нам уже рассказывал Дима Александров, Deputy CTO Яндекс Еды.

Подписывайтесь:
💬 @Yandex4Backend
📹 @YandexforBackend
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6🥴42
This media is not supported in your browser
VIEW IN TELEGRAM
✉️ Подписывайтесь на email-рассылку от Yandex for Developers

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

🔶 Подписаться на рассылку можно здесь.

В форме можно выбрать мультистек-дайджесты Yandex for Developers или подписаться на новости для конкретных специальностей — Frontend, ML и Analytics.

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

Подписывайтесь:
💬 @Yandex4Backend
📹 @YandexforBackend
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1
💹 Разбор архитектурных задач с Яндекс 360

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

📟 На первой онлайн-встрече Архитектурного клуба посмотрим на задачу по System Design.

📆 26 марта в 17:00 вместе с Дарьей Андреевой, руководителем бэкенд-разработки Биллинга и B2B-платформы, разберём, как проектировать большие группы в организации.

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

🔶 Чтобы принять участие в онлайн-разборе, нужно зарегистрироваться.

Подписывайтесь:
💬 @Yandex4Backend
📹 @YandexforBackend
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥11👏3
📖 Как выжать максимум из Decoder Attention на GPU

Привет, меня зовут Андрей Шукшов, в Яндекс R&D я пишу YNMT — движок инференса, на котором работают почти все наши LLM. Большую часть времени я пытаюсь понять, почему некоторые вещи работают медленно, а потом делаю их быстрее. Хочу поделиться с вами кейсом из своей практики:

Я разобрал по частям, почему Attention медленно работает на GPU в режиме генерации (декодирования), и написал fused kernel, который объединяет все операции, — чтобы выжать из железа максимум.


В статье на Хабре я рассказал, как решал эту задачу по шагам:

🟢 Нашёл узкое место генерации — decoder attention. Классическая схема (QKᵀ → softmax → V) использует три GPU-kernel, поэтому промежуточные результаты приходится читать и записывать в DRAM несколько раз

🟢 Учёл особенности декодирования. Новый токен даёт один вектор Q, а K и V заставляют расти кеш. Из-за этого вычисление превращается из GEMM в GEMV и входит в узкое горлышко пропускной способности памяти

🟢 Использовал Online Softmax. Этот алгоритм позволяет считать нормализацию по мере обработки данных и не требует сначала вычислять всю матрицу Attention

🟢 Собрал fused CUDA-kernel. Объединил все шаги attention в одном ядре, чтобы обрабатывать K и V по тайлам в shared memory

🟢 Оценил эффективность. Результат — ускорение примерно в 1,5–1,7 раза и 85–91% утилизации пропускной способности памяти

🔶 В статье на Хабре я рассказываю, как железо работает с кодом LLM на глубинном уровне и какие математические трюки помогут сделать модели быстрее.

Подписывайтесь:
💬 @Yandex4Backend
📹 @YandexforBackend
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 лет. Но рано или поздно вы начнёте расти. А когда клиентов станет много, такую систему будет сложно масштабировать. И вам придётся разбираться, как это всё поддерживать.

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

❇️ Как работает виртуальная машина в Yandex Cloud

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

❇️ Как мы это делаем

У нас есть сервис Disk Manager. Он принимает запросы от Compute и определяет, что хочет сделать пользователь: снять снапшот с диска, создать или удалить его и так далее. Запросы могут идти в разные дата-центры.

Далее мы идём в NBS-control. Это сервис, который отвечает за создание дисков, работу с ними, их увеличение и уменьшение. Он находит железный хост, на котором запущен ваш Instance, и создаёт на нём Volume — логическую сущность с ID диска, его размером и лимитами. Он подключается к гипервизору через протокол virtio-blk, и в вашей виртуальной машине появляется блочное устройство по адресу /dev/vdb.

❇️ Диски в Yandex Cloud

Для SSD и HDD используем YDB — Yandex Database, СУБД с открытым исходным кодом. Физические диски (pdisk) собираются в виртуальные (vdisk). Из восьми vdisk’ов получается группа. Для репликации, чтобы был консенсус, нужно именно такое количество.

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

📟 Кстати, любой диск в Yandex Cloud можно зашифровать с помощью KMS на собственном ключе 🙃 Для этого нужно создать сервисный аккаунт и прокинуть его через Compute к нам.

🔶 В новом выпуске «Как мы делаем Yandex Cloud» я рассказал, кто такой разработчик сетевого блочного устройства, какой стек технологий использует наша команда и как выглядит рабочий процесс.

📺 Смотрите подкаст на ютубе, Rutube и в VK Видео.

🎧 Или слушайте в Яндекс Музыке и на любой удобной подкаст-платформе.

P. S. В рамках ежегодного митапа about:cloud — infrastructure я также поговорил о трёх процессах, на которые уходят ресурсы нашей системы. Смотрите мою часть выступления здесь.

Подписывайтесь:
💬 @Yandex4Backend
📹 @YandexforBackend
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤‍🔥2👍1