Category : golang

golang
Как писать API-автотесты на Go: Axiom, Resty, Testify, Allure и запуск в CI/CD

В этой статье мы рассмотрим практический пример написания API-автотестов на Go с использованием Axiom, Allure, Testify и Resty. Цель — показать, как может выглядеть тестовый проект, построенный с учётом лучших практик и ориентированный не на инфраструктуру, а на проверку бизнес-логики.В результате у нас получатся «скучные» автотесты. Скучные — потому что чистые, предсказуемые и легко читаемые. В самих тестах не будет логики инициализации клиентов, конфигураций, логирования или интеграций с внеш…

  • вторник, 3 февраля 2026 г. в 00:00:07
golang
Как я переписал Model Context Protocol на Go и получили 100K ops/sec (может и больше)))

Всем привет! Меня зовут Дима, некоторые меня тут уже знают, и сегодня я расскажу о том, как я создал GoMCP — production-grade альтернативу официальному MCP SDK от Anthropic. Спойлер: получилось в 10 раз быстрее, с multi-tenancy и enterprise-фичами из коробки.100K+ tool calls/sec (vs ~10K у Python SDK)Security hardening: input validation, audit logging, rate limitingMulti-tenancy: изоляция namespace + квоты3 адаптера: stdio (MCP v1), gRPC, HTTP REST213 тестов, 430+ Full Ralph итерацийПочему не о…

  • понедельник, 2 февраля 2026 г. в 00:00:09
golang
Книга «Go: разработка приложений в микросервисной архитектуре с нуля»

Привет, Хабр.Хотим вам рассказать об одной из первых наших новинок 2026 года, которую с тем же успехом можно считать и вторым изданием, и переизданием отлично зарекомендовавшей себя книги о микросервисах. Речь под катом пойдёт о книге Юлии Поповой «Go: разработка приложений в микросервисной архитектуре с нуля».И даже до выхода у этой книги уже есть история.С автором этой книги я заочно познакомился через одну из бывших коллег Екатерину Черских @MarkOcean, вместе с которой в своё время занимался…

  • пятница, 30 января 2026 г. в 00:00:12
golang
Массивы и слайсы в Golang

Для начала хотелось бы сказать, что же такое массивы и слайсы.МассивыМассив в Go - это структура данных, которая представляет собой упорядоченную последовательность элементов одного типа фиксированной длины.Давайте рассмотрим на примере:package main func main() { /* Массив создаётся в таком формате: Имя := [количество элементов массива] тип данных {элементы массива, через запятую} */ arr := [3]int{0, 1, 2} fmt.Println(arr[1]) } На примере выше был создан массив с 3-мя элементами и тип…

  • пятница, 30 января 2026 г. в 00:00:11
golang
Почему мы терпим факс в эпоху ИИ: Манифест Суверенной Инфраструктуры

Неделю назад мы опубликовали статью Почему финтеху нужен капитальный ремонт, а до этого От стартапа к протоколу: Почему мы решили написать свой «PostgreSQL для финансов». Мы получили много комментариев - от умеренных до резко критических. И я хочу начать с благодарности.Спасибо тем, кто нашел баги в нашем UI (мы всё поправили). Спасибо тем, кто писал "зачем это нужно, если есть PostgreSQL?". Спасибо даже тем, кто называл проект "велосипедом".Именно ваша критика заставила нас пер…

  • четверг, 29 января 2026 г. в 00:00:13
golang
Ускорение вычислений в алгоритме DRS-виртуализации через векторизацию

Переписать решение с Python на Go и получить ускорение в 35 раз — звучит приятно. Но можно ведь пойти дальше, вспомнить о возможностях современных процессоров и увеличить отрыв Go до 200 раз!Привет, Хабр! Я — Игорь Вагулин, работаю тимлидом департамента IaaS в Cloud.ru, крупнейшем в России облачном провайдере IaaS- и PaaS-сервисов. Прогресс в производительности процессоров и видеокарт привел к тому, что мы можем использовать полный перебор там, где мы раньше обходились приближениями. Сегодня на…

  • четверг, 29 января 2026 г. в 00:00:12
golang
PostgreSQL RLS в Go, Часть 2: Архитектура Highload. Паника, гонки и 10 000 партиций

В первой части было разобрано, как настроить RLS в Go, почему is_local=true спасает от утечек в PgBouncer, и как покрыть это интеграционными тестами. Если вы еще не настроили базовую изоляцию, начните оттуда.Сегодня пойдем глубже. Не будем говорить о синтаксисе. Поговорим об архитектуре. О том, почему RLS - это не просто "удобный фильтр", а нативный механизм инкапсуляции, который решает проблемы распределенных систем и рисков безопасности прямо в слое данных, не раздувая Ops-сложность д…

  • среда, 28 января 2026 г. в 00:00:13
golang
Я решил написать ухудшенный UUID по ничтожнейшим из причин

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

  • среда, 28 января 2026 г. в 00:00:12
golang
Как я сделал виджет видеозвонков для сайтов с транскрипцией речи в реальном времени

Я давно увлекаюсь и изучаю технологии WebRTC. Устанавливал для клиентов множество WebRTC медиа серверов и кастомизировал их. Но постоянно не хватало гибкости. В итоге обнаружил чистую реализацию WebRTC на Golang, которая умеет и MESH, и SFU. Сейчас буду рассказывать, что удалось разработать и в чем польза.Всё началось с простой идеи - дать возможность посетителям сайта в один клик связаться с оператором по видеосвязи. Казалось бы, задача тривиальная: WebRTC давно стал стандартом, готовых решени…

  • вторник, 27 января 2026 г. в 00:00:10