Продолжение разбора реального кода с собеседования. В первой части разобрали 8 проблем concurrency и memory: race conditions, утечки горутин, проигнорированный mutex, TOCTOU. Это была первая половина из 21 бага в одном сервисе на 150 строк.Сегодня — вторая часть. Тут нет страшных race conditions, но есть то, что выдаёт уровень разработчика на собесе: отношение к ошибкам, валидация, API design, graceful shutdown, observability. Эти баги не упадут “вдруг” в продакшене — они будут тихо пилить вам …
От автора: Эта статья родилась из желания разобраться в том, что осталось за кадром отличного доклада.1. Введение1.1. История создания проектаВсё началось с доклада Антона Юрченко «Улучшаем качество отчётов нагрузочного тестирования с помощью Go, LangChain и GigaChat».Доклад мне понравился: чёткая постановка проблемы, грамотный подход к автоматизации, отличная идея с использованием LLM для генерации человекопонятных отчётов. Но после просмотра осталась одна проблема — код интеграции так и не по…
Go‑сервис на малых нагрузках работает идеально. Горутины дешёвые, GC быстрый, net/http из коробки тянет приличный трафик. Разработчик прогоняет функциональные тесты, видит зелёное, деплоит. Приходят 1000 RPS, и latency p99 взлетает с 50ms до 5 секунд, в логах начинают мелькать таймауты, а в Grafana рисуется красивая кривая деградации.Инструменты: vegeta и wrk2Для нагрузочного тестирования Go‑сервисов используем два инструмента.vegeta написан на Go, понимает гошные паттерны, выводит результаты в…
Я самую малость обленился и как-то давно не делал новых разборов, поэтому следующим нашим этапом деконструкции будут низкоуровневые операции. Иногда здесь будет в отрыве от аллокаторов/планировщиков и прочего, но опять же, статьи для тех, кто знает и хочет разобраться поглубже, как тут всё устроено.Поэтому, в этой части начнем с самого простого – пакета atomic.Концепции вокруг атомарных операций на уровне CPU я рассматривал здесь, поэтому советую почитать. Там мы даже пишем свой атомарный AND.!…
В первой части я рассказывал про agent-memory-mcp версии 0.1.0: MCP-сервер на Go, SQLite-хранилище, четыре типа памяти, semantic search, RAG по документации, PathGuard и transport через stdio/HTTP.Тогда это был довольно прямой инструмент: агент может сохранить знание, потом найти его по смыслу, а рядом лежит индекс документов проекта.После этого проект прожил несколько месяцев реального использования. И почти всё интересное произошло не там, где я изначально ожидал.Оказалось, что главная пробле…
Когда я начал разбираться, чем в мире опенсорса можно закрыть задачу ASOC / Vulnerability Management, выбор оказался довольно грустным. По сути единственный известный вариант это DefectDojo. Сам я его в проде не тащил, но от коллег регулярно слышал одну и ту же боль: на больших объёмах он начинает захлёбываться, и тебе просто больше не хочется заходить, а аналогов с человеческим видом и БДУ ФСТЭК «из коробки» в опенсорсе я просто не нашёл. Так и появилась моя ASOC-платформа: Go + PostgreSQL + R…
Yggdrasil - это экспериментальная оверлейная IPv6 mesh-сеть, уже неоднократно рассматривавшаяся на хабре (1 2 3). Если кратко, Yggdrasil позволяет поднять “сеть поверх сети” где у каждого узла появляется стабильный IPv6 адрес выведенный из его публичного ключа, не зависящий от того, где он физически находится и какой у него внешний IP. Узлы могут подключаться к публичным пирам, друг к другу напрямую, через локальное обнаружение, а после установления связности обычные TCP/UDP приложения могут об…
Привет, Хабр. Меня зовут Серафим Недошивин, уже как год я пишу мультитенантную ERP-подобную систему (Go, pgx | next.js, ts) для малого бизнеса и, чтобы не сойти с ума, рассказываю о проблемах, с которыми сталкиваюсь на этом нелёгком пути. В первой статье речь шла о 10 в первую очередь архитектурных проблемах (или кругах ада), включая изоляцию данных организаций, систему доступов и миграции схем базы данных.Причина, по которой написана уже эта статья, крайне проста: загнивая от усталости, дописы…
Когда-то давно, в 2012–2014 годах, мне и коллегам понадобилось собирать различные данные с большого числа различных коммутаторов и прочего сетевого оборудования.В то время у нас были в основном коммутаторы Cisco немного Moxa и немного HP.Мониторилось все это при помощи PRTG и Nagios, а для сбора данных мы использовали ПО switchmap для Cisco и собственные скрипты на PHP для Moxa. ПО в целом выполняло свою функцию, информация собиралась и помогала в работе.Однако с течением времени количество ко…