Habr Статья Как мы сократили объем данных в 10 раз, не повредив пользовательскому опыту, или переезд Postgres → ClickHouse Базы данных Краткое резюме · 8 пунктов Хранение событий в платформе требует 2 ТБ дискового пространства и замедляет запросы.Решение: заменить Postgres на ClickHouse для эффективного сжатия данных и аналитических запросов.Используются PeerDB и Temporal для бесшовного переноса данных из Postgres в ClickHouse.Тестирование показало сжатие данных в 31 раз и улучшение производительности запросов.Возникли проблемы с отсутствием id у строк, заполнением нового поля в каждой строке, созданием публикаций и удалением записей в ClickHouse.Доработки на стороне разработки: вставка батчами, использование unhex() и bytes_as_strings, фильтрация по "байтовым" полям.Тестирование в продакшене: улучшение производительности и сокращение занимаемого места на диске.Пользовательские запросы на чтение данных не требуют высокой производительности. Открыть источник ↗
Habr Статья Клонирование голоса по 3-секундному образцу локально: обзор Qwen3-TTS, примеры на русском и портативная версия AI Краткое резюме · 6 пунктов Модель поддерживает 10 языков, включая русский.Модель сохраняет интонации, эмоции и особенности тембра.Qwen3-TTS работает быстро даже на старшей модели 1.7B.Возможности модели включают синтез с готовыми голосами, создание голоса по описанию и клонирование голоса.Модель может использоваться для озвучки контента, разработки игр, аудиокниг, автоматизации и многого другого.Портативная версия Qwen3-TTS Portable PRO доступна для скачивания с поддержкой NVIDIA GPU и CPU, а также русифицированным интерфейсом. Открыть источник ↗
Yandex Блог Yandex 360. Road to Highload Highload Блог со статьями о проектировании высоконагруженных приложений Открыть источник ↗
Habr Статья Проклятие легких побед: как вайбкодинг убивает волю к решению проблем AIВайбкодинг Краткое резюме · 7 пунктов Вайбкодинг — ролевая игра для парней, желающих чувствовать себя хакерами без сложной работы.Автор статьи, ML-инженер, навайбкодил приложение, используя LLM, и столкнулся с неочевидными трансформациями личности.Различаются вайбкодинг и программирование с AI-ассистентом.Автор испытал положительные стороны вайбкодинга, такие как быстрое решение задач и рост насмотренности.Однако долгосрочное использование вайбкодинга может привести к негативным последствиям, таким как снижение когнитивной выносливости и атрофия problem solving.Автор подчеркивает важность сохранения сопротивления и контроля над процессом разработки.В конечном итоге автор считает, что использование AI-ассистентов должно сопровождаться самостоятельным решением задач и сохранением контроля над проектом. Открыть источник ↗
Habr Статья Загадка метода Холмса Логика Краткое резюме · 8 пунктов Метод Холмса часто связывают с «абдуктивной логикой», хотя он использовал дедуктивный метод.В 1978 году ученые исследовали метод Холмса в эпистемологической перспективе.Пирс разработал логическую процедуру «абдукция».Абдукция — метод здравого смысла, основанный на ограничении вариантов событий.Метод Холмса основан на жестком ограничении вариантов событий с помощью дедуктивного метода.Холмс ищет маловероятные или невозможные версии событий, основываясь на дедуктивных ограничениях.Шерлок Холмс всегда внимательно изучает улики и место преступления для поиска ключей к другим версиям.Метод Холмса опирается на дедуктивный метод, хотя он также использует индукцию и абдукцию для восстановления хода событий. Открыть источник ↗
Habr Статья Про избыточность WAL в Postgres Базы данныхPostgreSQL Краткое резюме · 8 пунктов WAL — ключевой компонент внутреннего устройства Postgres.WAL используется для записи изменений в базе данных на диск.WAL состоит из последовательности записей (record) с заголовком и полезной нагрузкой.WAL записывается в WAL buffers, которые затем отправляются на диск.Оптимизация WAL включает использование различных кодеков сжатия, таких как pglz, LZ4 и ZSTD.В Postgres 15 был осуществлен переход на использование LZ4 для сжатия WAL.Оптимизация WAL также включает сжатие больших записей целиком, а не по страницам.В будущем планируется возможность сжатия одного record на основе данных о предыдущем. Открыть источник ↗
Habr Статья О размерах пула соединений Базы данных Краткое резюме · 9 пунктов Настройка пула соединений важна для производительности веб-приложений.Размер пула соединений должен быть небольшим, чтобы избежать задержек и блокировок.Уменьшение размера пула соединений может значительно улучшить производительность.Ограниченные ресурсы, такие как CPU, диск и сеть, влияют на производительность базы данных.SSD-накопители работают быстрее благодаря параллелизму и умному управлению памятью контроллером.Увеличение числа потоков может работать лучше, когда блокировки создают возможности для выполнения.Формула ((число_ядер × 2) + эффективное_число_шпинделей) может использоваться для определения оптимального размера пула соединений.Блокировка пула может возникать из-за захвата слишком большого количества соединений одним потоком.Размер пула должен быть минимальным для предотвращения взаимоблокировки и может зависеть от конкретного случая. Открыть источник ↗
Habr Статья Опасный пассив на балансе: технический долг в вашей инфраструктуре Инфраструктура Краткое резюме · 7 пунктов Технический долг в инфраструктуре — проблема, которая может привести к серьезным последствиям.Классический подход «работает — не трогай» больше не работает, необходимо системно решать проблему.Харденинг — стратегия защиты от кибер-коллекторов и предотвращения рисков.Технический долг представляет собой портфель «токсичных активов» с различными профилями риска.Харденинг включает инвентаризацию активов, сегментацию, управление конфигурациями, обновление и управление доступами.Реальные кейсы из практики К2Тех демонстрируют методологию погашения технического долга.Системный подход к харденингу помогает превратить инфраструктуру в надежный и предсказуемый бизнес-актив. Открыть источник ↗
Habr Статья Когда и как переходить с монолита на микросервисы. Миграция данных Микросервисы Краткое резюме · 5 пунктов Миграция данных при переходе с монолита на микросервисы является важным вопросом.Варианты решения: использование общей базы, представление как интерфейс, база как интерфейс, служба-обертка, выставление агрегата.Синхронизация данных между монолитом и микросервисами может быть выполнена через переключение владельца, синхронизацию приложением, трассировочную запись или синхронизацию внешним сервисом.Выбор решения зависит от конкретных требований и ограничений проекта.Важно руководствоваться принципами минимализма и достаточности при выборе решения. Открыть источник ↗
Habr Статья Когда и как переходить с монолита на микросервисы. 7 миграционных паттернов Микросервисы Краткое резюме · 8 пунктов Статья посвящена миграции с монолита на микросервисы и 7 миграционных паттернам.Паттерн «Удавка» подходит для поэтапного выноса части функционала из монолита с возможностью отката.Паттерн «Композиция UI» используется для разделения функционала на модули и выноса одного из них в микросервис.Паттерн «Разделение по абстракции» подходит для обособления функционала, используемого разными модулями.Паттерн «Шпион» используется для разработки и тестирования нового функционала, пока микросервис не реализован полностью.Паттерн «Параллельное выполнение» применяется для апробирования нового функционала перед его внедрением.Паттерн «Канареечный релиз» позволяет выпускать функционал только для части клиентов для снижения уровня негатива в случае ошибки.Паттерн «Декоратор» используется для сбора данных по интенсивности использования функционала перед имплементацией микросервиса. Открыть источник ↗
Habr Статья Миллиард записей и 8 Марта: как YDB спас праздник HighloadБазы данных Краткое резюме · 11 пунктов Ритейл в Яндекс Еде: отдельный проект с 1 миллиардом записей о ценах и остатках товаров.Первая версия сервиса была на базе PostgreSQL и представляла собой гигантский кеш.Новая архитектура сервиса: «простое» хранилище, отделенное от витрин и продуктовой логики.Переход от JSON к protobuf для компактности хранения данных и упрощения обновлений.Использование брокера сообщений для синхронизации изменений и обеспечения надежности системы.Выбор YDB для масштабируемой СУБД с автоматическим решардированием, автоматическим масштабированием и брокером сообщений с exactly once.Переход от архитектуры «перезаписываем всё» к архитектуре «применяем изменения».Синхронизация асинхронных обновлений и валидаций с использованием оптимистических блокировок и версионирования.Использование батчевания сообщений на уровне protobuf для снижения накладных расходов.Обучение работы с распределенной СУБД: Cross-Shard Transactions, оптимизация запросов, «соль» к ключу шардирования.Решение проблемы с оптимистическими блокировками и поколениями с помощью изменения логики и добавления событий в исходящий топик. Открыть источник ↗
Habr Статья Netflix: практическое применение Vector API, которое спасло CPU Highload Краткое резюме · 6 пунктов Netflix столкнулся с проблемой в Ranker: скоринг «серендипности» потреблял 7,5% CPU.Решение: батчинг, оптимизация архитектуры и использование разных библиотек для вычислительных ядер.«Горячая точка» в Ranker — Java-вычисления скалярных произведений внутри энкодера «серендипности».Использование JDK Vector API для векторизации умножения матриц на аппаратуре AVX-512.Оптимизация помогла снизить потребление CPU на 7% и падение средней задержки на 12%.Vector API позволил заменить сложную реализацию на Java-код, упрощая ревью, сопровождение и итерации. Открыть источник ↗
Habr Статья OpenTelemetry со Spring Boot Observability Краткое резюме · 6 пунктов OpenTelemetry — современный фреймворк для сбора, обработки и экспорта телеметрических данных.Spring Boot 4.0 предлагает новый Spring Boot Starter для OpenTelemetry.Micrometer Tracing с мостом OpenTelemetry экспортирует трассировки в формате OTLP в бэкенд.Spring Boot поддерживает отправку логов по OTLP в OpenTelemetry-совместимый бэкенд.OpenTelemetry SDK позволяет экспортировать логи в формате OTLP.Важно использовать протокол OTLP для интеграции с OpenTelemetry, а не конкретную библиотеку. Открыть источник ↗
Habr Статья Spring Data. На пути к более строгой типизации Базы данныхJPA Краткое резюме · 8 пунктов Строго типизированные API становятся хрупкими со временем.Метамодели, такие как Querydsl и JPA Criteria, помогают решить эту проблему.Новый механизм в Spring Data предлагает более легкую и естественную альтернативу.Строковые ссылки на свойства имеют ограничения, включая хрупкость и отсутствие проверки компилятором.Альтернативные подходы на основе метамоделей обеспечивают проверку на этапе сборки.Spring Data предоставляет адаптеры для интеграции метамоделей с различными API.Типобезопасные ссылки на свойства обеспечивают безопасность, рефакторинг-безопасность и ясность кода.Поддержка Kotlin в Spring Data адаптирует Kotlin-дружелюбные API с использованием перегрузки оператора div (/). Открыть источник ↗
Habr Статья Оптимизация запросов в Spring Data JDBC Базы данныхJPA Краткое резюме · 10 пунктов Spring Data JDBC — легковесный репозиторный слой доступа к данным поверх реляционной БД.Принцип «what you see is what you get» — каждое обращение к репозиторию означает конкретный SQL-запрос.Агрегат в Spring Data JDBC — дерево (DAG) сущностей с одним корнем (Aggregate Root).Репозиторий работает с агрегатом как с единым целым: загружает и сохраняет целиком.Размер агрегата напрямую определяет стоимость его загрузки.Старайтесь проектировать маленькие агрегаты.Используйте Single Query Loading для загрузки всего агрегата одним SQL-запросом.Для больших объёмов данных используйте Stream как возвращаемый тип.Для массовых операций используйте @Modifying запросы вместе с @Query.Не забывайте закрывать Stream и обеспечивать открытую транзакцию. Открыть источник ↗
CodingHorror Статья The Broken Window Theory Чистый код Краткое резюме · 9 пунктов Теория разбитого окна: не оставляйте «сломанные окна» без внимания и исправляйте их сразу.Пренебрежение ускоряет процесс деградации программного обеспечения.Теория основана на статье из Atlantic Monthly 1982 года.Разбитые окна могут привести к беспорядку и преступности.Оставленная без присмотра собственность становится легкой добычей для вандалов.Вандализм начинается быстрее в районах с анонимностью и отсутствием заботы о частной собственности.Восприятие беспорядка создает петлю отрицательной обратной связи.Стабильное соседство может превратиться в негостеприимные джунгли из-за отсутствия заботы.Растущая разобщенность может привести к изменению поведения жителей и снижению их активности на улицах. Открыть источник ↗
Habr Статья Model Context Protocol (MCP) – универсальный протокол для взаимодействия с ИИ MCP Краткое резюме · 6 пунктов MCP — универсальный протокол для взаимодействия с ИИ.MCP создан для упрощения интеграции ИИ-ассистентов с различными API и сервисами.Основная цель MCP — унификация способа обмена контекстом между ИИ и внешним миром.MCP стандартизирует взаимодействие между компонентами: диалог, инструменты, память и ресурсы.Протокол обеспечивает безопасность данных и конфиденциальность, но не решает проблемы безопасности полностью.MCP уже стал стандартом для ИИ-агентов и поддерживается ключевыми игроками индустрии. Открыть источник ↗
Habr Статья Model Context Protocol от Spring AI в Java SDK MCP Краткое резюме · 7 пунктов MCP — открытый протокол, разработанный Anthropic, для интеграции ИИ в экосистеме Java.MCP упрощает взаимодействие между приложениями на ИИ и источниками данных, инструментами и агентами.MCP фокусируется на сочетаемости и стыкуемости, обеспечивая гибкость и возможность переключения между LLM провайдерами.MCP Java SDK — последняя языковая привязка протокола.SDK предлагает многофункциональный фундамент для интеграции ИИ моделей с внешними инструментами.Spring AI расширяет MCP Java SDK, добавляя возможности для интеграции со Spring Boot приложениями.Стартеры Spring Boot облегчают интеграцию ИИ сценариев в приложения. Открыть источник ↗
SpringIO Статья This is the Beginning of the End of the N+1 Problem: Introducing Single Query Loading JDBC Краткое резюме · 7 пунктов Начиная с Spring Data JDBC 3.2.0-M2, поддерживается загрузка одним запросом.Загрузка одним запросом загружает произвольные агрегаты с помощью одного оператора select.Для включения необходимо вызвать setSingleQueryLoadingEnabled(true) на относительном отображающем контексте.В версии 3.2.0-M2 это работает только для простых агрегатов.База данных должна поддерживать аналитические функции.Идея: представить данные агрегата в Excel, используя оконные функции для создания индекса строк в группах.Текущий подход реализован только для Spring Data JDBC, simple aggregate и специфических методов запроса. Открыть источник ↗
Habr Статья DPoP: что это такое, как работает и почему Bearer-токенов недостаточно Auth Краткое резюме · 7 пунктов DPoP — механизм безопасности OAuth 2.0, привязывающий access token к клиенту.DPoP решает проблему утечки токенов и несанкционированного доступа.Bearer-токены не обеспечивают достаточную безопасность, так как не проверяют владение приватным ключом.DPoP требует, чтобы клиент отправлял DPoP Proof JWT для каждого запроса токена.DPoP Proof содержит клеймы, ограничивающие его использование конкретным endpoint'ом и токеном.Keycloak и Quarkus предоставляют встроенную поддержку DPoP.DPoP становится необходимостью для доступа к чувствительным ресурсам. Открыть источник ↗
Habr Статья Как я сделал шифрование поверх MAX, когда приватность стала роскошью Криптография Краткое резюме · 8 пунктов Автор создал кроссплатформенное приложение Dark Message для шифрования сообщений.Dark Message обеспечивает end-to-end шифрование с использованием AES-256.Приложение работает полностью офлайн и не требует интернет-соединения.Данные никогда не покидают устройство пользователя.Для создания приложения использовался ИИ (Claude от Anthropic).Приложение разработано на Windows, iOS и Android.Решены проблемы с кириллицей, разными клавиатурами и алгоритмами деривации ключей.Приложение опубликовано в App Store, RuStore и доступно для Windows. Открыть источник ↗
Habr Статья Раздувание памяти JDK 17 в контейнерах: разбор инцидента JVMJDK Краткое резюме · 7 пунктов Обновление микросервисов с JDK 8 на JDK 17 привело к проблемам с памятью в контейнерах.Утилизация памяти выросла в 4 раза, контейнеры начали ловить OOMKill и перезапускаться.JVM стала создавать больше потоков, OS выделяла больше памяти, дефолтный GC в JDK 17 добавил накладные расходы.Проблема была вызвана багом в JDK, который привел к раздуванию нативной памяти.Переход на JDK 17 может быть сложным из-за скрытых особенностей поведения JVM в контейнерах.Важно следить за потреблением нативной памяти и использовать рекомендованные исправления.Опыт показывает важность понимания взаимодействия JVM с контейнерными рантаймами и Linux-аллокаторами. Открыть источник ↗
Habr Статья Самый простой способ устроить утечку памяти в Java JVMGC Краткое резюме · 6 пунктов Утечка памяти в Java возникает, когда объекты не освобождаются GC из-за оставшихся ссылок.Статические коллекции, внутренние классы, забытые слушатели и кэши без политики вытеснения — частые причины.VisualVM, Eclipse MAT и JConsole/JVisualVM помогают выявлять утечки памяти.Предотвращение: ограничение статических коллекций, методы очистки, статические вложенные классы, удаление слушателей.Закрытие ресурсов через try-with-resources и тестирование на утечки также важны.Проактивные практики и инструменты помогают предотвратить утечки и обеспечить стабильную работу кода. Открыть источник ↗
Habr Статья Платформа для 50000 приложений: как собрать инфраструктуру и выжить Инфраструктура Краткое резюме · 7 пунктов Инфраструктура включает множество компонентов: агенты, оркестровка, IaC, CI/CD.Повышение надежности: уменьшение связности, нивелирование падения CI/CD, кросс-ДЦ-инсталляция БД.Разделение сервисов по тирам надежности: критичные, важные, внутренние, нерегулярно используемые.Обеспечение работоспособности в режиме «минус один ДЦ» для всех сервисов.Уменьшение числа онлайн-зависимостей для повышения надежности.Избегать кольцевых зависимостей и использовать «админский контур» для деплоя компонентов.Сомневаться во всем и валидировать индустриальные практики для обеспечения надежности. Открыть источник ↗
Habr Статья Hibernate merge: начали за здравие, закончили за упокой HibernateJPAORM Краткое резюме · 9 пунктов Merge в Hibernate — это не универсальный save, и чаще всего он вам не нужен.Merge — специализированная операция для detached-сущности, которую нужно перенести в текущий Persistence Context.На практике merge часто используют для апдейта любой сущности и получают лишние SQL-запросы.Merge — мердж состояния объектов, а не просто сохранение изменений.Вне detached-сценария механика почти всегда избыточна.Merge может быть вредным из-за лишнего SELECT перед UPDATE и каскадирования изменений.Антипаттерн «find → change → save» — типичный сервисный метод с лишними накладными расходами.Merge имеет место при работе с detached-сущностью между транзакциями.Важно помнить цену merge и использовать его разумно. Открыть источник ↗
Habr Статья Избегаем парадокса пестицида: система рекомендаций «забытых» тест-кейсов QAТестирование Краткое резюме · 6 пунктов Регрессионное тестирование может столкнуться с проблемой парадокса пестицида.Команда Яндекс Такси внедрила систему весов для тест-кейсов.Система помогает отбирать наиболее опасные сценарии, включая старые и потенциально проблемные.Внедрение привело к актуализации базы, проверке гипотез и победе над парадоксом пестицида.Дежурный получает приоритетные задачи от системы, снижая когнитивную нагрузку.В планах — развитие регресса в сторону Data-Driven-тестирования с Impact Analysis. Открыть источник ↗
Habr Статья Команда Spring о Spring Framework 7 и Spring Boot 4 Spring Краткое резюме · 7 пунктов Spring Boot 4 и Spring Framework 7 — новые версии популярных Java-фреймворков.Spring Boot 4 модулирует автоконфигурацию для ускорения запуска и уменьшения размера uber-jar.Spring Framework 7 интегрирует core resilience: повторные попытки и ограничение конкурентности.Поддержка версионирования HTTP API реализована через HTTP-заголовки.Команда Spring исследует поддержку ИИ-ассистентов в рамках Spring Tools.Переход со Spring Boot 3 на 4 облегчается модулем совместимости с Jackson 2 и руководством по миграции.Расширенная корпоративная поддержка Spring Boot 4 предоставляет гибкость для обновления. Открыть источник ↗
Habr Статья Subject Matter Expert. Чёрная Метка Для Разработчика Менеджмент Краткое резюме · 8 пунктов Enterprise-решения часто требуют погружения в детали доменной области.Знание доменной области может быть полезным, но также фатальным для программиста и проекта.Неравномерная конфигурация компетенций в команде приводит к перегрузке ключевых разработчиков.Код становится менее стабильным, производительным и прозрачным для других.Проблема связана с Subject Matter Expert — «дамокловым мечом» над системой.Проблема часто возникает из-за неправильного менеджмента.Для решения важно стремиться к взаимозаменяемости и удерживать обученный персонал.Следить, чтобы никто не работал на грани срыва. Открыть источник ↗
Habr Статья Одна маленькая ошибка в дизайне Java API, за которую потом приходится платить очень дорого Java Краткое резюме · 6 пунктов Маленькая ошибка в дизайне Java API может привести к серьезным проблемам.Пример: метод getCache() возвращает ссылку на изменяемое состояние объекта.Проблема может привести к сломанной инкапсуляции и нарушению безопасности.Решение: возвращать неизменяемую копию или read-only обертку.Важно, чтобы элементы коллекции также были immutable.Необходимо внимательно следить за передачей возможности мутирования внутреннего состояния. Открыть источник ↗
Habr Статья Skill of the week: Spring Explore — первичный сбор контекста MCPSkill Краткое резюме · 7 пунктов Spring Explore — Skill для анализа Spring-приложений и определения контекста.Skill помогает понять специфику Spring-фреймворков и экосистемы.Spring Explore расширяет знания Agent в области проектирования архитектуры приложений.Skill может использоваться в «ручном» режиме для получения ответов на вопросы.Автоматическое использование: Agent самостоятельно подбирает и активирует skills.Spring Explore также может использоваться в собственных skills для анализа и генерации кода.Пример: создание REST endpoint с использованием DDD. Открыть источник ↗
Habr Статья Axelix. Cпецназ для Вашей Spring Boot экосистемы Инфраструктура Краткое резюме · 7 пунктов Axelix — инструмент для упрощения отладки, тестирования и мониторинга Spring Boot приложений.Ядро проекта Axelix — Open Source продукт на GitHub.Axelix будет следовать модели Open Core и может быть установлен аналогично Grafana.Инструмент помогает решить проблемы с отладкой: уровень логирования, свойства, N+1 запросы.Axelix интегрируется с AI Agent-ами для ревью кода, документации и других задач.Инструмент отличается от Spring Boot Admin и имеет больше возможностей.Первый milestone выпущен, GA-релиз планируется во второй половине лета 2026 года. Открыть источник ↗