Обновить

Эмуляция вместо имитации, или То, чего обычно не хватает нагрузочным тестам

Время на прочтение11 мин
Охват и читатели8.1K

Всем привет, меня зовут Андрей Матвеев, я разработчик в команде платформы надёжности Яндекс Такси. Если проще — я занимаюсь тем, чтобы Такси работало стабильно. А ещё я техлид проекта virtual‑orders — это наша система нагрузочных учений. Изначально она была для Такси, но теперь мы активно внедряем её в Еду и Лавку.

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

Читать далее

Как Temporal без боли решает привычную проблему распределённой бизнес-логики

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели20K

Меня зовут Миша, я бэкенд‑разработчик в платформе Яндекс Еды, и в этой статье я расскажу о принципах работы Temporal: почему мы его выбрали как основу нового процессинга, в чём его сильные стороны и как изменилась наша жизнь после перехода. 

Раньше для такого требовались: стейт‑машина с полудюжиной состояний, очереди и воркеры, обработчики на каждое событие и блокировки от race conditions. Теперь всё это описано в одной функции, которая вообще выглядит как псевдокод. 

Магия? Нет, Temporal. 

С тех пор как мы перенесли процессинг на Temporal, разработка существенно упростилась. Пользователь оплачивает заказ, ресторан его подтверждает и готовит, курьер забирает и привозит — ровно это и отражено в коде. Ну разве не прелесть?

Читать далее

Не рейт-лимитером единым: как управлять нагрузкой в микросервисах

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели15K

У каждого, кто работает с высоконагруженными системами, своя коллекция боевых шрамов. Знаете эти истории про инциденты, когда всё идёт совсем не по плану? У меня тоже есть такая — очень показательная. Правильные инструменты, лучшие практики, опытная команда — и всё равно куча проблем. Это хороший повод рассказать, почему даже самых продвинутых инструментов может быть недостаточно, когда не видишь всей картины.

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

Поехали!

Код-гольф в Яндексе: как нерды развлекаются

Уровень сложностиСредний
Время на прочтение22 мин
Охват и читатели16K

Что такое код-гольф? Это соревнование, в котором надо решить задачу по программированию (как правило, несложную), используя наименьшее количество символов. Соревнование довольно известное. Можно поиграть, например, на одноимённом сайте, есть целая секция на CodinGame, иногда такие соревнования публикует kaggle, была такая секция на HackerRank (сейчас её я не нашёл).

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

Временами мы развлекаемся таким форматом. В какой-то момент на внутренних ивентах подняли свою платформу для соревнований, а потом она протекла и на внешние конференции.

Эта статья — смесь разбора задач и истории появления соревнования по код-гольфу на конференциях Яндекса.

Про нас и кодгольф

Как научиться программированию разрабатывая игры

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели22K

Если вы учились программировать в конце 80x-начале 90х, то наверняка делали это на ZX Spectrum, БК-0010 или MSX. Во всех этих компьютерах был встроенный язык програмирования. Кто-то начинал сразу с машинных кодов Радио-86РК. В любом случае первыми программами скорее всего были игры.

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

Читать далее

Мой плохой код — это ваша вина

Уровень сложностиСложный
Время на прочтение14 мин
Охват и читатели32K

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

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

Разумеется, по эго это бьёт иногда больно, и некоторые моменты вспоминать не очень приятно. Самое страшное, что я когда-либо делал — коммитил приватный ключ в публичной репо. Вот написал и мне опять стыдно. Но я осознаю, что это всё я.

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

Сейчас я вам это покажу. Будет интересно, но впереди много боли. Я предупредил.

Хочу страдать

Болезнь Крона, осы-паразиты и «больной нытик из Цюриха»: что стоит за главной сценой «Чужого»

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели24K

Сегодня, дорогие читатели, мы погрузимся в небольшую, но интересную историю создания той самой офигенной сцены из «Чужого», от которой в своё время многим снились кошмарики. Впечатлительный был народ. В общем, разогревай вермишельку или чего ты там кушаешь, а мы погнали. Итак…

Каковы мои шансы?

Функциональный язык программирования Hobbes

Уровень сложностиСложный
Время на прочтение31 мин
Охват и читатели6.8K

Hobbes - это функциональный язык программирования со статической типизацией, написан на С++ и включает JIT-компилятор на базе LLVM. Похож на Haskell, но совсем не такой же революционный и гораздо менее известен. Я немного расскажу, что это за язык и как он устроен внутри.

Что ещё за Hobbes?

Я просто починил

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели41K

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

Вскрытие!

Рендеринг трёхмерных фрактальных множеств: от губки Менгера до Мандельбокса, часть 2

Уровень сложностиСложный
Время на прочтение10 мин
Охват и читатели11K

Привет, Хабр!

Меня всё также зовут Андрей Гринблат, и в первой части я начал рассказывать о такой технологии, как ray marching, и о нормированных пространствах. В этой части начнём с построения простых геометрических фракталов — губки Менгера и тетраэдра Серпинского, затем построим IFS-фракталы, рассмотрим технику орбитальных ловушек, и в завершение построим фрактал «Ящик Мандельброта», или Мандельбокс.

Читать далее

Ужасно быстрый кардридер CFexpress TypeA-флешек за очень дёшево

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели18K

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

Современные видеокамеры пишут видео с огромным разрешением, например 4–8к, сумасшедшим битрейтом вплоть до гигабайт в секунду и глубиной цвета 8/10/12 бит. Такой поток данных требует ну очень быстрых карт памяти, и производители камер пришли к стандарту CFexpress.

Флешки эти по своей сути являются очень маленькими SSD-дисками с интерфейсом PCI Express 3-го поколения на 2 линии, что даёт аж 2 гигабайта в секунду на запись и чтение!
Но у картридеров для этих флешек есть 2 больших беды: цена и нагрев. С ценой всё просто, например оригинальный картридер Sony MRW-G2 стоит аж $220, а аналог от Lexar выйдет в $90, но оба этих варианта банально перегреваются во время длительного копирования огромных видеофайлов, что приводит к троттлингу — падению скорости.

В этой небольшой статье я соберу свой аналог всего за 25 $ с активным охлаждением и скоростью до 2 Гбайт/сек!

Читать далее

«Это почти не больно»: внедряем DevOps as a Service в Enterprise

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели7.8K

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

В статье я поделюсь опытом, как подойти к этой проблеме системно: внедрить DevOps as a Service так, чтобы он стал не «еще одной модной практикой», а реально работающим сервисом внутри enterprise. Разберем, какие сложности чаще всего встречаются на пути, какие метрики помогают понять, что вы движетесь правильно, и как справляться с сопротивлением команд.

Читать далее

От DevOps к платформе: как улучшить взаимодействие команд

Время на прочтение12 мин
Охват и читатели6.2K

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

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

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

Читать далее

Если бы в мире исчез Kubernetes

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.9K

Представьте, что однажды утром вы просыпаетесь, а мир вокруг стал другим. Нет, ничего страшного не случилось: ни ледникового периода, ни падения метеорита. Но все сервисы вдруг начали работать так, как работали в те времена, когда про Kubernetes еще никто не слышал.

И что было бы?

Как я перестал страдать и полюбил CoreDNS: три истории

Время на прочтение8 мин
Охват и читатели8.3K

Всем привет!

Я Саша Краснов, CTO контейнерной платформы «Штурвал». В апреле прошла юбилейная DevOpsConf 2025, на которой мне посчастливилось выступать с докладом. Рассказывал я про хаки, которые позволяют автоматизировать использование DNS.

Эта статья построена на базе моего доклада и трех реальных историй:

— управление DNS из git;

— собственный nip.io;

— как и зачем писать плагины для CoreDNS.

Приходите под кат, там интересно :)

Попасть под кат

Sec в DevSecOps — в чем разница подходов

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели15K

Привет, Хабр! Меня зовут Рома Корчагин, я занимаюсь внедрением процессов безопасной разработки в продукте «Штурвал» от «Лаборатории Числитель». Наша платформа позволяет создавать сотни кластеров и управлять ими силами небольшой команды.

Считается, что практики DevOps действительно ускоряют разработку, но классические методы безопасности за этим прогрессом не успевают. В этой статье я расскажу, можно ли автоматизировать внедрение Sec в DevOps и при этом снизить нагрузку на разработчиков. Разберём четыре основных подхода — и отдельно поговорим про Shift-Down Security, который, на мой взгляд, отлично закрывает недочёты остальных.

Читать далее

Сказ о том, как техпис без опыта программирования свой первый скрипт писал

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели5.6K

Гой еси, Хабр!

Звать меня Артем Клещев, я технический писатель в СберТехе. Работа моя — складывать сказания да инструкции для достославного продукта Platform V DropApp, что как царство-государство Kubernetes да с верной свитой операторов.

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

Читать далее

Строим GitOps-платформу: Argo CD и всё, что к нему прилагается. Часть 1 — базовая настройка

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели6.1K

Многие компании реализуют GitOps-подход как часть внутренней Developers Platform. Он помогает унифицировать и автоматизировать доставку кода, повысить надёжность деплоя и дать разработчикам удобный интерфейс для работы с инфраструктурой. Один из самых популярных инструментов для этого — Argo CD.

Статья основана на воркшопе Егора Салиева и Николая Пушкарева, DevOps-инженеров Hilbert Team, проведённом на DevOps Conf 2025. В ней мы разберемся, как внедрить Argo CD и его ключевые компоненты, чтобы построить масштабируемую GitOps-платформу.

Материал будет в двух частях. Он будет полезен разработчикам и DevOps-инженерам, которые хотят понять, с чего начать внедрение GitOps в команде, организовать инфраструктуру под разные масштабы, а также всем, кто ищет способы унификации деплоя.

Читать далее

Как работает ingress-nginx: нырнем поглубже. Часть 1 — basics

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели29K

Наверняка вы все работаете с Kubernetes, публикуете сервисы наружу через Ingress-контроллер. Уверен, что большинство из вас использует ingress-nginx. Создаете манифест, деплоите его в k8s, но не всегда получаете именно тот результат, который хотели бы. Или же все работает, но спустя какое-то время что-то идет не так. 

В этой серии статей, созданной по мотивам выступления на DevOpsConf’25, мы подробно разберемся как работает сам ingress-nginx контроллер и почему это не совсем классический nginx. Погрузимся в дебри LUA-кода чтобы понять, как реализована балансировка. А также затронем тему сниппетов, как их включить если они вам очень нужны, и почему этого делать не стоит.

Меня зовут Алексей Колосков, я Lead DevOps из Hilbert Team. Больше 15 лет я в IT: за это время админил, разрабатывал, развивал on-premise инфраструктуру, инфраструктуру в облаках и даже курсы по DevOps, Security и DataTech в Yandex Cloud. Hilbert Team — провайдер IT-решений для крупного и среднего бизнеса в области облачных технологий, DevOps, DevSecOps, DataOps, MLOps и FinOps. Партнёр Yandex Cloud со специализацией Yandex Cloud Professional по направлениям DevOps и Data Platform.

Читать далее

SSO через Keycloak для инфраструктурных сервисов: часть 1, теория

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели21K

Если вы хоть раз настраивали доступ к Grafana, Argo CD, Vault или Prometheus и сталкивались с аутентификацией «на костылях», значит, тоже задавались вопросом: почему бы не сделать это один раз и правильно — через SSO?

Эта первая часть разбора мастер-класса с DevOpsConf 2025 от Алексея Цыкунова, CTO Hilbert Team.

Читать далее