App Architecture

Ограничение конкурентности в Go: errgroup, пулы воркеров и backpressure

Ограничение конкурентности в Go: errgroup, пулы воркеров и backpressure

Ограничивайте объём незавершённых работ, а не просто отменяйте их.

Неограниченный fan-out — это режим отказа по умолчанию в конкурентной среде Go: каждая инструкция go — это ещё одна задача в работе, без ограничений и без владельца. Эта статья о том, как дать им и то, и другое.

Веб-фреймворки для Go в 2026 году: сравнение net/http, chi, Gin, Echo и Fiber

Веб-фреймворки для Go в 2026 году: сравнение net/http, chi, Gin, Echo и Fiber

Пять стеков Go HTTP, одна тестовая установка, реальные цифры.

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

Синхронизация спецификаций, тестов и кода в разработке ИИ

Синхронизация спецификаций, тестов и кода в разработке ИИ

Не позволяйте AI-агентам отклоняться от спецификаций, тестов и кода.

Агенты ИИ для написания кода быстро выпускают функции, но спецификации, тесты и код незаметно расходятся. Этот гид описывает модель прослеживаемости, маппинг спецификаций на тесты и код, а также проверки CI, которые выявляют расхождения перед слиянием.

Очереди мертвых писем: обработка «отравленных» сообщений в распределенных системах

Очереди мертвых писем: обработка «отравленных» сообщений в распределенных системах

Предотвращение блокировки очередей из-за отравляющих сообщений

Очередь мёртвых писем (Dead-Letter Queue, DLQ) — это страховочная сеть, которая перехватывает сообщения, не поддающиеся обработке потребителями, чтобы одно неисправное сообщение не блокировало очередь и не приводило к тихой потере всех последующих сообщений.

Паттерн Circuit Breaker в Go: предотвращение каскадных сбоев

Паттерн Circuit Breaker в Go: предотвращение каскадных сбоев

Предотвращайте каскадные сбои в микросервисах на Go.

Тайлбрейкер (circuit breaker) предотвращает «бомбардировку» ваших Go-сервисов отказывающей зависимостью, защищая от каскадных сбоев, которые истощают горутины, сокет-соединения и память, пока вся система не рухнет.

Workflow спецификации-управляемой разработки: от требований к коду

Workflow спецификации-управляемой разработки: от требований к коду

Пять фаз: от намерения к верифицированному коду.

Разработка на основе спецификаций (Spec-Driven Development, SDD) работает тогда, когда спецификация является рабочим процессом, а не документом, который архивируют после запуска проекта. Цель — не создать большой документ требований к продукту.

Паттерн транзакционного почтового ящика в Go с PostgreSQL

Паттерн транзакционного почтового ящика в Go с PostgreSQL

Записывайте событие вместе с данными. Никогда не разделяйте их.

Два обновления, которые должны выполниться вместе, в итоге могут завершиться ошибкой по отдельности.

Ваш сервис заказов сохраняет заказ в базе данных, а затем публикует событие order.created в брокере сообщений.

Что такое спецификация-ориентированная разработка? Спецификация как источник истины

Что такое спецификация-ориентированная разработка? Спецификация как источник истины

«Спецификация как источник истины, а не вспомогательный документ».

Разработка на основе спецификаций (Spec-Driven Development) — это одна из тех идей, к которым инженеры по софту обращались ранее, а затем откладывали, когда усилия переставали приносить отдачу.

Решения при разработке программного обеспечения с использованием ИИ

Решения при разработке программного обеспечения с использованием ИИ

Держите намерение близко к коду.

Записи о принятых решениях — это недостающий слой памяти в разработке программного обеспечения с помощью ИИ. Они фиксируют не только то, что было построено, но и почему — и это различие становится критически важным, когда ваш код пишут инструменты на базе искусственного интеллекта.

Тестирование конкурентного кода на Go с помощью synctest

Тестирование конкурентного кода на Go с помощью synctest

Прекратите использовать сон в конкурентных тестах на Go.

Тестирование конкурентного кода на Go всегда требовало определенной дисциплины. Горутины дешевы, каналы просты, а отмена контекста является идиоматичной — фоновые рабочие процессы и таймеры повсюду в реальных сервисах на Go.

Идемпотентность в распределенных системах, которая действительно работает

Идемпотентность в распределенных системах, которая действительно работает

Избегайте дублирования побочных эффектов

Идемпотентность в распределённых системах — это свойство, которое спасает вас, когда сеть врёт, очередь повторяет отправку, клиент паникует, а оператор нажимает «повтор». В продакшен-системах дублированная доставка — это норма. Дублирование побочных эффектов — это ошибка.

Чат-платформы как системные интерфейсы в современных системах

Чат-платформы как системные интерфейсы в современных системах

Чат-платформы в качестве контрольных плоскостей для систем

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

Шаблон интеграции Discord для уведомлений и контуров управления

Шаблон интеграции Discord для уведомлений и контуров управления

Превратите Discord в безопасную интерактивную шину оповещений.

Discord становится серьезной поверхностью интеграции, когда к нему относятся именно так: как к месту, где системы публикуют события, люди принимают решения, а автоматизация продолжает рабочий процесс.