Category : golang

golang
Разбираем подводные камни, ошибки и лучшие практики при разработке Kubernetes-операторов

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

  • пятница, 19 декабря 2025 г. в 00:00:09
golang
Один сервис — четыре стека: практический бенчмарк с SLO по p99 и Docker/JMeter

В этой статье представлено сравнение четырёх реализаций одного и того же сервиса поверх PostgreSQL:Spring MVC + JDBCSpring WebFlux + R2DBCKtor + JDBCGo + pgxВсе сервисы крутятся в Docker с одинаковыми ресурсными лимитами и прогоняются через один и тот же JMeter-план. Для каждого стека определяется максимальный RPS при соблюдении SLO по p99-латентности.Разберём подробно:Как устроен стенд (docker-compose, Postgres, Prometheus, Grafana, JMeter)Как реализованы сервисы и в чём различия моделей конку…

  • пятница, 19 декабря 2025 г. в 00:00:07
golang
Пишем свою in-memory базу на Go, ускоряем поиск отелей в десятки раз

Если вы когда-либо строили высоконагруженные системы поиска, то знаете, что в какой-то момент узким местом становится не код, а сама архитектура. Поиск доступных отелей — как раз тот случай: миллиарды «ночей», десятки тысяч RPS, постоянные обновления календарей, строгая консистентность и высокая цена любой ошибки. Старый стек на Python + Postgres + Redis долго тянул, но однажды стал «тормозить» настолько, что оптимизировать дальше было невозможно — SQL-запросы разрастались, реплики множились, l…

  • пятница, 19 декабря 2025 г. в 00:00:07
golang
Визуальный язык программирования в NebuLeet: эволюция и дизайн

Пару лет я в соло разрабатывал максимально нишевую игру "для программистов" (NebuLeet) на довольно нишевых технологиях (Go + ebitengine), и вот теперь, после релиза, я хочу рассказать про одну из интересных особенностей этой игры - визуальном программировании логики игровых юнитов.Визуальный язык в игре прошёл несколько итераций развития, от неявных аргументов команд через стек, до чего-то типа регистровой модели, где у ячеек памяти есть имена, а команды принимают аргументы явно.Вас ждё…

  • четверг, 18 декабря 2025 г. в 00:00:09
golang
1000 и один способ угробить программу из-за гонки данных в Go

Команда Go for Devs подготовила перевод статьи о самых коварных и трудноуловимых гонках данных в Go. Автор показывает на реальных примерах, как даже опытные разработчики легко попадают в ловушки конкурентности: от случайных захватов переменных в замыканиях до неправильного срока жизни мьютексов и скрытых гонок в стандартной библиотеке.Я пишу продакшн-приложения на Go уже несколько лет. В этом языке есть вещи, которые мне нравятся. Но есть и то, что мне не по душе: в Go слишком легко создать гон…

  • четверг, 18 декабря 2025 г. в 00:00:08
golang
Go 1.25: GOMAXPROCS учитывает CPU-лимиты в контейнерах

TL;DRGOMAXPROCS ограничивает число потоков, которые одновременно исполняют Go-код (и тем самым задаёт параллелизм выполнения горутин); раньше по умолчанию он равнялся числу логических CPU на хосте.В контейнерах с CPU-лимитами это давало рассинхронизацию: Go распараллеливался «по ноде», а Linux удерживал процесс троттлингом cgroups, ухудшая задержки.В Go 1.25 дефолтный GOMAXPROCS учитывает CPU-лимит контейнера (если он меньше CPU хоста) и периодически обновляется при изменении лимита — если GOMA…

  • четверг, 18 декабря 2025 г. в 00:00:07
golang
Как мы в Авито нашли баланс между качеством и скоростью разработки на примере фичи рекомендаций Авт…

Всем привет! Меня зовут Михаил Пашедко, я backend-разработчик в Авито в команде Автотека. Автотека — это сервис для проверки истории автомобиля, в котором вы можете получить специальный отчет. Когда в тот самый отчет решили добавить подсказки для пользователя, идея казалась простой. Небольшая рекомендательная система, которая подскажет: стоит ли покупать конкретный автомобиль, на что обратить внимание, когда лучше отказаться от сделки.Но чтобы вписать даже такую, казалось бы, небольшую фичу в э…

  • четверг, 18 декабря 2025 г. в 00:00:06
golang
SQLSet — отделяем GO код от SQL-запросов

ПредисловиеОднажды мне пришлось участвовать в переводе большого старого проекта на новую СУБД. Это заняло несколько месяцев тогда. И этот урок я запомнил на всю жизнь. В проекте повсеместно код приложения был перемешан с кодом SQL-запросов. При этом они во многих местах еще �� генерировались динамически из фрагментов текста. С тех пор я являюсь ярым сторонником отделения SQL-кода от непосредственно кода программы и патологически не перевариваю динамическую генерацию запросов.Мухи - отдельно, ко…

  • среда, 17 декабря 2025 г. в 00:00:11
golang
Найм в России, эйджизм, кадровички, интересная работа. Простые истины про бигтех в России

В России в принципе меньше интересного IT, который разрабатывает что-то новое и перспективное, чем "в мире". Оно есть, но на всех не хватит. Многие хотят пилить ядро, применять алгоритмы, исследовать компиляторы, но таких мест единицы и все давно заняты, уходить из них ради вас никто не собирается. Подавляющая часть, особенно в бигтехе - чисто поддержка, латать дыры в чужом говнокоде: разрабы в 2022 поубегали, а бизнес прекращать получать прибыль из этого кода пока не планировал - подде…

  • среда, 17 декабря 2025 г. в 00:00:10