Category : golang

golang
Рулим в облака: деплой микросервиса генерации ID в Kubernetes

Привет, Хабр! Продолжаю серию статей по проектированию и разработке отказоустойчивой микросервисной системы сокращения ссылок.Если вы только присоединились, рекомендую ознакомиться с предыдущими частями:Часть 1. Определили требования к системе и декомпозировали её на независимые сервисы.Часть 2. Создали микросервис генерации уникальных идентификаторов.Наш микросервис генерации ID полностью готов, но пока живёт только в среде разработки. Сегодня подготовим его к развёртыванию в локальном Kuberne…

  • четверг, 24 сентября 2026 г. в 00:00:13
golang
Как мы вдвоем писали кроссплатформенный мессенджер: Compose Multiplatform, SFU на Go и сжатие трафи…

Идея написать собственный мессенджер появилась не от хорошей жизни. У нас была конкретная прикладная потребность: получить полностью независимый инструмент связи, который не завязан на сторонние облачные сервисы, нормально поднимается на скромных серверах и адекватно ведет себя при перебоях со связью.Мы разрабатывали другой проект, и поначалу для него был написан минимальный чат на CodeIgniter 4 с Vanilla JS и CSS плюс WebSocket‑сервер на Go. Затем стало очевидно, что такой чат слабоват, а для …

  • четверг, 24 сентября 2026 г. в 00:00:12
golang
Запустили 1 000 000 горутин на Go. Вот сколько это стоило

Каждый, кто касался Go, наверняка слышал о том, что горутина — это «легковесный поток», который управляется самим рантаймом, и именно поэтому вы можете запускать тысячи и более горутин. Нас точно не обманывают, но давайте разберёмся, почему это так и какой в этом компромисс.Что именно будем измерятьЯ планирую замерить время запуска программы, объём потребляемой оперативной памяти и загрузку процессора, а также проверить, сколько горутин действительно существует внутри программы. Будем двигаться…

  • четверг, 24 сентября 2026 г. в 00:00:10
golang
Отцы и дети. Java и Go

Данная статья содержит размышления о сильных и слабых сторонах обоих языков. Кода нет, смысла не так чтобы много — чистое словоблудие и мнение рядового разработчика. Если интересно, велком под кат.В данной статье много воды, отражены мысли и опыт воспалённого мозга, потому заранее предупреждаю: вы можете просто зря потерять своё время. Данную и любую статью нужно читать с включённым критическим мышлением и вообще понимать, что автор — «профессор лука».Идея статьи родилась в связи с повсеместной…

  • среда, 23 сентября 2026 г. в 00:00:13
golang
110 тестов, которые не проверяют код: как заставить документацию падать вместе со сборкой

Я открыл свою панель помощи и прочитал в ней про эскалации:Внутри лесенки каждая ступень уходит по своей задержке (0 = сразу); последующие ступени расширяют круг получателей.Вторая половина фразы - неправда. Ступени не расширяют круг получателей. У каждой ступени свой набор каналов, никак не связанный с предыдущей. Ступень, на которой не отмечен ни один канал, не уведомит никого - даже если каналы отмечены на первой.Разница не косметическая. Человек читает подсказку, отмечает Telegram на первой…

  • среда, 23 сентября 2026 г. в 00:00:11
golang
Как мы выдавали ключи от демозала через Telegram, но переехали на eXpress: техническое руководство …

Привет, Хабр!Меня зовут Дмитрий, я инженер в Группе Rubytech — компания производит программно‑аппаратные комплексы Скала^р и разрабатывает технологии для высоконагруженных ИТ‑инфраструктур.Вообще, наше подразделение занимается базами данных, но сегодня я расскажу про задачу, которая напрямую не была связана с рабочими обязанностями, зато ее решение сделало куда проще жизнь наших инженеров. Ниже лирическое отступление про офис, скоро вы все поймете.Помимо основного здания рядом (действительно ря…

  • среда, 23 сентября 2026 г. в 00:00:10
golang
PVS-Studio для Go: краткий обзор новых диагностических правил

Вышел PVS-Studio 8.0! Мы добавили поддержку анализа Go проектов и многое другое. В этой статье мы разберем интересные диагностические правила для Go, которые мы подготовили с выходом новой версии нашего анализатора.ВведениеВ PVS-Studio 8.0 официально появилась поддержка анализа Go проектов, а также возможность работы из IDE GoLand и Visual Studio Code (если вы используете Go).А ещё плагин для Visual Studio Code был значительно переработан и получил поддержку не только анализа Go проектов, но и …

  • вторник, 22 сентября 2026 г. в 00:00:13
golang
Почему LLMProvider недостаточно: проектируем AI Gateway для SaaS на Go

Когда начинаешь делать AI-фичу в backend-приложении, первая архитектурная идея обычно выглядит очень здраво: спрятать конкретного провайдера за интерфейсом.Что-то вроде:type LLMProvider interface { Generate(ctx context.Context, req Request) (Response, error) }Сегодня за ним OpenAI-compatible API, завтра другой провайдер, послезавтра локальная модель. Код бизнес-логики от конкретного SDK не зависит, значит архитектурная задача вроде бы решена.Я тоже начинал примерно с этого. Но по мере того …

  • вторник, 22 сентября 2026 г. в 00:00:11
golang
Как я переписал каталог из 500 000 SVG‑иконок с Laravel на Go и уменьшил сервер с 4/6 ГБ до 2/2 ГБ

SVG4 — каталог векторных иконокБольше года назад я запустил SVG4 — каталог векторных иконок. Сейчас в нём больше 500 000 SVG‑файлов. Первая версия была написана на Laravel, и на тот момент выбор был вполне логичным: Laravel я хорошо знал, на нём можно было быстро собрать рабочий проект и проверить, нужен ли он вообще кому‑нибудь. Проект оказался нужен, начал расти, а вместе с ним росли база, количество страниц, поисковый трафик и нагрузка. Старая версия в итоге работала на сервере с 4 ядрами и …

  • вторник, 22 сентября 2026 г. в 00:00:10