Category : golang

golang
Мониторинг, который не переживёт собственного падения

Всем привет! Хотел бы поговорить о мониторинге наших web, да и не только web, приложений, в первую очередь, о проблемах, с которыми мы сталкиваемся. В этой статье я буду использовать язык python и популярные сервисы, чтобы содержимое было максимально понятно большинству.К примеру, мы написали простой проект, ставить Prometheus с Grafana ради одной машины скорее избыточно, поэтому мы используем что‑то типо этого:curl -sf https://example.com/ >/dev/null || \ curl -s "https://api.telegram.o…

  • вторник, 4 августа 2026 г. в 00:00:09
golang
Go SDK для YDB: уменьшаем количество запросов к СУБД для интерактивных транзакций

Привет, Хабр! Меня зовут Степан Пестерников, мы с командой делаем Алису и активно используем СУБД Яндекса. Недавно коллеги из YDB провели большой рефакторинг в YDB Go SDK, где по умолчанию теперь используется новый Query Service.Я воспользовался этим рефакторингом, чтобы уменьшить количество сетевых запросов для интерактивных транзакций. Клиентские SDK устанавливают к распределённой СУБД Яндекса gRPC-подключения, поверх которых отправляются низкоуровневые команды. Какие-то из этих команд можно …

  • вторник, 4 августа 2026 г. в 00:00:08
golang
Делаем себе сложно

В пакете стандартной библиотеки slices есть функция Backward — итератор по элементам среза в обратном порядке:// Backward returns an iterator over index-value pairs in the slice, // traversing it backward with descending indices. func Backward[Slice ~[]E, E any](s Slice) iter.Seq2[int, E] Если вы не сильно погружены в тему дженериков и итераторов, то естественная реакция при взгляде на сигнатуру этой функции (и других из пакета slices) — «а что, нельзя попроще как-то было?».Чтобы ответить на эт…

  • воскресенье, 2 августа 2026 г. в 00:00:17
golang
Как я делал текстовую игру для веба

Привет, Хабр! Меня зовут Костя, я десять лет занимаюсь коммерческой Android-разработкой. Давно хотелось попробовать себя в вебе, а эксперименты с LLM давали некоторую уверенность в том, что по крайней мере есть шанс написать агентами поддерживаемый код и задеплоить.Что же можно сделать? Конечно тамагочи! Текстовая браузерная игра: герой живёт в мире мрачного будущего. Непрямое управление, возможность предлагать миссии, а также тюнинг предпочтений героя. Эдакий Годвилль, но на новый лад.Оглавлен…

  • суббота, 1 августа 2026 г. в 00:00:19
golang
Один интерфейс — девять LLM-провайдеров: как мы подружили Kimi K3, GLM-5.2, Claude и Ollama в одном…

Привет, Хабр! Я делаю execai — терминальный AI-агент на Go (bubbletea), в духе Claude Code. Он читает файлы, гоняет shell-команды, ходит в kubernetes и стримит ответы в TUI.В какой-то момент выяснилось, что пользователям нужен не «агент с одной моделью», а мультитул: у кого-то подписка Kimi Code за $19, у кого-то GLM Coding Plan за $18, у кого-то корпоративный ключ Anthropic, а кто-то хочет гонять Ollama локально и не платить вообще. И всё это — в одном чате, с общей историей, с переключением н…

  • суббота, 1 августа 2026 г. в 00:00:18
golang
# От firing до postmortem: рабочее место дежурного поверх Grafana и Mattermost

Алертинг у нас построен на правилах Grafana. Сами правила описаны в Terraform, хранятся в Git и применяются через CI/CD-пайплайн. Такой подход даёт review, историю изменений и воспроизводимую конфигурацию вместо ручного редактирования правил в интерфейсе.Дальше Grafana Alertmanager маршрутизирует уведомления по labels в несколько каналов внутреннего Mattermost. За этими каналами следит дежурная смена. В Grafana также есть отдельная доска, которая выводит активные алерты списком. Она помогла вид…

  • суббота, 1 августа 2026 г. в 00:00:14
golang
Как я раздаю агентам 733 инструмента из 23 мцп серверов

В прошлой статье про корпоративного AI-ассистента был абзац о том, что мцп серверов у меня много, поэтому пришлось написать прослойку, которая раздаёт тулзы дозированно. Расскажу, как я к этому пришел, потому что на самом деле не все так очевидно.Как это начиналосьПрослойку я написал, когда мцп серверов было штук пять, и написал скорее на упреждение. Уже тогда было понятно, что будет много кубовых кластеров, несколько гитлабов плюс всякие мониторинги прометеусы и тд. То есть однотипных серверов…

  • пятница, 31 июля 2026 г. в 00:00:08
golang
Pheme: как пет-проект «отправить пуш с сайта» дорос до федеративного E2E-мессенджера с голосом

Всё началось с обычной бытовой боли. У меня был сайт, и сайту иногда нужно было сказать мне что-то важное: «заказ оплачен», «диск на 91%», «пришёл ответ от банка». Классические варианты доставки этой мысли до моего глаза выглядели так:Почта. Работает, пока не работает. Письмо уезжает в спам, в промоакции, в «Обновления», в никуда. Ты узнаёшь о падении продакшна через сутки, разгребая папку с рассылками про скидки на матрасы.Telegram-бот. Прекрасно. До первого «мессенджер недоступен в вашей стра…

  • четверг, 30 июля 2026 г. в 00:00:09
golang
KrakenD: как мобильная логика расползлась по монолиту, а мы собрали её обратно

Всем привет! Меня зовут Рома, я бэкенд‑инженер в Банки.ру. Мы перевели мобильное API на KrakenD, и сейчас через него идёт весь трафик приложения.Начиналось всё не с выбора шлюза, а с довольно неприятного открытия: логика, обслуживающая мобильное приложение, потихоньку расползлась по монолиту — причём в те его места, где её никто не ждал. Дальше расскажу, как мы туда пришли, что делали, чтобы выбраться, и во что нам обошлось внедрение новой технологии в уже работающую инфраструктуру.Содержание д…

  • среда, 29 июля 2026 г. в 00:00:22