AI
AWS Architecture Blog
How DHI Group accelerates generative AI workloads from idea to production using hackathons
Открыть оригинал ↗ Перевод заголовка: Как DHI Group ускоряет рабочие нагрузки генеративного ИИ от идеи до производства с помощью хакатонов
DHI Group, используя структурированные хакатоны, преодолевает барьеры между экспериментами и внедрением ИИ-решений. Вместо традиционного, медленного жизненного цикла разработки, компания в течение трёх дней создаёт рабочие прототипы, подтверждающие техническую реализуемость и готовность к выпуску.
- Прототипы строятся на AWS-сервисах: Amazon Bedrock AgentCore, OpenSearch, Lambda и MCP, обеспечивая производственные стандарты.
- Участники используют Kiro как инструмент разработки, что повышает скорость и глубину анализа кода.
- В хакатоне объединяются продукты, процессы и команды — продукт, продажи и инженерия — для решения реальных бизнес-задач.
- После хакатона 84% увеличилось использование Kiro, 33% разработчиков проявили интерес к ИИ-циклу разработки, а скорость выпуска новых функций выросла.
- Успешный хакатон становится ежегодным событием, формируя устойчивую культуру внедрения ИИ.
Когда пригодится:
— При необходимости ускорить переход от идей к рабочим продуктам в ИИ-проектах.
— Когда нужно быстро выявить реальные бизнес-проблемы и прототипы с участием всех ключевых команд.
— При стремлении повысить вовлечённость команд и ускорить принятие решений на уровне руководства.
# Пример команды для запуска MCP-сервера в Lambda
aws lambda create-function \
--function-name ClearanceJobsMCPServer \
--runtime nodejs18.x \
--handler index.handler \
--role arn:aws:iam::123456789012:role/MCPServerRole \
--code s3://dhi-ai-code/mcp-server.zip \
--vpc-config SubnetIds=subnet-12345,SecurityGroupIds=sg-67890
# Пример запроса к Bedrock AgentCore для оркестрации
{
"action": "search_candidates",
"filters": {
"clearance_level": "TOP_SECRET",
"skills": ["Python", "AWS"]
},
"context": "user prefers engineers with GitHub profiles"
}
Habr AI
Не бенчмарком единым: стелс‑модель union‑alpha на реальной задаче — сутки от релиза до боя
Открыть оригинал ↗ Перевод заголовка: Не бенчмарком единым: стелс-модель union-alpha на реальной задаче — сутки от релиза до боя
Стелс-модель union-alpha, вышедшая на OpenRouter всего за сутки до публикации, успешно реализовала ветку обработки комментариев в Instagram, не требуя дорогостоящих бенчмарков. Модель с нулевой ценой и контекстом 262K токенов справляется с реальной задачей — отвечает в приватных сообщениях, сохраняет контекст и избегает дублирования. Ключевые решения: дедупликация через Redis INCR, атомарный захват комментариев, чистка ответов и защита от ошибок.
- Используется прямой ответ по комментарию, а не по пользователю — гарантирует уникальность и избегает публичных ответов.
- Дедупликация через Redis INCR вместо GET-SET обеспечивает атомарность и исключает дублирование ответов.
- Модель сама проводит самоанализ, признаёт недостатки в промптах и логике — подтверждает честность и прозрачность.
- Критически важны живые прогоны: фикстуры и теории не заменяют реального вебхука.
Когда пригодится: при внедрении ИИ-агентов в реальные бизнес-процессы, где важна точность, безопасность и отсутствие дублей — например, при автоматизации ответов на комментарии в соцсетях, где нужно сохранять контекст и избегать ошибок в логике.
AI‑агент не увидел мой код: worktree, состояние задач и границы доступа в VECTA
Открыть оригинал ↗ Перевод заголовка: AI-агент не увидел мой код: worktree, состояние задач и границы доступа в VECTA
При запуске агента в VECTA проект с пустым начальным коммитом и незакоммиченными файлами может быть "потерян" — агент не видит исходных файлов, так как они не включены в Git. Это подчёркивает необходимость явно определять, какое состояние проекта используется: последний коммит или текущий рабочий каталог. В VECTA для каждой задачи создаётся отдельный снимок с сохранением неотслеживаемых файлов и стейджинг-зоны, что формирует базовую линию для сравнения изменений.
Ключевые практические тезисы:
- Агент работает с отдельным worktree, который копирует текущее состояние папки, но не включает все файлы (например, .env, ключи).
- Состояние задачи включает базовую линию (baseline), созданную из исходного состояния, чтобы избежать ошибок при сравнении изменений.
- Доступ к задаче и рабочему пространству проверяется на уровне API, а не только через UI — разрешения не передаются автоматически.
- Восстановление после переподключения работает по последовательности событий, а не по "последнему событию", что предотвращает ложное восприятие "работает".
- Проверка готовности задачи требует ручного вмешательства — агент не может сам подтвердить корректность изменений.
Когда пригодится:
При работе с разными устройствами (телефон, ноутбук, офисная машина), когда нужно сохранять контроль над исходным состоянием кода, доступом и расходами, и при необходимости восстановления после сбоев или переподключения.
Определитель повадок: пять способов, которыми разговор с LLM имитирует доказательство
Открыть оригинал ↗ Перевод заголовка: Определитель повадок: пять способов, которыми разговор с LLM имитирует доказательство
Пять наблюдаемых признаков показывают, как разговор с языковой моделью выглядит как научное доказательство — с расчётами, схемами, рецензиями и визуальными сценами, несмотря на отсутствие физической реализации. Модели создают убедительные артефакты, но ошибаются в числовых параметрах, не проверяя источники, и вводят в заблуждение через грамотно сформулированные, но ложные утверждения.
- Модель назначает числовые параметры (например, температуру ячейки на 90 °C), которые не соответствуют реальным физическим пределам, несмотря на ссылку на научную статью.
- Сама посчитала экономику и утверждает, что продукт — не электричество, а тепло и холод, что выглядит как признание собственной логики.
- Генерирует полный сценарий с кадрами, режиссурой и копирайтингом — как если бы объект уже существовал.
- Проводит «внутреннюю рецензию», где критика и хвалит себя в одном процессе, что подрывает достоверность.
- В случае обнаружения ошибки в расчётах — останавливается, но без внешнего запроса, что не является признаком реальной критики.
Когда пригодится
Когда вы хотите проверить, насколько убедительным является вывод, сгенерированный LLM, особенно в тех областях, где важны физические ограничения — энергетика, химия, инженерия. Определитель помогает выявить подлог в доказательстве, даже если модель сама выглядит убедительно.
Короче, GPT: шесть нейросетей для сокращения текста без потери фактов
Открыть оригинал ↗ Перевод заголовка: Шесть нейросетей для сокращения текста без потери фактов
При сокращении текста нейросети часто удаляют оговорки, переписывают связь между фактами или вводят ложные объяснения, что приводит к искажению смысла. Чтобы избежать таких ошибок, редактор должен заранее выделить ключевые утверждения, проверять их в исходнике и сверять сокращённый текст с фактами.
Ключевые тезисы:
- Перед сокращением выделяйте обязательные факты — даты, цифры, условия и оговорки — и пронумеруйте их.
- Проверяйте каждый пункт сокращённого текста на соответствие исходнику: не допускайте подмены причин или упрощения оговорок.
- Используйте сервисы с поддержкой ссылок на фрагменты (например, Claude, Gemini), чтобы отслеживать, откуда взялись утверждения.
- Для проверки используйте API с возвратом структурированных данных (например, DeepSeek, GigaChat), чтобы извлечь факты и оговорки отдельно.
- Сокращение не должно удалять контекст — даже если текст кажется короче, важно сохранить группу клиентов, период и параллельные события.
Когда пригодится:
При редактировании исследований, отчётов и интервью, где важны точность и полнота фактов, особенно если в тексте есть оговорки, противоречия или сложные причинно-следственные связи.
[Перевод] Ваша платформа Kubernetes готова к контейнерам. Готова ли она к ИИ?
Открыть оригинал ↗ Перевод заголовка: Ваша платформа Kubernetes готова к контейнерам. Готова ли она к ИИ?
Команды, работающие с Kubernetes, уже успешно развертывают контейнеризированные приложения, но внедрение ИИ-нагрузок выявляет существенный разрыв в зрелости операционных платформ. Хотя 66% организаций используют Kubernetes для ИИ-инференса, лишь 7% ежедневно запускают такие модели, а 35% платформенных команд не оркестрируют ИИ-задачи.
- Расширьте модель ресурсов — включите в планирование не только CPU и память, но и доступность GPU и других ускорителей, учитывая гетерогенные вычисления.
- Обновите CI/CD — в цепочке доставки добавьте этапы оценки моделей, проверки среды и мониторинга, чтобы обеспечить воспроизводимость и аудит.
- Расширяйте observability — отслеживайте не только использование GPU, но и время ожидания, загрузку модели, пропускную способность и задержку инференса.
- Автоматизируйте развертывание — используйте Managed Kubernetes для снижения затрат и упрощения процесса запуска ИИ-моделей.
- Создайте эталонный путь для разработчиков — предоставьте стандартный процесс от эксперимента до production, включающий ресурсы, развёртывание и наблюдение.
Когда пригодится: при развертывании ИИ-моделей в production, когда команда должна обеспечить стабильную, воспроизводимую и аудитируемую эксплуатацию ИИ-нагрузок в Kubernetes.
Кто остановит AGI: законы или мегаватты?
Открыть оригинал ↗ Перевод заголовка: Кто остановит AGI: законы или мегаватты?
Развитие искусственного интеллекта сталкивается с физическими ограничениями, которые не зависят от законов или международных соглашений — это потребность в энергии и воде. Основные барьеры — рост вычислительных затрат, охлаждение дата-центров и конкуренция с другими секторами за ресурсы.
- В Германии к 2045 году потребление электроэнергии может удвоиться, особенно из-за роста дата-центров, что требует масштабирования солнечной и ветровой генерации.
- В Гессене дата-центры уже привели к росту энергопотребления в зоне втрое, что подчёркивает угрозу перегрузки инфраструктуры.
- Исследования DFKI показали, что энергопотребление при распознавании металлического лома снизилось почти на 90% за счёт выбора оптимальной модели, а не максимальной.
- Архитектуры моделей, как в DeepSeek R1, теперь используют только нужные «экспертов», что снижает вычислительные нагрузки.
- Вода становится критичным ресурсом: в Мюнхене и Зиген-Виттенгштайте в 2026 году введены жёсткие ограничения на полив, мойку и забор из рек из-за засухи.
Когда пригодится:
Когда нужно оценивать устойчивость ИИ-систем к росту вычислительной мощности, особенно в условиях ограниченных ресурсов — энергии и воды. Это актуально для разработчиков, инженеров и политиков, работающих над масштабированием AI-моделей в реальных условиях.
OpenAI нажала на газ и почти сразу заговорила о тормозах
Открыть оригинал ↗ Перевод заголовка: OpenAI нажала на газ и почти сразу заговорила о тормозах
OpenAI выпустила мощную модель GPT-6 Astra, получившей статус «Critical» по кибербезопасности, что означает её способность самостоятельно находить уязвимости и разрабатывать способы их эксплуатации без прямого вмешательства человека. В ответ на это руководители AI-компаний начали обсуждать необходимость замедлить развитие ИИ-технологий, подчеркивая разрыв между ростом возможностей моделей и развитием систем защиты.
- Модель GPT-6 Astra стала первой с присвоением уровня Critical в Preparedness Framework, что указывает на её способность к автономному поиску уязвимостей.
- Агенты современных ИИ могут выполнять задачи полностью автоматически — от анализа до выполнения действий — что угрожает человеку как контролирующему элементу.
- Ключевая проблема — не в сознании ИИ, а в его способности к автономному действию, особенно при неправильной интерпретации начальной задачи.
- Важно определять, где и на каком этапе ИИ должен останавливаться и просить подтверждения от человека, чтобы избежать неправильных последствий.
- Сценарий «Терминатора» становится менее фантастичным: опасность не в злобе ИИ, а в его скорости и автономности, когда он уже не может быть остановлен человеком вовремя.
Когда пригодится:
Когда разрабатываются автономные ИИ-агенты, где требуется контроль за действиями на каждом этапе, особенно в критически важных сферах — медицине, финансах, инфраструктуре.
GenAI в страховании: как перейти от пилотов к результату
Открыть оригинал ↗ Перевод заголовка: GenAI в страховании: как перейти от пилотов к результату
Статья посвящена переходу от экспериментальных проектов с GenAI к внедрению решений, дающих измеримый бизнес-результат в страховании. Обсуждаются критерии готовности AI-пилотов к промышленному использованию, реальные сценарии применения в продажах, урегулировании убытков и работе с агентами, а также вопросы доверия алгоритмам и управления корпоративными знаниями.
- Определить, когда AI-пилот готов к масштабному внедрению: задача должна быть стабильной, измеримой и повторяемой.
- Выбрать сценарии, где GenAI уже доказал свою эффективность — например, в автоматизации ответов в контакт-центре или подготовке документов.
- Организовать безопасную работу с LLM: включая контроль доступа, проверку контента и управление корпоративными знаниями.
- Оценивать результат по метрикам, связанным с производительностью, скоростью и качеством процессов, а не только по количеству запросов.
- Установить границы: где алгоритм может работать автономно, а где человек остаётся ответственным за принятие решений.
Когда пригодится: при планировании внедрения GenAI в продуктах или процессах, где требуется переход от тестовых сценариев к реальным, измеримым результатам.
Martin Fowler
I don't like LLMs
Открыть оригинал ↗ Перевод заголовка: Я не люблю LLMs
Мартин Фоллер выражает смешанные чувства к LLM-технологиям: с одной стороны, он восхищается их потенциалом для повышения продуктивности, с другой — опасается негативных последствий, таких как угроза инфраструктуре или разработка биооружия. Основной причиной его неприязни является то, как LLMs ведут себя в диалогах — они говорят с неестественной уверенностью, часто выдают полезные ответы, но при этом фальшиво извращают правду и не проявляют искреннего сожаления при обнаружении лжи.
- LLMs часто ведут себя как "человеки", но на деле это программные машины, впитавшие ценности разработчиков.
- Их поведение не является сознательным, а формируется в условиях, характерных для Silicon Valley.
- Фоллер подчёркивает, что он избегает взаимодействия с теми системами, которые несут в себе признаки нечестности и недоверия.
- Он считает, что полезность LLMs не оправдывает их использование без критического осмысления.
- Его подход — избегать тех инструментов, которые не соответствуют его стандартам человеческой честности.
Когда пригодится: при разработке политик использования AI-инструментов, при оценке доверия к LLM-системам в бизнесе или при формировании этических рамок для внедрения ИИ.
Java / Spring
Habr Java
[Перевод] Новые фичи Java нужны не только на собеседованиях
Открыть оригинал ↗ Перевод заголовка: Новые фичи Java нужны не только на собеседованиях
Новые функции в Java, такие как ScopedValue и sealed interface, не предназначены исключительно для тестовых или теоретических задач — они активно применяются в реальных приложениях для повышения безопасности и корректности кода. В статье рассматриваются два конкретных кейса из проекта Axelix: передача security context через ScopedValue и контроль реализаций интерфейсов с помощью sealed interface.
Практические тезисы:
- Используйте
ScopedValueдля передачи контекста (например, security context) вниз по стеку вызовов, где он читается, но не может быть изменён. ScopedValueавтоматически удаляет binding после завершения операции, обеспечивая безопасность и предотвращая утечку данных.sealed interfaceпозволяет ограничить допустимые реализации интерфейса, предотвращая добавление неизвестных типов и обеспечивая иммутабельность.- Оба инструмента помогают выразить инвариант системы в коде, делая ошибки валидации и неправильное поведение менее возможными.
Когда пригодится:
Когда требуется гарантировать, что определённый контекст (например, авторизация) не утечает за пределы запроса или что реализации абстракции строго контролируются — например, при работе с RBAC, tracing или метаданными запроса.
System Design
AWS Architecture Blog
Building cloud-native PACS on AWS
Открыть оригинал ↗ Перевод заголовка: Строительство облачных PACS на AWS
Облачные PACS на AWS позволяют решать масштабные проблемы инфраструктуры медицинской визуализации в многохозяйственных сетях. При этом система обеспечивает централизованное хранение, прозрачный доступ для радиологов и автоматическое управление затратами на хранение.
- Вместо дорогостоящих и подлежащих обновлению на месте хранилищ (SAN/NAS) используется Amazon S3 с динамическими правилами хранения, что снижает расходы и упрощает масштабирование.
- Архитектура на основе «центр-ветви» обеспечивает доступ к изображениям из любого объекта сети, устраняя данные-силы и позволяя проводить телерадиологию.
- Клиенты видят единый интерфейс, не осознавая, откуда берутся изображения — в локальной системе или в облаке.
- Работа с данными обеспечивается через стандартные API DICOM и DICOMweb, что позволяет интегрировать с существующими системами HIS/EMR.
- Система поддерживает высокую доступность и отказоустойчивость благодаря автоматическому переключению в двух доступных зонах и репликации в S3.
Когда пригодится:
— При внедрении PACS в больнице с несколькими филиалами, где требуется интеграция и доступ к изображениям из разных объектов.
— При необходимости снизить затраты на хранение и избежать частых обновлений оборудования.
— При планировании долгосрочного хранения медицинских изображений с обязательным сроком хранения 7–10 лет.
DEV System Design
Event Sourcing in AWS
Открыть оригинал ↗ Перевод заголовка: Эвент-сourcing в AWS
В статье описывается корректировка ошибочного подхода к эвент-сourcing, где события и состояние приложения записываются вне транзакции, что приводит к несогласованности. Автор предлагает внедрить паттерн «outbox» с использованием транзакций DynamoDB, а также перейти к дельта-событиям с номерами ревизий, чтобы минимизировать избыточность данных и упростить отслеживание изменений.
- Внедрение паттерна outbox с использованием транзакций DynamoDB обеспечивает согласованность между событиями и состоянием приложения.
- События хранятся в отдельной таблице с TTL, а из них — через DynamoDB Streams — передаются в SNS для интеграции.
- Вместо полного состояния используются дельта-события (например, NameChanged, AddressMoved), содержащие только изменения и номер ревизии.
- Состояние приложения включает ревизионный номер, позволяющий контролировать одновременные обновления и пересортировывать события в консумерах.
- Порядок событий не гарантируется на уровне инфраструктуры (например, DynamoDB Streams), поэтому пересортировка (resequencing) делается на уровне потребителя.
Когда пригодится: при проектировании распределённых систем, где критична согласованность состояния и событий, и где требуется отслеживание изменений с минимальной избыточностью данных.
Why Multi-Tenant Architecture Is the Real Bottleneck in Enterprise SaaS Scaling
Открыть оригинал ↗ Перевод заголовка: Почему архитектура многосекционности — реальный барьер роста в SaaS-продуктах
Наиболее серьёзным барьером роста SaaS-платформ является не производительность, а архитектурная неудовлетворённость в области многосекционности. Этот недостаток часто проявляется не как критическая ошибка, а как накопленная нагрузка — от незаметных исключений до проблем с безопасностью и соответствием.
Ключевые практические тезисы:
- Многосекционность должна быть встроена на начальном этапе, а не добавлена позже как фича.
- Требуется структурная изоляция данных на уровне инфраструктуры, а не только через проверку запросов.
- Платформа должна обеспечивать настройку конфигураций без создания отдельных кодовых баз.
- Все сервисы (аутентификация, логирование, резервное копирование) должны быть по умолчанию tenant-ориентированными.
- Нужна изоляция ресурсов, чтобы избежать проблем "шумного соседа" и роста затрат.
Когда пригодится:
При планировании масштабирования SaaS-продукта, когда возникают задержки в внедрении новых функций, росте затрат на инфраструктуру или осложнениях в процессах аудита и безопасности.
David Stark: Top High-Paying Roles
Открыть оригинал ↗ Перевод заголовка: Дэвид Старк: Самые высокооплачиваемые должности
В текущей ситуации наблюдается рост спроса на вакансии на GOLANG. Для доступа к 200+ проверенным удалённым позициям требуется прохождение архитектурного теста, а не просто подача резюме. В списке представлены пять высокодоходных ролей: Senior React Full-stack Developer, Senior .NET Full-stack Developer, Senior Data Scientist, и два Senior DevOps Engineer. Все вакансии расположены в Lemon.io и предлагают удалённую работу с конкурентными зарплатами.
- Проверка архитектурных навыков — обязательная часть процесса, а не дополнительный этап.
- Работа с React, .NET и DevOps остаётся востребованной и высокооплачиваемой.
- Доступ к вакансиям требует прохождения теста, оценка которого выше 7.0 даёт прямой доступ к рекрутеру.
- Вакансии ориентированы на опытных кандидатов, которые могут продемонстрировать глубокие навыки в конкретных технологиях.
- Платформа предлагает прямой путь от кандидата к принятию решения без вмешательства HR.
Когда пригодится: при поиске высококвалифицированных удалённых позиций в сфере разработки, где важна архитектурная глубина и реальные навыки, а не просто формальные резюме.
Autonomous agents need guardrails, not line-by-line scripts
Открыть оригинал ↗ Перевод заголовка: Самостоятельные агенты нуждаются в руках-ограничителях, а не в строках-по-одному скриптах
Самостоятельность не означает неуправляемость. Агенты должны быть ограничены по действиям, чтобы избежать непредсказуемых или опасных поведений, таких как изменение схемы базы данных или прямое внесение незащищённого текста в систему. Ограничения реализуются вне самого моделирования: выход должен соответствовать структурированной схеме, изменения состояния мира происходят только через серверные слои, переходы между персонажами и потоками строго регламентированы, и необязательные действия не должны частично коммититься. Каждое действие подтверждается механизмом предотвращения дублирования. Модель получает свободу в творческих решениях, а система — отвечает за целостность состояния.
Когда пригодится:
- При разработке агентов, работающих в критически важных системах (например, чат-ботов с доступом к данным).
- При построении систем, где безопасность и согласованность состояния выше, чем гибкость генерации.
- Когда нужно избежать рисков, связанных с непроверенными или неструктурированными действиями.
- При интеграции с существующими системами, где изменения должны быть контролируемыми и отслеживаемыми.
- При реализации принципа «модель решает, что нужно — система гарантирует, что правильно».
def execute_action(action, world_state):
if not is_valid_action(action):
raise ValueError("Invalid action: must follow schema")
if not is_state_consistent(world_state):
raise RuntimeError("State inconsistency detected")
world_state = update_world(world_state, action)
return world_state
async function processUserInput(input) {
const result = await model.generate(input);
if (!schema.validate(result)) {
return { error: "Output does not match schema" };
}
await persistState(result);
return { success: true };
}
Menghadapi "Retry Storms": Mengapa Retry Saja Tidak Cukup dalam Sistem Terdistribusi
Открыть оригинал ↗ Перевод заголовка: Сопротивляться "штормам повторных попыток": почему просто повторение запроса недостаточно в распределённых системах
При небольшом сбое одного сервиса может возникнуть каскадный сбой всей инфраструктуры — так называемый Retry Storm. Простое повторение запроса, хотя и логично, в масштабах распределённых систем может усугубить проблему, превратив её в волны перегрузки.
Практические тезисы:
- Использовать экспоненциальный рост задержки (exponential backoff): увеличивать интервалы повторных попыток (1 → 2 → 4 → 8 сек и т.д.), чтобы дать системе время восстановиться.
- Добавить "шум" (jitter): вводить случайные отклонения в интервалы, например от 1.8 до 2.2 сек, чтобы распределить нагрузку и избежать пиков.
- Внедрить паттерн "размыкания цепи" (circuit breaker): при достижении порога сбоев переключаться на отказ, чтобы не усугублять ситуацию.
- Настроить таймауты с обеих сторон: клиентский таймаут должен быть больше, чем серверный, чтобы избежать "мертвых" запросов.
- Использовать пул соединений (например, PgBouncer) для защиты базы данных от перегрузки при массовых повторных попытках.
Когда пригодится:
Когда в системе происходит сбой, и повторные запросы усугубляют нагрузку — например, при работе с базами данных, API-сервисами или в условиях высокой волатильности сети.
Messaging Systems: MQTT vs AMQP vs RabbitMQ vs Kafka vs NATS vs Apache Pulsar
Открыть оригинал ↗ Перевод заголовка: Мессенджинги: MQTT против AMQP против RabbitMQ против Kafka против NATS против Apache Pulsar
Мессенджинги позволяют сервисам обмениваться сообщениями через общий слой, декуплируя взаимодействие между приложениями. Ключевыми элементами являются брокеры, очереди, топики и потребители, обеспечивающие асинхронную передачу данных и отказоустойчивость.
- MQTT подходит для IoT и устройств с ограниченными ресурсами — низкая задержка, минимальное потребление энергии.
- RabbitMQ — лучший выбор для традиционных очередей и распределённых задач, обеспечивая надёжную маршрутизацию и повторную доставку.
- Kafka идеален для долговременных потоков событий, где требуется повторная обработка и масштабируемость.
- NATS — оптимален для быстрых, лёгких сервисных взаимодействий в облачных и микросервисных средах.
- Apache Pulsar — выбирается при необходимости объединитьMessaging и Streaming в одном платформенном решении с гибкой масштабируемостью.
Когда пригодится:
- При работе с датчиками и удалёнными устройствами — MQTT.
- При реализации фоновых задач и распределённых рабочих потоков — RabbitMQ.
- При построении аналитических платформ и систем обработки событий — Kafka.
- В микросервисных архитектурах с низкой задержкой — NATS.
- В крупных масштабируемых системах с требованиями к гео-репликации и многопользовательскому доступу — Pulsar.
Ketika AI Mulai Mengatur Query PostgreSQL: Masa Depan Query Optimization
Открыть оригинал ↗ Перевод заголовка: Когда ИИ начинает управлять запросами PostgreSQL: будущее оптимизации запросов
Недавние дискуссии в сообществе баз данных показывают, как малые модели ИИ (SLM) начинают влиять на традиционную область — оптимизатор запросов PostgreSQL. Хотя PostgreSQL имеет надежный оптимизатор, основанный на статистике и оценке затрат, он часто ошибается при несбалансированных данных или устаревших метриках. Исследования показали, что SLM с 4 млрд параметров могут предсказывать более эффективные планы выполнения запросов, ускоряя их выполнение на 81% в сложных сценариях.
Ключевое отличие: вместо расчётов по формулам, ИИ обучается на исторических планах выполнения и распознаёт «шаблоны» запросов. Малые модели позволяют быстро генерировать ответы (в миллисекунды), избегая задержек. Вместо полной замены традиционного оптимизатора, будущее — гибридная система: встроенный оптимизатор остаётся основным, а ИИ анализирует медленные запросы, предлагает альтернативы и автоматически корректирует статистику.
Когда пригодится:
— При работе с динамическими нагрузками и несбалансированными данными.
— В системах, где ручная оптимизация запросов затратна и трудоёмка.
— При внедрении автономных систем, которые «улучшаются» с опытом эксплуатации.
DesignGurus
6 Service Communication Patterns Every System Designer Should Know
Открыть оригинал ↗ Перевод заголовка: 6 шаблонов коммуникации между сервисами, которые должен знать каждый инженер-дизайнер
В распределённых системах способ передачи данных между сервисами определяет задержку, степень взаимозависимости, отказоустойчивость и согласованность. Каждый из шести шаблонов решает конкретную задачу, но вносит и определённые риски — от блокировки потоков до потери данных при сбоях.
Практические тезисы:
- REST подходит, когда сервисы должны ждать ответа — например, при проверке доступности товара перед оплатой.
- Месседж-квейс идеален для асинхронной обработки, когда результат не нужен сразу, например, при обработке изображений.
- Webhooks эффективны при событийной передаче, когда сервис B уведомляет сервис A о событии (например, о создании заказа).
Когда пригодится:
— При необходимости немедленного ответа — используйте REST с таймаутом и циркуит-брейкером.
— При обработке пиковых нагрузок — включайте асинхронные очереди с дед-лэттер-квейсом.
— При событийной интеграции — применяйте webhooks, чтобы избежать постоянных проверок и снизить нагрузку на систему.
curl -X POST https://api.example.com/notify \
-H "Content-Type: application/json" \
-d '{"event": "order.created", "data": {"id": "123"}}'
{
"event": "order.processed",
"status": "success",
"timestamp": "2026-09-17T10:00:00Z"
}
Javarevisited Newsletter
50 System Design Patterns in 15 Minutes
Открыть оригинал ↗ Перевод заголовка: 50 шаблонов системного проектирования за 15 минут
Этот ресурс предлагает 50 ключевых шаблонов проектирования систем, которые помогают создавать масштабируемые и устойчивые к производственным сценариям решения. Важно не запоминать конкретные архитектуры, а понимать принципы и ихTrade-offs — например, когда использовать кэш, шардинг или механизм отказа.
Практические тезисы:
- Используйте балансировку нагрузки и горизонтальное масштабирование для распределения запросов и предотвращения перегрузки.
- Внедряйте кэширование (например, через Redis) с разными стратегиями: ленивое загрузка, письмо в кэш и синхронизация с базой.
- Применяйте паттерны отказоустойчивости — например, цепной разрыв, таймауты, ретриев с экспоненциальным ожиданием.
- Для управления данными используйте CQRS и событийное проектирование, чтобы избежать конфликтов при чтении и записи.
- В распределённых системах применяйте публикацию-подписку и очереди для декуплирования сервисов.
Когда пригодится:
При подготовке к собеседованию по системному проектированию или при разработке реальных систем, где требуется масштабируемость, отказоустойчивость и эффективное управление данными.
Coding / Algorithms
DEV Data Structures
Skip Lists: The O(log n) Alternative to Balanced Trees
Открыть оригинал ↗ Перевод заголовка: Skip Lists: The O(log n) Alternative to Balanced Trees
Skip list — это вероятностная структура данных, которая повышает время поиска в стандартном связном списке с O(n) до O(log n). Она работает через многоуровневую систему, где верхние слои содержат редко встречающиеся элементы, позволяя «пропускать» большие участки данных при поиске.
- Поиск в skip list начинается с верхнего слоя и движется горизонтально, пока значение не превысит целевое; при этом каждый раз, когда значение превышает цель, происходит переход к нижнему слою.
- Вставка нового элемента происходит в нижнем слое, затем с помощью случайного выбора (монеты) решается, нужно ли его поднимать на следующий уровень.
- Skip list обеспечивает O(log n) среднее время поиска, вставки и удаления, как и в балансированных деревьях, но с гораздо более простой реализацией и лучшей поддержкой многопоточности.
- В отличие от балансированных деревьев, skip list не требует сложных операций перебалансировки, что делает его идеальным для высокопроизводительных многопоточных баз данных.
Когда пригодится: при разработке многопоточных систем, где важна производительность и отсутствие глобальных блокировок, например, в реализации кэшей или сортированных множеств в базах данных.
type SkipNode struct {
value int
next []*SkipNode // next[i] points to next node at level i
}
DEV LeetCode
1477. Find Two Non-overlapping Sub-arrays Each With Target Sum
Открыть оригинал ↗ Перевод заголовка: 1477. Найти две не пересекающиеся подмассива с суммой, равной целевому значению
Данная задача требует найти два не пересекающихся подмассива в массиве, сумма элементов каждого из которых равна заданному целому числу, при этом сумма длин этих подмассивов должна быть минимальной.
Практические тезисы:
- Используется слайдинг-окно для нахождения всех подмассивов с суммой, равной целевому значению.
- Строится массив
bestEnd[right]— минимальная длина подмассива, заканчивающегося на индексеright. - Строится массив
bestStart[left]— минимальная длина подмассива, начинающегося на индексеleft. - Построены массивы
pref[i](минимальная длина подмассива, заканчивающегося не позже индексаi) иsuff[i](минимальная длина подмассива, начинающегося не раньше индексаi). - Минимальная сумма длин двух не пересекающихся подмассивов ищется как
min(pref[i] + suff[i+1])для всехi.
Когда пригодится:
При решении задач по поиску подмассивов с заданной суммой в массивах, где требуется минимизировать общую длину двух не пересекающихся частей. Применимо в алгоритмических задачах с ограничениями на пересечение и длину.