Category : golang

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
golang
Разработчики всё ещё путают JWT, JWKS, OAuth2 и OpenID Connect — разбираем на примерах. Часть 1

JWT, SSO, OAuth, OpenID Connect — названия, знакомые каждому разработчику. В коде токены встречаются повсюду. Кажется, что всё понятно.Но стоит спросить: «Зачем в продакшене нужен JWKS?» или «Чем отличается OAuth2 от OpenID Connect?» — уверенность сразу исчезает. Большинство работает с аутентификацией поверхностно: по шаблону или туториалам, не понимая, что лежит в основе. В этой статье мы разберём, как устроен JWT и его подпись, зачем нужны access и refresh-токены, что такое JWKS и в чём отлич…

  • среда, 17 декабря 2025 г. в 00:00:09
golang
Чистим main.go: предсказуемый старт и надежный Graceful Shutdown

Сталкивались ли вы с болью при управлении порядком запуска и остановки зависимостей в вашем Go-сервисе?Разработка больших сервисов неизбежно приводит к необходимости управлять множеством зависимостей. В этом контексте мы говорим о долгоживущих компонентах, чья работа обеспечивается отдельными горутинами: как правило, это блокирующий метод (например, Start), внутри которого крутится цикл обработки.Примерный сценарий жизненного цикла сервиса выглядит так:При запуске критически важно, чтобы пул со…

  • вторник, 16 декабря 2025 г. в 00:00:09
golang
Почему Go, Rust и Zig такие разные: ценности, компромиссы и назначение языков

Команда Go for Devs подготовила перевод статьи о трёх языках, которые всё чаще оказываются в одном ряду, но на самом деле решают принципиально разные задачи: Go, Rust и Zig. Автор несколько месяцев изучал каждый из них и попытался понять, какие ценности стоят за их устройством. Go выбирает минимализм и корпоративную предсказуемость, Rust — безопасность и максимальную выразительность, Zig — радикальный контроль и отказ от ООП-мышления. Получился честный и местами провокационный разбор того, заче…

  • вторник, 16 декабря 2025 г. в 00:00:08
golang
Скажи yay -S say

Сейчас, когда утилита say понравилась многим, а я получил массу вопросов и предложений пришло время придать этой массе некоторое ускорение, сформировав сильные вопросы в детальное теническое описание проекта. На днях утилита была добавлена в AUR, что и подколкнуло меня всё же расписать как всё устроено под капотом.Для начала уточню: say, это инструмент для видеозвонков, работающий напрямую в окне терминала. Отдельный GUI не требуется: видеопоток рендерится прямо в терминале в текстовом виде (см…

  • понедельник, 15 декабря 2025 г. в 00:00:07
golang
Минимальный набор практик для микросервиса

Эту статью я написал по следам работы над шаблоном микросервиса на Go — для коллег, которые переходят на Go после Ruby.Такие проекты для меня - это способ немного выдохнуть и спокойно порефлексировать: чего именно не хватало в реальной работе, какие инструменты хотелось иметь под рукой, какие решения приходилось принимать в последний момент. Заодно появляется шанс изучить новые подходы и переосмыслить старые.Цель этого шаблона была простой: дать человеку возможность сразу писать бизнес-логику, …

  • понедельник, 15 декабря 2025 г. в 00:00:06