Pull to refresh

Technotext

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

Reading time11 min
Reach and readers8.1K

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

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

Читать далее

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

Level of difficultyMedium
Reading time13 min
Reach and readers20K

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

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time12 min
Reach and readers15K

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

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

Поехали!

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

Level of difficultyMedium
Reading time22 min
Reach and readers16K

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

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

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

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

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

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

Level of difficultyEasy
Reading time5 min
Reach and readers22K

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

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

Читать далее

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

Level of difficultyHard
Reading time14 min
Reach and readers32K

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

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

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

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

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

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

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

Level of difficultyEasy
Reading time13 min
Reach and readers24K

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

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

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

Level of difficultyHard
Reading time31 min
Reach and readers6.8K

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

Что ещё за Hobbes?

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

Level of difficultyMedium
Reading time13 min
Reach and readers41K

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

Вскрытие!

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

Level of difficultyHard
Reading time10 min
Reach and readers11K

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

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

Читать далее

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

Level of difficultyEasy
Reading time5 min
Reach and readers17K

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

Современные видеокамеры пишут видео с огромным разрешением, например 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

Level of difficultyMedium
Reading time8 min
Reach and readers7.8K

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

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

Читать далее

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

Reading time12 min
Reach and readers6.2K

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time3 min
Reach and readers7.9K

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

И что было бы?

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

Reading time8 min
Reach and readers8.2K

Всем привет!

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

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

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

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

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

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

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

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

Level of difficultyMedium
Reading time7 min
Reach and readers15K

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

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

Читать далее

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

Level of difficultyEasy
Reading time14 min
Reach and readers5.6K

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

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

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

Читать далее

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

Level of difficultyMedium
Reading time9 min
Reach and readers6.1K

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

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

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

Читать далее

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

Level of difficultyMedium
Reading time11 min
Reach and readers29K

Наверняка вы все работаете с 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, теория

Level of difficultyMedium
Reading time11 min
Reach and readers21K

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

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

Читать далее