Pull to refresh
21
5.6
Сергей Бережной @veged

Директор по взаимодействию с разработчиками

Send message

Яндекс выложил в опенсорс бету фреймворка userver

Reading time10 min
Views74K
Сегодня мы анонсируем выход в опенсорс фреймворка userver для создания высоконагруженных приложений. Для нас это важный способ поделиться опытом в разработке микросервисов, который мы накопили. Вот ссылка на Гитхаб-репозиторий c исходным кодом, документацией, примерами, шаблоном для создания своих сервисов (с настроенным CI, сборкой и тестовым окружением) и сервисом динамических конфигов. Всё это опубликовано под лицензией Apache 2.0.



🐙userver позволяет быстро создавать эффективные микросервисы на языке C++ и уже много лет активно используется в Яндекс Go, Еде, Лавке, Доставке, Маркете, финтехе и других проектах. Вот из каких требований мы исходили в процессе разработки:

  • Простота. Стажёр или студент, приходя к нам, может уже через неделю написать и отправить в продакшен новый микросервис.
  • Надёжность. Многие ошибки, в том числе и связанные с многопоточностью, можно поймать на этапе компиляции. Кроме того, фреймворк даёт подсказки по исправлению проблем.
  • Полнота. В userver есть всё необходимое для тестирования, работы с разными базами данных, кеширования, логирования, трейсинга, распределённых блокировок, работы с JSON, BSON, YAML, изменения параметров сервиса на лету и так далее.

Сейчас я расскажу о том, как возникла идея userver, как фреймворк развивался, в каких задачах его сейчас используют и почему именно выход в опенсорс был логичным следующим шагом. А затем приведу пример написания нового микросервиса.
Читать дальше →
Total votes 177: ↑173 and ↓4+169
Comments142

Технология Apphost: альтернативная вселенная микросервисов в Яндексе

Reading time6 min
Views16K

Когда-то поиск Яндекса представлял из себя бутерброд. Каждый его слой могли эффективно разрабатывать единицы людей. Однако верхний добавлял пикантности. Этот слой представлял из себя Apache с кучей Perl’овых модулей.

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

Привет, Хабр. Меня зовут Святослав Фельдшеров. Я разрабатываю Apphost в поиске Яндекса. Добро пожаловать в нашу вселенную!

Подробнее про Apphost
Total votes 45: ↑44 and ↓1+43
Comments52

Автоматизация тестирования на максималках. Доклад Яндекса

Reading time9 min
Views10K
Это снова Владимир Гриненко, тимлид в поисковом портале Яндекса. Я решил рассказать, как у нас устроено тестирование интерфейсов: о формате описания сценариев, способах их актуализации, о нашем собственном опенсорсном проекте и тестировании силами внешних тестировщиков. А ещё пофантазировал о неожиданных способах применения этой системы.


— Сергей Бережной veged уже несколько раз поднимал эту тему и рассказывал про тестирование в Поиске. Вот ссылки на доклады в 2016-м и 2017-м. Многое из того, что он тогда рассказывал, де-факто стало стандартом для большинства компаний. Но несмотря на это, все еще остаются вещи, которые пока нигде особо не применяются. Именно на них я и сосредоточусь.

Чтобы не отставать от хайпа, будем говорить об этом на примере колдунщика карты коронавируса на серпе, то есть в результатах поисковой выдачи.
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments1

Arc — система контроля версий для монорепозитория. Доклад Яндекса

Reading time11 min
Views46K
Системы контроля версий уже давно стали повседневным инструментом разработчика. В больших монорепозиториях требования к ним оказываются весьма специфическими. Из-за этого компании либо адаптируют существующие решения, как это делает Facebook с Mercurial и Microsoft с Git, либо разрабатывают собственные системы: Piper и CitC в Google и Arc VCS в Яндексе.

В докладе разработчик Владимир Кихтенко kikht рассказывает, зачем Яндексу понадобилась собственная система контроля версий и как она работает. Рассмотрим её со стороны рядового разработчика: как получить доступ к исходному коду, отвести ветку для разработки и интегрировать изменения в общую кодовую базу. Заглянем под капот — узнаем про внутреннее представление данных и их отображение в виртуальной файловой системе с рабочей копией. Обсудим трудности при реализации функций VCS в виртуальной файловой системе и при ленивой загрузке данных. Поговорим о том, как обеспечивать надежность серверной инфраструктуры репозитория. В конце можно посмотреть неофициальную запись доклада.

— Всем добрый день, меня зовут Владимир. Вы все слышали выступления о том, что не стоит писать велосипеды. Мой доклад будет с другой стороны баррикад.
Читать дальше →
Total votes 53: ↑48 and ↓5+43
Comments67

Как управлять часами? Разбор фронтенд-трека второго чемпионата по программированию

Reading time33 min
Views10K
Новый хабрапост в серии разборов недавно прошедшего чемпионата. Участникам квалификации, которые выбрали секцию фронтенда, нужно было решить несколько задач очень разной сложности: первая (по нашим ожиданиям) занимала 20 минут, последняя — около часа. Мы проверяли широкий спектр навыков разработчика интерфейсов, включая способность разобраться в необычной предметной области.

A. Аннигилируй это

Авторы: Максим Сысоев, Константин Петряев

Первая задача — разминочная. Каждому участнику доставался один из четырёх вариантов задачи, похожих между собой. Мы предложили не только текстовое условие, но и «плохое» рекурсивное решение. Нужно было переделать код (написать жадный алгоритм, который выдавал самое быстрое решение), убрав рекурсию и разные глупости вроде лишних операций и вычислений.

Условие


Вы устроились работать в лабораторию по изучению антиматерии, где проводят различные опыты. Ваш отдел изучает процессы, которые происходят при объединении материи и антиматерии. Вам необходимо провести серию опытов над некоторым количеством молекул.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments5

Телефон для коня и оркестр без пианиста. Как придумать спортивные задачи по фронтенду

Reading time8 min
Views7.1K

Привет! Меня зовут Дмитрий Андриянов, я работаю разработчиком интерфейсов в Яндексе. В прошлом году я участвовал в подготовке нашего онлайн-соревнования по фронтенду.



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

Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments9

Буткемп в Яндексе: как разработчику выбрать себе команду

Reading time7 min
Views13K
Большие IT-компании часто предлагают кандидатам на роль разработчика выбрать между несколькими командами. Сделать этот выбор непросто — разработчик ещё не работал ни с одной из команд, не знает их специфики. Чтобы упростить ему задачу, мы сделали Буткемп. Это особый способ прохождения испытательного срока. Буткемп длится восемь недель, в течение которых сотрудник успевает попробовать себя в разных подразделениях и на основе этого опыта сделать осознанный выбор дальнейшего места работы. Изначально такой формат был доступен только фронтенд-разработчикам, но несколько недель назад команды бэкенда тоже к нему подключились.



Я Жанна Круглова, экс-разработчик и руководитель группы Буткемпа. Расскажу читателям Хабра, что у проекта под капотом, какие возможности он даёт и как предыдущие участники мучительно выбирали себе команду.
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments9

React & БЭМ – официальная коллаборация. Часть историческая

Reading time17 min
Views29K

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



Все слышали о методологии БЭМ. CSS-селекторы с подчёркиваниями. Компонентный подход, о котором говорят, имея в виду способ написания CSS-селекторов. Но про CSS в статье не будет ни слова. Только JS, только хардкор!

Total votes 46: ↑44 and ↓2+42
Comments42

Как Яндекс готовит фронтендеров. От программы на Coursera до курсов в университете

Reading time4 min
Views17K
Мы в Яндексе не только много работаем с фронтендом, но и делимся своим опытом с другими. За шесть лет преподавательской практики мы запустили разные форматы обучения, о которых сегодня расскажем читателям Хабра.

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



Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments11

Почему в Петербурге так сложно построить карьеру VP of engineering

Reading time7 min
Views35K
Привет, Хабр! Меня зовут Святослав Кулаков, я VP of Engineering в Aurea Software. Вся моя жизнь прошла в Питере: я родился и вырос на улице Союза Печатников напротив Мариинского театра, учился во второй гимназии с углублённым изучением английского языка и физмата, поступил в Университет аэрокосмического приборостроения (ГУАП). После учёбы я работал в нескольких софтверных компаниях в России и США, но в итоге всё вернулся в Санкт-Петербург и оставался тут даже когда это казалось верной дорогой к карьерному болоту.



На основании своего личного опыта я расскажу о том, почему многим IT-специалистам нереально найти в Санкт-Петербурге работу по своему уровню, как работает механизм перетягивания лучших специалистов — как минимум, в Москву, а то и сразу в США или другие страны. И о том, как мне всё-таки удалось найти в родном городе свою лучшую работу на данный момент. Но обо всём по порядку.

Из Санкт-Петербурга в Санкт-Петербург через Санкт-Петербург


Моя трудовая биография началась с позиции Java-разработчика в небольшой софтверной компании в 1999 году. За следующие 9 лет я продвинулся по карьерной лестнице до позиции Эккаунт Менеджера, где мне подчинялось более 100 человек. Кризис 2008 года сбил нас на взлёте, и моей следующей записью в трудовой стала должность Lead IT Process Manager в московском отделении Deutsche Bank. Полтора года спустя мне поступило заманчивое предложение из США: консультировать бизнес-клиентов компании Grid Dynamics в вопросах оптимизации процессов разработки.
Читать дальше →
Total votes 60: ↑53 and ↓7+46
Comments179

Как выявлять и развивать таланты в IT

Reading time10 min
Views26K

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


Вопросы управления талантливыми сотрудниками актуальны для многих руководителей в сфере IT вне зависимости от конкретной специализации. Именно поэтому управление талантами мы выбрали в качестве первой темы нового цикла встреч, организованного Яндексом — Team Leader Meetup.


В преддверии встречи мы попросили участников панельной дискуссии, среди которых veged, gornal, yafinder, ответить на ряд вопросов, связанных с управлением талантливыми сотрудниками.




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


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

Читать дальше →
Total votes 52: ↑44 and ↓8+36
Comments48

Самый большой репозиторий Git на свете

Reading time10 min
Views24K
Прошло уже три месяца с тех пор, как я опубликовал свою первую статью о наших попытках масштабировать Git для очень крупных проектов при помощи инициативы, которую мы назвали «Git Virtual File System». Напомню: GVFS в сочетании с некоторыми правками в Git позволяет работать с ОЧЕНЬ большими репозиториями, виртуализируя как папку .git, так и рабочую директорию. Вместо того, чтобы скачивать репозиторий целиком и проверять все файлы, инструмент динамично скачивает только те фрагменты, которые вам нужны, выявляя их на основании того, над чем вы работали до этого момента.

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

Читать дальше →
Total votes 37: ↑36 and ↓1+35
Comments42

БЭМ-методология: с чего всё начиналось и зачем это всё нужно

Reading time13 min
Views230K
На Хабре уже много писали о методологии БЭМ, выросшей в Яндексе. И мы решили, что пора системно рассказать о том, откуда она появилась и что сделало БЭМ таким, каким мы его знаем. Думаем, это будет интересно не только тем, кто уже использует БЭМ, но и тем, кто считает, что эта методология не подходит для их проектов. Возможно, они увидят, что мы решали проблемы, похожие на их собственные, и найдут что-то полезное для себя.

image

Конечно, все началось с собственных потребностей Яндекса. Вместе с тем, как он рос, росло и количество сотрудников, которые занимаются фронтендом. Постепенно команда увеличилась настолько, что стало очевидно — без единых стандартов работать будет сложно. К тому же, мы находимся в офисах Яндекса в разных городах. Возникла идея создать общую методологию, которая поможет организовать процессы в большой команде, работающей над разными проектами. А главное то, что мы хотели не только упорядочить и ускорить разработку, но и снизить порог входа в проект для нового разработчика.
Читать дальше →
Total votes 73: ↑58 and ↓15+43
Comments100

Категория: суть композиции

Reading time7 min
Views61K
Это вторая статья в цикле «Теория категорий для программистов».

Категория — очень простая концепция.

Категория состоит из объектов и стрелок, которые направлены между ними. Поэтому, категории так легко представить графически. Объект можно нарисовать в виде круга или точки, а стрелки — просто стрелки между ними. (Просто для разнообразия, я буду время от времени рисовать объекты, как поросят а стрелки, как фейерверки.) Но суть категории — композиция. Или, если вам больше нравится, суть композиции — категория. Стрелки компонуются так, что если у вас есть стрелка от объекта А к объекту B, и еще одна стрелка из объекта B в C, то должна быть стрелка, — их композиция, — от А до С.

image
Читать дальше →
Total votes 37: ↑36 and ↓1+35
Comments128

Типы и функции

Reading time13 min
Views57K
Это третья статья в цикле «Теория категорий для программистов».

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

Кому нужны типы?


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

image


Читать дальше →
Total votes 42: ↑39 and ↓3+36
Comments102

Категории Клейсли

Reading time9 min
Views26K

Композиция логирования


Вы видели, как сделать категорию типов и чистых функций. Я также упомянул, что есть способ смоделировать побочные эффекты, или нечистые функции, в рамках теории категорий. Давайте рассмотрим пример: функции, которые логируют или записывают ход своего выполнения.
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments21

Категории, большие и малые

Reading time8 min
Views35K
Это четвертая статья в цикле «Теория категорий для программистов».

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

Без объектов


Самая простая категория — без объектов и, как следствие, без морфизмов.
Читать дальше
Total votes 36: ↑33 and ↓3+30
Comments29

Открытка-лабиринт. Подарок, который невозможно открыть, не разгадав головоломку

Reading time4 min
Views61K
Однажды я принёс другу на день рождения подарок, завёрнутый в бумагу с узором лабиринта. Друг пошутил, что было бы здорово, если бы надо было по-настоящему найти путь, чтобы открыть подарок. Мы принялись обсуждать, как можно построить механический лабиринт, причём без использования какой-либо электроники.
Так родилась идея к следующему празднику создать открытку-головоломку. В этой статье я расскажу, как её изготовить и какие тонкости нужно учесть.


Лабиринт в процессе прохождения.
Читать дальше →
Total votes 151: ↑151 and ↓0+151
Comments51

Манипулирование БЭМ-структурой с помощью Bemy

Reading time3 min
Views6.9K
Если вы используете БЕМ-методологию в своих проектах и выделяете БЕМ-сущности указанным ниже образом, то bemy существенно упростит вам жизнь, избавив от необходимости вручную создавать файлы блоков.



Если вы также используете deps.js файлы формата enb, то bemy будет вам особенно полезен, так как приняв на выход путь к этому файлу, bemy создаем файловую структуру блока (по умолчанию с css-файлами).
Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments38
1

Information

Rating
760-th
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity