Pull to refresh
1
0
Олег Морозенков @Reo_SP

Пользователь

Send message

Что в чёрной коробочке? Выясняем самостоятельно, не привлекая внимания коллег

Level of difficultyMedium
Reading time30 min
Views5.7K

Всем привет, меня зовут Миша, и я разрабатываю платформу Яндекс Еды. Первые компоненты были написаны почти 10 лет назад (когда Еда ещё была стартапом Foodfox), и у нас накопилось много кода, который просто хорошо работает, а иногда даже «работает — не трогай». Но в процессе развития и устоявшиеся части системы нужно трогать, про что мои коллеги уже писали — как мы повышали версию PHP, пилили монолит и снимали нагрузку с БД

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

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

Читать далее

Как довести фичу до продакшена без боли: пошаговый гайд от команды RuStore. Часть 1

Level of difficultyMedium
Reading time11 min
Views1.8K

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

Читать далее

Математика на складе. Как оптимизировать хаос

Level of difficultyEasy
Reading time9 min
Views7.6K

Привет! Меня зовут Анна Дубенюк, я выпускница и преподаватель ФКН ВШЭ, автор канала всё предельно, и недавно было 3 года, как я работаю в Ozon Tech. За это время из пары математиков в команде разработки мы выросли в отдельную команду RnD, помогаем оптимизировать процессы, находим точки роста и снижаем неопределённость с помощью математического моделирования и исследований.

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

Читать далее

А если без A/B-тестов? Как мы оценивали эффективность контент-продукта через квазиэксперименты

Level of difficultyMedium
Reading time10 min
Views3.1K

Бывает, что привычные A/B-тесты кажутся слишком сложными или затратными, и возникает соблазн искать быстрые альтернативы. Но насколько они эффективны? 

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

Читать далее 🔥

«Хакеры и Художники». Как мы 13 лет всем рунетом Пола Грэма переводили

Reading time5 min
Views53K
«Это началось как желание, стало приключением, а закончилось как уникальное дорожное путешествие.»
— к/ф «Трасса 60»



Пол Грэм написал книгу «Hackers and Painters» (оригинал в PDF на английском) когда еще был больше программистом, чем инвестором. С тех пор некоторые моменты устарели (да и arc не взлетел), но большинство мыслей остались актуальными (роль и место ботанов «хакеров» в современном мире, свободомыслие, критическое мышление, способность бросать вызов большим системам и пр). Лично я планирую перечитать всю книгу еще пару раз.

Спасибо Байраму Аннакову за «наводку» на Пола Грэма и Николаю Кононову, который подтвердил, что я на правильном пути.

Содержание


Глава 1 Why Nerds Are UnpopularЗа что не любят ботанов.
Глава 2 Hackers and PaintersХакеры и художники (Habr edition)
Глава 3 What You Can't SayО чем вы не можете сказать.
Глава 4 Good Bad AttitudeСлово «хакер».
Глава 5 The Other Road AheadДругая дорога в будущее, Другая дорога в будущее, продолжение.
Глава 6 How to Make WealthКак стать богатым.
Глава 7 Mind the GapОсторожно, разрыв.
Глава 8 A Plan for SpamПлан для спама.
Глава 9 Taste for MakersВкус — созидателям.
Глава 10 Programming Languages Explained — Языки программирования «в разрезе».
Глава 11 The Hundred-Year LanguageЯзыки программирования через сто лет.
Глава 12 Beating the AveragesLisp: побеждая посредственность.
Глава 13 Revenge of the Nerds — Месть ботанов 1, 2, 3.
Глава 14 The Dream LanguageБыть Популярным, часть 2.
Глава 15 Design and ResearchПроектирование и исследование.

Под катом хронология переводов и благодарности.
Читать дальше →

Гигиена электропитания: выбираем сетевые фильтры и стабилизаторы

Reading time15 min
Views145K
Причины, по которым старое доброе электричество в домашней розетке выходит за пределы допустимых отклонений, бывают разные. Порой это временные скачки напряжений и всплески помех, иногда это систематические отклонения за пределы ГОСТов. В конечном итоге за это расплачивается домашняя техника, мгновенно или медленно умирая от «электрической интоксикации».

В этом посте мы расскажем о простых и недорогих способах «электрической гигиены» в зависимости от типа проблем в вашей электросети.


Читать дальше →

Об инциденте с NTP-серверами

Reading time5 min
Views83K

Недавно на Хабре вышла статья об аномальной нагрузке на публичные NTP‑серверы в рунете. К сожалению, к этой ситуации привела ошибка в прошивке Яндекс Станций.

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

Читать далее

Тонкая настройка балансировки нагрузки

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



Маленький минутрый пик в 84 RPS «пятисоток» — это пять тысяч ошибок, которые получили реальные пользователи. Это много и это очень важно. Необходимо искать причины, проводить работу над ошибками и стараться впредь не допускать подобных ситуаций.

Николай Сивко (NikolaySivko) в своем докладе на RootConf 2018 рассказал о тонких и пока не очень популярных аспектах балансировки нагрузки:

  • когда повторять запрос (retries);
  • как выбрать значения для таймаутов;
  • как не убить нижележащие серверы в момент аварии/перегрузки;
  • нужны ли health checks;
  • как обрабатывать «мерцающие» проблемы.

Под катом расшифровка этого доклада.

От провала до успеха один шаг: как спасти заваленный проект

Level of difficultyEasy
Reading time10 min
Views8.8K

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

Читать далее

Бритва Оккама и другие острые бритвы познания — как использовать в IT и в жизни

Reading time5 min
Views29K

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

В этой статье я перечислю несколько известных «именных» бритв (про Оккама тоже не забуду) и покажу, как их можно использовать в работе IT-специалиста. Заодно я сформулирую несколько правил, которые сам стараюсь соблюдать при применении этих самых «бритв», чтобы ненароком не ошибиться и не получить результат, противоположный ожидаемому.

Читать далее

Как устроен робот-доставщик Яндекса: от восприятия до планирования движения

Reading time15 min
Views30K

Уже пять лет по улицам Москвы колесят роботы‑курьеры Яндекса, доставляя нам еду из любимых ресторанов и магазинов быстрее, чем мы успеваем проголодаться. На пути им встречается много препятствий: от безобидной клумбы, которую можно просто объехать, до восторженных детей (и иногда взрослых), от которых порой не так просто уехать.

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

Привет, меня зовут Тая, и я ML‑разработчик в команде восприятия робота‑доставщика. Сегодня я впервые детально расскажу о технологиях, благодаря которым робот‑доставщик Яндекса успешно доставляет заказы. Разберу ключевые компоненты системы, от сенсоров до алгоритмов принятия решений, и объясню, как они взаимодействуют. Из статьи вы узнаете, что происходит «под капотом» нашего робота во время его путешествий по городу.

Готовы погрузиться в мир автономной доставки?

Поехали!

Памятка по BPMN и BPMN-диаграммам

Level of difficultyEasy
Reading time7 min
Views104K

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

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

Читать далее

Управление высокодоступными PostgreSQL кластерами с помощью Patroni. А.Клюкин, А.Кукушкин

Reading time62 min
Views161K

Расшифровка доклада/tutorial "Управление высокодоступными PostgreSQL кластерами с помощью Patroni". А.Клюкин, А.Кукушкин


Patroni — это Python-приложение для создания высокодоступных PostgreSQL кластеров на основе потоковой репликации. Оно используется такими компаниями как Red Hat, IBM Compose, Zalando и многими другими. С его помощью можно преобразовать систему из ведущего и ведомых узлов (primary — replica) в высокодоступный кластер с поддержкой автоматического контролируемого (switchover) и аварийного (failover) переключения. Patroni позволяет легко добавлять новые реплики в существующий кластер, поддерживает динамическое изменение конфигурации PostgreSQL одновременно на всех узлах кластера и множество других возможностей, таких как синхронная репликация, настраиваемые действия при переключении узлов, REST API, возможность запуска пользовательских команд для создания реплики вместо pg_basebackup, взаимодействие с Kubernetes и т.д.


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


  • область применения: какие задачи HA успешно решаются Patroni
  • обзор архитектуры
  • создание тестового кластера
  • утилита patronictl
  • изменение конфигурации PostgreSQL для кластера, управляемого Patroni
  • мониторинг с помощью API
  • подходы к переключению клиентов
  • дополнительные возможности: ручное переключение, перезагрузка по расписанию, режим паузы
  • настройка синхронной репликации
  • расширяемость и универсальность
  • частые ошибки и их диагностика

Как написать хороший технический дизайн документ и не провалить проект

Reading time9 min
Views11K

Любой успешный проект начинается с ясного и понятного плана, который определяет направление работы и описывает подход к его реализации. Проработка проекта на ранних этапах с достаточным уровнем детализации экономит время во время разработки и позволяет успешно завершить проект в предсказанные сроки и бюджет. Именно для этой цели и созданы технические дизайн документы ("design doc" или "дизайн док"). Дизайн документы помогают разработчикам понимать основные требования к проекту, его архитектуру и функциональные возможности, а также процессы обеспечения безопасности и отказоустойчивости, масштабирования и эксплуатации.

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

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

Читать далее

Альтернативные крестики-нолики

Reading time3 min
Views92K
Однажды на пикнике я заметил математиков, толпящихся возле игры, интереса к которой я ожидал меньше всего: крестики-нолики.

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



Но математики на пикнике играли в более изощренную версию игры. В каждой из клеток на квадратном поле они нарисовали поле поменьше:
Читать дальше →

Загадка выпадающего списка «Амазона»

Reading time2 min
Views192K
Бен Кэменс обнаружил, что в выпадающем списке Shop by Department на сайте «Амазон» ховер-эффект происходит очень быстро, абсолютно без какой-либо задержки. Тем самым происходит нарушение старого, выработанного ещё в 90-х годах прошлого века правила: перед отображением пункта подменю необходим так называемый гистерезис, запаздывание.



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

Стажёр Вася и его истории об идемпотентности API

Reading time11 min
Views261K

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


Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси. Сегодня я поделюсь с читателями Хабра описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте. Для этого я выбрал формат вымышленных историй о стажёре Васе, который только-только учится работать с API. Так будет нагляднее и полезнее. Поехали.


image

Читать дальше →

Хороший ретрай, плохой ретрай, или История одного падения

Level of difficultyMedium
Reading time17 min
Views60K

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

Меня зовут Денис Исаев, и я работаю в Яндекс Go. Сегодня я поделюсь опытом решения проблем с отказоустойчивостью из-за ретраев. Основано на реальных инцидентах в системе из 800 микросервисов.

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

Читать далее

Премиальные тарифы банков в 2023 году. Большой обзор

Reading time11 min
Views51K

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

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

Из-за специфики своих долгосрочных планов на жизнь (FI/RE, но статья не об этом), у меня накапливаются крупные остатки, и было бы глупо не получать дополнительные опции от банков. На горизонте до года передо мной возникает дилемма: либо продолжать использовать уже имеющийся банк (наращивая остаток в нем для получения все больших опций), либо искать ещё один, третий — для получения новых "плюшек".

Изначально я планировал оценить премиальные условия 5 крупнейших (и наиболее знакомых мне) банков. Но подписчики моего скромного блога посоветовали обратить внимание ещё на 3 банка — из-за весьма привлекательных фишек, которые могут их выделить на фоне остальных. В первом блоке я расскажу о собственных критериях оценки и своей системе присуждения очков, во втором блоке кратко пройдусь по особенностям каждого из 8 банков, а в заключении представлю общий рейтинг с выявленными лидерами.

Читать далее

Jira Structure: как мы в SM Lab используем плагины для управления продуктом

Reading time9 min
Views37K

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

Зачем это нужно?

Structure — плагин для Jira, позволяющий гибко настраивать и управлять Jira-задачами любого типа.

Основные возможности:

Читать далее

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Senior