При проектировании инфраструктуры часто возникает задача поднять кластер «с чистого листа». Безусловно, Terraform и Ansible — это стандарт индустрии. Однако мне нужен был процесс быстрого получения готового кластера K8s, полностью независимый от локального окружения, чтобы запуск не требовал предварительной подготовки версий библиотек, интерпретаторов или наличия локальных файлов конфигурации.В этой реализации я намеренно упростил работу с конфигурацией: параметры виртуальных машин (CPU, RAM, д…
Уже более 6 лет я использую кастомные идентификаторы - одна из классных штук, за которые обожаю go. Они незаменимы в описании бизнес-логики - невозможно перепутать порядок идентификаторов. Все вызовы становятся типобезопасными и самодокументируемыми. И писать такой легкочитаемый код очень приятно. Применяю кастомные id очень широко - от парсинга http-запроса до слоя данных.В статье подробно рассказываю:"как было" раньше (и осталось для кадастровых номеров, например),переход от кастомиза…
В этой статье мы рассмотрим практический пример написания API-автотестов на Go с использованием Axiom, Allure, Testify и Resty. Цель — показать, как может выглядеть тестовый проект, построенный с учётом лучших практик и ориентированный не на инфраструктуру, а на проверку бизнес-логики.В результате у нас получатся «скучные» автотесты. Скучные — потому что чистые, предсказуемые и легко читаемые. В самих тестах не будет логики инициализации клиентов, конфигураций, логирования или интеграций с внеш…
Всем привет! Меня зовут Дима, некоторые меня тут уже знают, и сегодня я расскажу о том, как я создал 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 итерацийПочему не о…
Привет, Хабр.Хотим вам рассказать об одной из первых наших новинок 2026 года, которую с тем же успехом можно считать и вторым изданием, и переизданием отлично зарекомендовавшей себя книги о микросервисах. Речь под катом пойдёт о книге Юлии Поповой «Go: разработка приложений в микросервисной архитектуре с нуля».И даже до выхода у этой книги уже есть история.С автором этой книги я заочно познакомился через одну из бывших коллег Екатерину Черских @MarkOcean, вместе с которой в своё время занимался…
Для начала хотелось бы сказать, что же такое массивы и слайсы.МассивыМассив в Go - это структура данных, которая представляет собой упорядоченную последовательность элементов одного типа фиксированной длины.Давайте рассмотрим на примере:package main func main() { /* Массив создаётся в таком формате: Имя := [количество элементов массива] тип данных {элементы массива, через запятую} */ arr := [3]int{0, 1, 2} fmt.Println(arr[1]) } На примере выше был создан массив с 3-мя элементами и тип…
Неделю назад мы опубликовали статью Почему финтеху нужен капитальный ремонт, а до этого От стартапа к протоколу: Почему мы решили написать свой «PostgreSQL для финансов». Мы получили много комментариев - от умеренных до резко критических. И я хочу начать с благодарности.Спасибо тем, кто нашел баги в нашем UI (мы всё поправили). Спасибо тем, кто писал "зачем это нужно, если есть PostgreSQL?". Спасибо даже тем, кто называл проект "велосипедом".Именно ваша критика заставила нас пер…
Переписать решение с Python на Go и получить ускорение в 35 раз — звучит приятно. Но можно ведь пойти дальше, вспомнить о возможностях современных процессоров и увеличить отрыв Go до 200 раз!Привет, Хабр! Я — Игорь Вагулин, работаю тимлидом департамента IaaS в Cloud.ru, крупнейшем в России облачном провайдере IaaS- и PaaS-сервисов. Прогресс в производительности процессоров и видеокарт привел к тому, что мы можем использовать полный перебор там, где мы раньше обходились приближениями. Сегодня на…
В первой части было разобрано, как настроить RLS в Go, почему is_local=true спасает от утечек в PgBouncer, и как покрыть это интеграционными тестами. Если вы еще не настроили базовую изоляцию, начните оттуда.Сегодня пойдем глубже. Не будем говорить о синтаксисе. Поговорим об архитектуре. О том, почему RLS - это не просто "удобный фильтр", а нативный механизм инкапсуляции, который решает проблемы распределенных систем и рисков безопасности прямо в слое данных, не раздувая Ops-сложность д…