Архитектура обработки ошибок в Go: границы и паттерны
Обрабатывайте ошибки на правильном уровне.
Обработка ошибок в Go часто вызывает критику. Каждый разработчик на Go сотни раз писал этот код:
Обрабатывайте ошибки на правильном уровне.
Обработка ошибок в Go часто вызывает критику. Каждый разработчик на Go сотни раз писал этот код:
Прекратите использовать сон в конкурентных тестах на Go.
Тестирование конкурентного кода на Go всегда требовало определенной дисциплины. Горутины дешевы, каналы просты, а отмена контекста является идиоматичной — фоновые рабочие процессы и таймеры повсюду в реальных сервисах на Go.
A2A не умер, просто он не универсален.
Первый год протокола Google Agent2Agent, обычно сокращаемого до A2A, выдался странным.
Надёжные паттерны опроса для AI-агентов.
Агенты с опросом (polling agents) — одна из наименее гламурных частей архитектуры AI-ассистентов, но одновременно и одна из самых полезных.
A2A превращает агентов в равноправных участников сети.
Протокол A2A (Agent-to-Agent Protocol), аббревиатура от Agent2Agent Protocol, представляет собой открытый стандарт для взаимодействия между независимыми системами ИИ-агентов.
MCP предоставляет агентам инструменты. A2A предоставляет агентам коллег.
Архитектура AI-агентов начинает разделяться на два уровня.
Реализация CQRS на Go без лишних сложностей
CQRS — это один из тех паттернов, который часто переоценивают, усложняют и иногда ошибочно принимают за панацею от скуды обычного CRUD.
Диаграммы как код, без лишних сложностей.
Mermaid — это текстовый инструмент для создания диаграмм, предназначенный для тех, кто предпочитает описывать диаграммы текстом, а не перетаскивать блоки на холсте. Он использует синтаксис, похожий на Markdown, для описания блок-схем, диаграмм последовательностей, диаграмм классов, автоматов состояний, временных шкал, диаграмм Ганта, диаграмм сущностей и связей и многого другого.
Публикуйте знания, которые развиваются, а не просто посты.
Доминирующая модель публикации знаний в Интернете практически не изменилась с начала 2000-х годов: написать что-то, отредактировать, опубликовать и двигаться дальше.
Организуйте заметки по действиям, а не по темам.
Организация заметок по темам кажется логичной, пока у вас нет заметок о PostgreSQL в пяти разных папках и вы не можете найти ту, которая важна для решения сегодняшней проблемы.
Заметки, которые улучшаются, а не приходят в негодность.
Большинство инженерных заметок пишутся один раз и забываются. Вы фиксируете что-то во время отладки, вставляете это в какое-то место и находите через два года, не имея контекста, почему это было важно.
Выберите самый простой работающий паттерн.
Системы с одной моделью просты. Системы с несколькими моделями мощны. Сложность заключается не в выборе моделей, а в проектировании архитектуры, которая ими управляет.
Тратьте токены там, где они действительно важны.
Стоимость использования больших языковых моделей (LLM) растет линейно в зависимости от объема запросов. Система, обрабатывающая 10 000 запросов в день по цене $0,01 за запрос, обходится в $100 ежедневно — это $365 в год. В корпоративном масштабе эта сумма превышает $10 000.
Правильная модель для правильной задачи.
Запуск модели с 70 миллиардами параметров для суммаризации электронного письма из 200 слов — это расточительство. Запуск модели с 3 миллиардами параметров для ревью продакшн-кода — это безрассудство. Большинство систем находятся где-то посередине, и именно здесь в игру вступает роутинг моделей (маршрутизация запросов).
Управляйте риском, а не только моделью.
Языковые модели (LLM) непредсказуемы. Они галлюцинируют, утекают данные, генерируют вредоносный контент или отказывают в выполнению легитимных запросов. Ограничители (guardrails) constraining поведение модели без ущерба для её возможностей.
Рабочая, структурированная и память извлечения для ассистентов.
Память превращает ассистентов из реактивных в персистентные системы, но именно здесь многие системы тихо деградируют. Исследования показывают, что разделение на кратковременную и долгосрочную память больше не достаточно для современной памяти агентов; OpenAI и SDK LangGraph указывают на более простую архитектуру — рабочую память, персистентное состояние и извлечение данных.
Получайте новые материалы про системы, инфраструктуру и AI engineering.