Kubernetes-операторы давно стали привычным инструментом автоматизации и управления сложными системами. Однако на практике их поведение далеко не такое предсказуемое, как в примерах из документации. Небольшие отклонения в логике цикла согласования, обработке ошибок или обновлении статуса быстро превращаются в зацикливание, дублирование ресурсов и прочие сюрпризы, которые трудно отладить. Новичкам полезно понимать, почему так происходит, а опытным разработчикам — помнить, какие принципы стоит дер…
В этой статье представлено сравнение четырёх реализаций одного и того же сервиса поверх PostgreSQL:Spring MVC + JDBCSpring WebFlux + R2DBCKtor + JDBCGo + pgxВсе сервисы крутятся в Docker с одинаковыми ресурсными лимитами и прогоняются через один и тот же JMeter-план. Для каждого стека определяется максимальный RPS при соблюдении SLO по p99-латентности.Разберём подробно:Как устроен стенд (docker-compose, Postgres, Prometheus, Grafana, JMeter)Как реализованы сервисы и в чём различия моделей конку…
Если вы когда-либо строили высоконагруженные системы поиска, то знаете, что в какой-то момент узким местом становится не код, а сама архитектура. Поиск доступных отелей — как раз тот случай: миллиарды «ночей», десятки тысяч RPS, постоянные обновления календарей, строгая консистентность и высокая цена любой ошибки. Старый стек на Python + Postgres + Redis долго тянул, но однажды стал «тормозить» настолько, что оптимизировать дальше было невозможно — SQL-запросы разрастались, реплики множились, l…
Пару лет я в соло разрабатывал максимально нишевую игру "для программистов" (NebuLeet) на довольно нишевых технологиях (Go + ebitengine), и вот теперь, после релиза, я хочу рассказать про одну из интересных особенностей этой игры - визуальном программировании логики игровых юнитов.Визуальный язык в игре прошёл несколько итераций развития, от неявных аргументов команд через стек, до чего-то типа регистровой модели, где у ячеек памяти есть имена, а команды принимают аргументы явно.Вас ждё…
Команда Go for Devs подготовила перевод статьи о самых коварных и трудноуловимых гонках данных в Go. Автор показывает на реальных примерах, как даже опытные разработчики легко попадают в ловушки конкурентности: от случайных захватов переменных в замыканиях до неправильного срока жизни мьютексов и скрытых гонок в стандартной библиотеке.Я пишу продакшн-приложения на Go уже несколько лет. В этом языке есть вещи, которые мне нравятся. Но есть и то, что мне не по душе: в Go слишком легко создать гон…
TL;DRGOMAXPROCS ограничивает число потоков, которые одновременно исполняют Go-код (и тем самым задаёт параллелизм выполнения горутин); раньше по умолчанию он равнялся числу логических CPU на хосте.В контейнерах с CPU-лимитами это давало рассинхронизацию: Go распараллеливался «по ноде», а Linux удерживал процесс троттлингом cgroups, ухудшая задержки.В Go 1.25 дефолтный GOMAXPROCS учитывает CPU-лимит контейнера (если он меньше CPU хоста) и периодически обновляется при изменении лимита — если GOMA…
Всем привет! Меня зовут Михаил Пашедко, я backend-разработчик в Авито в команде Автотека. Автотека — это сервис для проверки истории автомобиля, в котором вы можете получить специальный отчет. Когда в тот самый отчет решили добавить подсказки для пользователя, идея казалась простой. Небольшая рекомендательная система, которая подскажет: стоит ли покупать конкретный автомобиль, на что обратить внимание, когда лучше отказаться от сделки.Но чтобы вписать даже такую, казалось бы, небольшую фичу в э…
ПредисловиеОднажды мне пришлось участвовать в переводе большого старого проекта на новую СУБД. Это заняло несколько месяцев тогда. И этот урок я запомнил на всю жизнь. В проекте повсеместно код приложения был перемешан с кодом SQL-запросов. При этом они во многих местах еще �� генерировались динамически из фрагментов текста. С тех пор я являюсь ярым сторонником отделения SQL-кода от непосредственно кода программы и патологически не перевариваю динамическую генерацию запросов.Мухи - отдельно, ко…
В России в принципе меньше интересного IT, который разрабатывает что-то новое и перспективное, чем "в мире". Оно есть, но на всех не хватит. Многие хотят пилить ядро, применять алгоритмы, исследовать компиляторы, но таких мест единицы и все давно заняты, уходить из них ради вас никто не собирается. Подавляющая часть, особенно в бигтехе - чисто поддержка, латать дыры в чужом говнокоде: разрабы в 2022 поубегали, а бизнес прекращать получать прибыль из этого кода пока не планировал - подде…