Category : golang

golang
Запись в Kubernetes: как контроллеры учились не перезаписывать друг друга

Привет. В прошлой статье мы в основном говорили про чтение — кэш в controller-runtime, informer’ы, Reflector, DeltaFIFO, почему r.Get в реконсайле не ходит в apiserver. Сегодня поговорим больше про запись.Kubernetes по своей природе спроектирован так, что одним и тем же объектом могут управлять разные контроллеры — и это нормально. На один Deployment смотрят и deployment-controller (правит status), и HPA (правит spec.replicas), и admission-мутаторы (расставляют labels), и cert-manager (дописыва…

  • среда, 27 мая 2026 г. в 00:00:24
golang
Не наступайте на наши грабли, если собираетесь использовать Temporal

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

  • среда, 27 мая 2026 г. в 00:00:23
golang
Практическое построение сервисов на Go под реальный трафик

Оптимизация кода сервисов на Go под реальную нагрузку Когда сервис на Go начинает «тормозить» под реальной нагрузкой, проблема почти всегда не в самом языке и даже не в алгоритмах. Чаще всего узкие места лежат на уровне работы с памятью, сериализации данных и неочевидных накладных расходов рантайма. Если сервис упирается в сеть, базу данных или внешние API — оптимизация кода даёт ограниченный эффект. Но в CPU-bound сценариях (парсинг JSON, агрегации, обработка данных) каждая лишняя аллокация и…

  • среда, 27 мая 2026 г. в 00:00:22
golang
qrrot — база данных со встроенным ИИ

Так выглядит работа с AIНаписать свою in-memory базу данных — это своеобразный способ изучить Go под капотом и сделать значимый пет-проект. Создавать обычную обертку над map скучно. Поэтому я задался вопросом: а что если написать по настоящему быстрый движок с бинарным хранением, а сверху прикрутить интерактивного ИИ-ассистента, с которым можно общаться на естественном языке, заставляя его самостоятельно выполнять цепочки запросов?Так на свет появился qrrot — in-memory хранилище на Go с TCP-инт…

  • вторник, 26 мая 2026 г. в 00:00:12
golang
QNAME minimisation на практике: RFC 7816, реализация, грабли

Когда вы открываете mail.google.com, ваш рекурсивный резолвер делает три-четыре шага: спрашивает root, потом TLD, потом authoritative для google.com, иногда ещё один уровень. Десятилетиями каждому из этих серверов отправлялся один и тот же вопрос целиком: «дай мне mail.google.com». Root-серверу, который понятия не имеет про google. TLD-серверу, который умеет только делегации com.. Каждый из них видел всю строку, хотя для своей работы нуждался в одной метке.В 2016 году Стефан Бортцмайер написал …

  • воскресенье, 24 мая 2026 г. в 00:00:38
golang
Обход блокировок внутри iOS-приложения: VLESS + Reality через sing-box, и грабли по дороге

Мы делаем мессенджер. Весной 2026 наш бэкенд начал отваливаться у части пользователей из России: HTTPS-запросы к API таймаутятся, WebSocket не поднимается. Картина знакомая всем, кто держит сервис с одним доменом и одним IP.Для мессенджера это приговор. Не «неудобно», а именно приговор: приложение, которое не может даже подключиться, бесполезно. И вариант «попросите пользователя сначала включить VPN» нас не устраивал совсем. Ниже разберу, почему мы в итоге встроили обход прямо в приложение, на …

  • воскресенье, 24 мая 2026 г. в 00:00:37
golang
Рабочее место не-вайбкодера: настраиваем harness

Привет, Хабр! Меня зовут Даниил, я программист и архитектор, разрабатываю программное обеспечение и спецификации для создания ПО в YADRO. Продолжаю цикл статей об организации рабочего места по методу Spec-Driven Development. В первой части мы настроили агента Claude Code. Во второй расскажу, как настроить harness — программную инфраструктуру, выступающую оберткой для LLM, и наконец поделюсь решением задач по методу SDD. Слово «harness» переводится на русский язык как «упряжь»: по сути мы исполь…

  • суббота, 23 мая 2026 г. в 00:00:07
golang
Production начинается там, где заканчивается вайбкодинг

В 2013 году мне казалось, что я отлично зарабатываю.Я уже около года фрилансил и получал что‑то порядка 100–120 тысяч рублей в месяц. Для того времени — очень неплохо.В голове математика была простая: аренда квартиры — около 25к, еда — около 15к.Значит, живу примерно на 40–50к, а всё остальное — свободные деньги.Поэтому покупка машины в кредит казалась нормальной идеей.Проблема была только в том, что я считал очень оптимистично.Я не учёл платную заочку. Не учёл лечение зубов, на которое как раз…

  • пятница, 22 мая 2026 г. в 00:00:26
golang
Баги, которые нас воспитали: инженерные истории с Go Loto

Каждый разработчик помнит тот самый момент, когда система, которая только что работала идеально, вдруг начинает вести себя так, будто сошла с ума. Когда дашборд в Grafana показывает что-то страшное, а ты стоишь перед ним с кружкой остывшего кофе и не понимаешь, с чего начать.На нашем мероприятии Avito Go Loto разработчики поделились своим опытом без прикрас. О блоате в полтора терабайта, о девяти инстансах, которые передрались за один звонок, о бэкенд-разработчице, которая в пятницу вечером отк…

  • пятница, 22 мая 2026 г. в 00:00:13