Category : golang

golang
Почему RBAC недостаточно: опыт построения тарифно-зависимой системы доступа в SaaS или о чём молчат…

Не так давно в отдельной статье я описывал опыт построения примитивной ERP-lite системы, ориентированной на малый бизнес РФ. В общем виде были проговорены основные архитектурные и доменные проблемы, с решением которых возникли трудности в процессе реализации, в том числе изоляции данных организаций-тенантов, миграции схем и проблема ограничения доступов в рамках конкретной компании (и ещё 7 ключевых тем - в моей терминологии именуемые кругами ада).Причина, по которой написана уже эта статья, до…

  • вторник, 28 апреля 2026 г. в 00:00:18
golang
gerpo: repository pattern для Go через указатели, без struct tags и кодогенерации

Я пять лет писал на .NET, и там у меня сложилась привычка держать доменную модель отдельно от инфраструктуры хранения. Repository pattern — не как догма из книги Фаулера, а как рабочий способ не тащить DbContext, маппинги и названия колонок в сущности. Домен остаётся доменом. Когда я перешёл на Go, меня сразу царапнули struct tags. Большинство библиотек работы с БД ожидает примерно такое:type User struct { ID uuid.UUID `db:"id"` Email string `db:"email"` Age …

  • вторник, 28 апреля 2026 г. в 00:00:16
golang
Почему Go-сервисы начинают тормозить без ошибок (и при чём тут goroutines). Часть 1

Часто про Go говорят: «это язык, где конкурентность почти бесплатная».И знаете что? Это правда. Почти.Но «почти» — это самое опасное во всей истории, так как либо ты управляешь системой, либо она управляет тобой руками runtime'а.В трёх статьях я разберу путь, через который проходит почти каждый Go-разработчик от наивного «я добавил go — получил параллельность», до взрослого «я проектирую concurrency-систему с понятными границами».Погнали.Иллюзия первая: «Горутины дешёвые — значит можно скол…

  • вторник, 28 апреля 2026 г. в 00:00:16
golang
Деконструкция GO: CPU, RAM и что там происходит. Системные вызовы. Часть 1.5

Итак, финал части 1! По крайней мере основного разбора без дополнений. Собственно, сегодня мы разберем то, чем в основном с точки зрения ядра ОС и CPU являются все вот эти ваши бэкенды – системные вызовы и всё, что вокруг них.На самом деле механизм немного замудренный и “в лоб” сразу все эти системные вызовы мы разбирать не будем, потому что вокруг них существует ещё несколько концепций.Итак, начнем!User mode, Kernel modeПроцессор исполняет код в разных уровнях привилегий.Это механизм защиты, к…

  • понедельник, 27 апреля 2026 г. в 00:00:11
golang
Проектируем сервис HTTP-запросов: Kafka, PostgreSQL, Redis-очередь и миллионы логических партиций

Для тех, кому хочется сразу посмотреть код: репозиторий сервиса — в конце текста.Откуда задачаНужен сервис, который централизованно выполняет исходящие HTTP-запросы для экосистемы микросервисов и интеграций. Постановка на уровне требований:Два режима входа — и синхронный (ответ нужен вызывающей стороне), и асинхронный (достаточно принять задачу и отдать результат «куда-то ещё»).Два канала постановки — удобно и через HTTP API, и напрямую в Kafka (без лишнего hop через HTTP).Rate limit — защита к…

  • понедельник, 27 апреля 2026 г. в 00:00:10
golang
Динамический ресайзинг изображений (Image Previewer)

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

  • понедельник, 27 апреля 2026 г. в 00:00:09
golang
10 кругов ада управленческого учёта малого бизнеса РФ на Go+pgx. От идеи до зависимости

Привет, Хабр. Меня зовут Серафим Недошивин, я 18-летний разработчик на Go, PHP и TS. Эта статья не посвящена тонкостям устройства gc нашего любимого языка программирования Go и уж тем более не является строго технической. Более того, эта статья является своего рода одой управленческому учёту малого бизнеса в России, а также всем людям, отдавшим свою жизнь в попытках создать наиболее подходящий инструмент для этой задачи.Автор прекрасно понимает, что тема ERP/CRM систем обсасана со всех сторон е…

  • воскресенье, 26 апреля 2026 г. в 00:00:14
golang
Auto AI Router: высокопроизводительный прокси-роутер для LLM API на Go

Если вы работаете с LLM-провайдерами, то наверняка сталкивались с одной и той же проблемой: у OpenAI лимит 100 RPM на ключ, у Vertex AI — свои квоты на проект, у Anthropic — отдельные ограничения. В итоге приходится держать несколько ключей, балансировать нагрузку вручную, следить, чтобы один заблокированный доступ не уронил всё приложение, и при этом хочется сохранить единый OpenAI-совсместимый эндпоинт для клиентского кода.Именно для этого и создан Auto AI Router — лёгкий прокси-роутер на Go,…

  • воскресенье, 26 апреля 2026 г. в 00:00:12
golang
Реактивные серверы, или как перестать писать JavaScript и начать жить

Обзор Phoenix LiveView и его друзей из других стеков: Rails Hotwire, Laravel Livewire и Go Live/HLiveПреамбула: краткая история нежеланияВ начале двухтысячных, когда jQuery еще казался вершиной инженерной мысли, а слово «фреймворк» произносилось с придыханием и легким немецким акцентом, веб-разработчик был существом предсказуемым. Он писал HTML, немного CSS, чуть-чуть серверного кода — и уходил домой к шести. Ajax обрел второе дыхание, и подходы к созданию веб-приложений разветвились, как генеа…

  • суббота, 25 апреля 2026 г. в 00:00:11