#spring_boot — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #spring_boot, aggregated by home.social.
-
Открытое ТЗ для пет-проекта: сервис поиска пропавших людей
Долго думал, в каком формате это написать, в итоге решил по-простому - рассказать, что есть, и кому это может пригодиться. Мы с коллегой делали выпускной проект для курсов CloudJava и CloudJava K8S. Это техзадание на бэкенд распределенной системы - четыре микросервиса, Gateway, обвязка. Изначально оно было доступно только участникам курсов, теперь решили открыть бесплатно, без регистрации или “оставьте email”. Просто страница с текстом и тремя OpenAPI-спеками. Ссылки сразу, чтобы не листать: Описание проекта: https://javaops.ru/view/cloudjava3 Само ТЗ: https://javaops.ru/view/cloudjava3/rescue-service.html
-
Открытое ТЗ для пет-проекта: сервис поиска пропавших людей
Долго думал, в каком формате это написать, в итоге решил по-простому - рассказать, что есть, и кому это может пригодиться. Мы с коллегой делали выпускной проект для курсов CloudJava и CloudJava K8S. Это техзадание на бэкенд распределенной системы - четыре микросервиса, Gateway, обвязка. Изначально оно было доступно только участникам курсов, теперь решили открыть бесплатно, без регистрации или “оставьте email”. Просто страница с текстом и тремя OpenAPI-спеками. Ссылки сразу, чтобы не листать: Описание проекта: https://javaops.ru/view/cloudjava3 Само ТЗ: https://javaops.ru/view/cloudjava3/rescue-service.html
-
Открытое ТЗ для пет-проекта: сервис поиска пропавших людей
Долго думал, в каком формате это написать, в итоге решил по-простому - рассказать, что есть, и кому это может пригодиться. Мы с коллегой делали выпускной проект для курсов CloudJava и CloudJava K8S. Это техзадание на бэкенд распределенной системы - четыре микросервиса, Gateway, обвязка. Изначально оно было доступно только участникам курсов, теперь решили открыть бесплатно, без регистрации или “оставьте email”. Просто страница с текстом и тремя OpenAPI-спеками. Ссылки сразу, чтобы не листать: Описание проекта: https://javaops.ru/view/cloudjava3 Само ТЗ: https://javaops.ru/view/cloudjava3/rescue-service.html
-
Открытое ТЗ для пет-проекта: сервис поиска пропавших людей
Долго думал, в каком формате это написать, в итоге решил по-простому - рассказать, что есть, и кому это может пригодиться. Мы с коллегой делали выпускной проект для курсов CloudJava и CloudJava K8S. Это техзадание на бэкенд распределенной системы - четыре микросервиса, Gateway, обвязка. Изначально оно было доступно только участникам курсов, теперь решили открыть бесплатно, без регистрации или “оставьте email”. Просто страница с текстом и тремя OpenAPI-спеками. Ссылки сразу, чтобы не листать: Описание проекта: https://javaops.ru/view/cloudjava3 Само ТЗ: https://javaops.ru/view/cloudjava3/rescue-service.html
-
[Перевод] Команда Spring о Spring Framework 7 и Spring Boot 4
В новом переводе от команды Spring АйО рассмотрим выход Spring Boot 4 и Spring Framework 7. InfoQ взяли интервью у core команды Spring с целью узнать, куда движется самая популярная в Java экосистема. Spring Boot 4 модуляризировал автоконфигурацию. Теперь при запуске проверяется меньше классов в classpath, а uber-jar будет более компактным: будут подключаться только нужные модули. Параллельно Spring Boot 4 переходит на Jackson 3, но добавлен модуль совместимости с Jackson 2, потому что экосистема ещё догоняет. Spring Framework 7 тащит core resilience в ядро: RetryTemplate , @Retryable и @ConcurrencyLimit доступны без отдельной зависимости. @Retryable работает и с реактивными типами (через Retry из Project Reactor); для обычных вызовов используется RetryTemplate с политикой retry/backoff. @ConcurrencyLimit помогает ограничивать доступ к ресурсу, что особенно полезно с Virtual Threads.
https://habr.com/ru/companies/spring_aio/articles/1034282/
#java #kotlin #spring #spring_boot #spring_framework #springboot #spring_data #ai #agents
-
Оптимизируем JDBC connection pool HikariCP. Прод, ресурсы и типовые ошибки
Продолжаем разбирать HikariCP: как выбирать размер пула, что учитывать в Kubernetes и при нескольких сервисах, почему большой maximumPoolSize не всегда помогает, какие настройки стоит пересмотреть перед продом и какие ошибки чаще всего приводят к проблемам с базой.
https://habr.com/ru/articles/1031770/
#HikariCP #JDBC #connection_pool #PostgreSQL #Spring_Boot #JVM #Java #Scala #Kubernetes #пул_соединений
-
Оптимизируем JDBC connection pool HikariCP. Прод, ресурсы и типовые ошибки
Продолжаем разбирать HikariCP: как выбирать размер пула, что учитывать в Kubernetes и при нескольких сервисах, почему большой maximumPoolSize не всегда помогает, какие настройки стоит пересмотреть перед продом и какие ошибки чаще всего приводят к проблемам с базой.
https://habr.com/ru/articles/1031770/
#HikariCP #JDBC #connection_pool #PostgreSQL #Spring_Boot #JVM #Java #Scala #Kubernetes #пул_соединений
-
Оптимизируем JDBC connection pool HikariCP. Прод, ресурсы и типовые ошибки
Продолжаем разбирать HikariCP: как выбирать размер пула, что учитывать в Kubernetes и при нескольких сервисах, почему большой maximumPoolSize не всегда помогает, какие настройки стоит пересмотреть перед продом и какие ошибки чаще всего приводят к проблемам с базой.
https://habr.com/ru/articles/1031770/
#HikariCP #JDBC #connection_pool #PostgreSQL #Spring_Boot #JVM #Java #Scala #Kubernetes #пул_соединений
-
Ollama Cloud Client: когда модели слишком тяжелы для локального запуска
Привет. Меня зовут Николай Пискунов, я руководитель направления Big Data и эксперт курса Cloud DevSecOps по безопасной разработке от Академии вАЙТИ
https://habr.com/ru/companies/beeline_cloud/articles/1031708/
#ollama #llm #spring_boot #java #react #typescript #sse #server_sent_events #streaming #ai_api
-
Ollama Cloud Client: когда модели слишком тяжелы для локального запуска
Привет. Меня зовут Николай Пискунов, я руководитель направления Big Data и эксперт курса Cloud DevSecOps по безопасной разработке от Академии вАЙТИ
https://habr.com/ru/companies/beeline_cloud/articles/1031708/
#ollama #llm #spring_boot #java #react #typescript #sse #server_sent_events #streaming #ai_api
-
Ollama Cloud Client: когда модели слишком тяжелы для локального запуска
Привет. Меня зовут Николай Пискунов, я руководитель направления Big Data и эксперт курса Cloud DevSecOps по безопасной разработке от Академии вАЙТИ
https://habr.com/ru/companies/beeline_cloud/articles/1031708/
#ollama #llm #spring_boot #java #react #typescript #sse #server_sent_events #streaming #ai_api
-
Ollama Cloud Client: когда модели слишком тяжелы для локального запуска
Привет. Меня зовут Николай Пискунов, я руководитель направления Big Data и эксперт курса Cloud DevSecOps по безопасной разработке от Академии вАЙТИ
https://habr.com/ru/companies/beeline_cloud/articles/1031708/
#ollama #llm #spring_boot #java #react #typescript #sse #server_sent_events #streaming #ai_api
-
Оптимизируем JDBC connection pool: гайд по HikariCP 2026
HikariCP давно стал де-факто стандартом JDBC connection pooling в JVM-проектах. Но подключить его мало: важно правильно выбрать размер пула, таймауты, maxLifetime, keepaliveTime, leak detection и метрики. Разбираем, как настроить HikariCP для Java, Kotlin, Scala и Spring Boot, какие ошибки чаще всего встречаются в проде и почему maximumPoolSize нельзя просто копировать из соседнего сервиса.
https://habr.com/ru/articles/1030880/
#HikariCP #JDBC #connection_pool #PostgreSQL #Spring_Boot #Java #Kotlin #Scala #пул_соединений #настройка_базы_данных
-
Неизменяемая архитектура. Практическая проверка кодом. Проверка работы с бизнес-процессом
Получив рабочую инфраструктуру для решения задач и проверив работоспособность технологий, теперь создадим менеджер обработки бизнес-процесса на основе выбранных технологий и архитектуры неизменяемых данных. Для реализации выбран абстрактный бизнес-процесс запроса абстрактных ресурсов. Пример придуман максимально общим. Необходимо реализовать обработку бизнес-процесса с несколькими стадиями.
-
Неизменяемая архитектура. Практическая проверка кодом. Проверка работы с бизнес-процессом
Получив рабочую инфраструктуру для решения задач и проверив работоспособность технологий, теперь создадим менеджер обработки бизнес-процесса на основе выбранных технологий и архитектуры неизменяемых данных. Для реализации выбран абстрактный бизнес-процесс запроса абстрактных ресурсов. Пример придуман максимально общим. Необходимо реализовать обработку бизнес-процесса с несколькими стадиями.
-
Неизменяемая архитектура. Практическая проверка кодом. Проверка работы с бизнес-процессом
Получив рабочую инфраструктуру для решения задач и проверив работоспособность технологий, теперь создадим менеджер обработки бизнес-процесса на основе выбранных технологий и архитектуры неизменяемых данных. Для реализации выбран абстрактный бизнес-процесс запроса абстрактных ресурсов. Пример придуман максимально общим. Необходимо реализовать обработку бизнес-процесса с несколькими стадиями.
-
Неизменяемая архитектура. Практическая проверка кодом. Проверка работы с бизнес-процессом
Получив рабочую инфраструктуру для решения задач и проверив работоспособность технологий, теперь создадим менеджер обработки бизнес-процесса на основе выбранных технологий и архитектуры неизменяемых данных. Для реализации выбран абстрактный бизнес-процесс запроса абстрактных ресурсов. Пример придуман максимально общим. Необходимо реализовать обработку бизнес-процесса с несколькими стадиями.
-
Как я написал E2EE-мессенджер на Spring Boot и WebCrypto — и почему сервер не видит сообщения
Привет, Хабр. Я Java-разработчик и в основном работаю с backend: Spring Boot, базы данных, интеграции, авторизация, WebSocket — всё то, что обычно находится за интерфейсом. В какой-то момент я поймал себя на мысли: я каждый день пользуюсь мессенджерами, но плохо понимаю, как они устроены внутри. Окей, JWT, WebSocket, PostgreSQL, Redis — это понятно. Но что технически означает фраза “end-to-end encryption”? Как сервер доставляет сообщения, если он не должен их читать? Где живут ключи? Что хранится в базе? Что происходит, если у пользователя два устройства? Решил разобраться через практику. Написал мессенджер с нуля. Назвал Chaos Messenger. Сразу честно: криптографическую часть я изучал вместе с Claude и ChatGPT — читал спецификации X3DH и Double Ratchet, разбирал примеры, задавал вопросы, пока не сложилась цельная картина. Frontend тоже делался с активной помощью ChatGPT: я backend-разработчик, React для меня не основная среда. Но архитектура, backend, интеграция WebCrypto, модель конвертов, хранение сообщений и принципиальные решения — мои. Для меня AI здесь был не заменой понимания, а инструментом — примерно как документация, Stack Overflow и ревью коллег. Без понимания threat model и архитектуры такой проект всё равно не собрать. В статье расскажу, как работает E2EE изнутри: как устанавливается сессия через X3DH, как каждое сообщение получает отдельный ключ через Symmetric Ratchet, почему сервер хранит только зашифрованные конверты, и какие ошибки я допустил по дороге. Стек: Spring Boot 3, React 18, WebCrypto API, PostgreSQL, Redis, WebSocket/STOMP, Prometheus, Grafana.
https://habr.com/ru/articles/1030854/
#E2EE #мессенджер #Spring_Boot #X3DH #криптография #WebSocket #Java #шифрование #Signal_Protocol #WebCrypto
-
SDD на масштабе FullStack-приложения: 17 спринтов, две конституции, три чата
В первой статье я писал про SDD на примере одного вечера. После чего прошёл 17 спринтов SDD на FullStack-приложении: B2C-трекер привычек и целей, два репозитория, 251 тест на бэке и 77 на фронте, релиз в продакшен. Здесь — что не дало мне потерять контроль на этом масштабе.
https://habr.com/ru/articles/1027886/
#specdriven_development #spec_kit #claude_code #aiassisted_development #fullstack #java #spring_boot #react #методология #architecture
-
От регулярок к ANTLR4: три архитектурных решения на парсере бизнес-формул
Три года назад я писал свой первый коммерческий парсер на ANTLR4 — для бизнес-формул аналитической системы. Несколько лет спустя я бы сделал его иначе в трёх центральных местах. Разбираю каждое: левая рекурсия для приоритета операторов, Listener vs Visitor, и почему getText() для повторного парсинга — антипаттерн.
https://habr.com/ru/articles/1027742/
#antlr #antlr4 #парсер #parser #грамматика #dsl #java #spring_boot #compiler #code_generation
-
Telegram-бот за вечер через Spec Kit: что AI-ассистированная разработка сделала с моим инженерным процессом
Я Java-разработчик: пишу на Java 5 лет. Последний месяц собираю портфолио через Spec-Driven Development — связку Spec Kit и Claude Code. Первый проект — Telegram-бот для задач. С шести вечера до двух ночи одного вторника я прошёл полный SDD-цикл от конституции до MVP с шестью командами. Восемь часов. Один вечер. Рабочий продукт. Но главное — что-то сдвинулось в моём инженерном процессе.
https://habr.com/ru/articles/1027250/
#specdriven_development #spec_kit #claude_code #ai_coding #aiassisted_development #telegram_bot #spring_boot #java #разработка #методология
-
Легаси и минус 99% времени: пошаговый разбор оптимизации
Всем привет! Меня зовут Михаил, я главный эксперт в ОТП Банке. Думаю, многие из вас сталкивались с легаси, которое нужно дорабатывать и оптимизировать. Сегодня хочу поделиться реальным кейсом как мы ускорили отправку данных в смежную систему. Разберем всё по шагам, с замерами производительности. Поехали! Смотрим вместе
https://habr.com/ru/articles/1024814/
#java #kotlin #spring #spring_boot #оптимизация #оптимизация_кода #многопоточность #postgresql #hibernate #legacy
-
Большая распаковка Java 26. Что этот релиз значит для нас всех?
Java 26 вышла 18 марта. В релизе 10 JEP-ов: Structured Concurrency получила шестое превью и API наконец стабилизировался, final-поля начинают путь к настоящей иммутабельности, G1 и ZGC получили улучшения производительности, примитивы заработали в паттернах, а HTTP/3 вошёл в стандартный HttpClient финальной фичей. Разбираем каждое из изменений и смотрим, как перевести реальный проект на Java 26.
https://habr.com/ru/companies/haulmont/articles/1022864/
#Java_26 #JEP #Structured_Concurrency #final_field #рефлексия #G1 #ZGC #примитивы_в_паттернах #Spring_Boot
-
Большая распаковка Java 26. Что этот релиз значит для нас всех?
Java 26 вышла 18 марта. В релизе 10 JEP-ов: Structured Concurrency получила шестое превью и API наконец стабилизировался, final-поля начинают путь к настоящей иммутабельности, G1 и ZGC получили улучшения производительности, примитивы заработали в паттернах, а HTTP/3 вошёл в стандартный HttpClient финальной фичей. Разбираем каждое из изменений и смотрим, как перевести реальный проект на Java 26.
https://habr.com/ru/companies/haulmont/articles/1022864/
#Java_26 #JEP #Structured_Concurrency #final_field #рефлексия #G1 #ZGC #примитивы_в_паттернах #Spring_Boot
-
Большая распаковка Java 26. Что этот релиз значит для нас всех?
Java 26 вышла 18 марта. В релизе 10 JEP-ов: Structured Concurrency получила шестое превью и API наконец стабилизировался, final-поля начинают путь к настоящей иммутабельности, G1 и ZGC получили улучшения производительности, примитивы заработали в паттернах, а HTTP/3 вошёл в стандартный HttpClient финальной фичей. Разбираем каждое из изменений и смотрим, как перевести реальный проект на Java 26.
https://habr.com/ru/companies/haulmont/articles/1022864/
#Java_26 #JEP #Structured_Concurrency #final_field #рефлексия #G1 #ZGC #примитивы_в_паттернах #Spring_Boot
-
Большая распаковка Java 26. Что этот релиз значит для нас всех?
Java 26 вышла 18 марта. В релизе 10 JEP-ов: Structured Concurrency получила шестое превью и API наконец стабилизировался, final-поля начинают путь к настоящей иммутабельности, G1 и ZGC получили улучшения производительности, примитивы заработали в паттернах, а HTTP/3 вошёл в стандартный HttpClient финальной фичей. Разбираем каждое из изменений и смотрим, как перевести реальный проект на Java 26.
https://habr.com/ru/companies/haulmont/articles/1022864/
#Java_26 #JEP #Structured_Concurrency #final_field #рефлексия #G1 #ZGC #примитивы_в_паттернах #Spring_Boot
-
HttpClient в Spring 7: замена FeignClient или нет?
Последние годы FeignClient и RestTemplate были де-факто стандартом для вызова внешних API в Spring. Но теперь появился нативный Http Interface Client — и я решил проверить, можно ли им заменить Feign без потери удобства. Переходим на Spring 7 увереннее!
https://habr.com/ru/articles/1022466/
#spring #spring_boot #java #httpclient #feignclient #restclient #webclient #openapi #микросервисы
-
[Перевод] Самый простой способ устроить утечку памяти в Java
В новом переводе от команды Spring АйО рассмотрим утечки памяти в Java. Не секрет, что GC освобождает только недостижимые объекты. Утечка в Java начинается там, где объект уже не нужен, но на него все еще есть цепочка ссылок от живого потока. Симптомы обычно одинаковые: куча растет, GC срабатывает чаще, паузы увеличиваются, финал - java.lang.OutOfMemoryError: Java heap space . В целом вывод такой, что нужно смотреть график heap в VisualVM/JVisualVM/JConsole, снимать heap dump (jmap), в Eclipse MAT запускать Leak Suspects и проверять цепочки удерживающих ссылок.
https://habr.com/ru/companies/spring_aio/articles/1022018/
#java #kotlin #performance #spring #jdk #gc #spring_boot #spring_framework #springboot
-
[Перевод] Самый простой способ устроить утечку памяти в Java
В новом переводе от команды Spring АйО рассмотрим утечки памяти в Java. Не секрет, что GC освобождает только недостижимые объекты. Утечка в Java начинается там, где объект уже не нужен, но на него все еще есть цепочка ссылок от живого потока. Симптомы обычно одинаковые: куча растет, GC срабатывает чаще, паузы увеличиваются, финал - java.lang.OutOfMemoryError: Java heap space . В целом вывод такой, что нужно смотреть график heap в VisualVM/JVisualVM/JConsole, снимать heap dump (jmap), в Eclipse MAT запускать Leak Suspects и проверять цепочки удерживающих ссылок.
https://habr.com/ru/companies/spring_aio/articles/1022018/
#java #kotlin #performance #spring #jdk #gc #spring_boot #spring_framework #springboot
-
[Перевод] Самый простой способ устроить утечку памяти в Java
В новом переводе от команды Spring АйО рассмотрим утечки памяти в Java. Не секрет, что GC освобождает только недостижимые объекты. Утечка в Java начинается там, где объект уже не нужен, но на него все еще есть цепочка ссылок от живого потока. Симптомы обычно одинаковые: куча растет, GC срабатывает чаще, паузы увеличиваются, финал - java.lang.OutOfMemoryError: Java heap space . В целом вывод такой, что нужно смотреть график heap в VisualVM/JVisualVM/JConsole, снимать heap dump (jmap), в Eclipse MAT запускать Leak Suspects и проверять цепочки удерживающих ссылок.
https://habr.com/ru/companies/spring_aio/articles/1022018/
#java #kotlin #performance #spring #jdk #gc #spring_boot #spring_framework #springboot
-
[Перевод] Самый простой способ устроить утечку памяти в Java
В новом переводе от команды Spring АйО рассмотрим утечки памяти в Java. Не секрет, что GC освобождает только недостижимые объекты. Утечка в Java начинается там, где объект уже не нужен, но на него все еще есть цепочка ссылок от живого потока. Симптомы обычно одинаковые: куча растет, GC срабатывает чаще, паузы увеличиваются, финал - java.lang.OutOfMemoryError: Java heap space . В целом вывод такой, что нужно смотреть график heap в VisualVM/JVisualVM/JConsole, снимать heap dump (jmap), в Eclipse MAT запускать Leak Suspects и проверять цепочки удерживающих ссылок.
https://habr.com/ru/companies/spring_aio/articles/1022018/
#java #kotlin #performance #spring #jdk #gc #spring_boot #spring_framework #springboot
-
Как устроена транскрипция в Jitsi Meet: Jigasi, SIP и путь до EMR
Когда мы проектировали пайплайн автоматического заполнения EMR по итогам видеоконсультаций, исходная гипотеза была простой: Jitsi Meet — open source, документация есть, значит, подключить бота и получить транскрипт — задача на пару дней. На практике именно этот слой занял непропорционально много времени относительно своей "очевидности". В этой статье разберу, как устроена транскрипция в Jitsi Meet под капотом, почему это не "просто включить кнопку", с какими конфигурационными нюансами пришлось столкнуться и как в итоге был выстроен пайплайн от видеозвонка до структурированного текста.
https://habr.com/ru/articles/1021992/
#jitsi_meet #jigasi #sip #xmpp #vosk #transcription #emr #fhir #llm #spring_boot
-
Как устроена транскрипция в Jitsi Meet: Jigasi, SIP и путь до EMR
Когда мы проектировали пайплайн автоматического заполнения EMR по итогам видеоконсультаций, исходная гипотеза была простой: Jitsi Meet — open source, документация есть, значит, подключить бота и получить транскрипт — задача на пару дней. На практике именно этот слой занял непропорционально много времени относительно своей "очевидности". В этой статье разберу, как устроена транскрипция в Jitsi Meet под капотом, почему это не "просто включить кнопку", с какими конфигурационными нюансами пришлось столкнуться и как в итоге был выстроен пайплайн от видеозвонка до структурированного текста.
https://habr.com/ru/articles/1021992/
#jitsi_meet #jigasi #sip #xmpp #vosk #transcription #emr #fhir #llm #spring_boot
-
Как устроена транскрипция в Jitsi Meet: Jigasi, SIP и путь до EMR
Когда мы проектировали пайплайн автоматического заполнения EMR по итогам видеоконсультаций, исходная гипотеза была простой: Jitsi Meet — open source, документация есть, значит, подключить бота и получить транскрипт — задача на пару дней. На практике именно этот слой занял непропорционально много времени относительно своей "очевидности". В этой статье разберу, как устроена транскрипция в Jitsi Meet под капотом, почему это не "просто включить кнопку", с какими конфигурационными нюансами пришлось столкнуться и как в итоге был выстроен пайплайн от видеозвонка до структурированного текста.
https://habr.com/ru/articles/1021992/
#jitsi_meet #jigasi #sip #xmpp #vosk #transcription #emr #fhir #llm #spring_boot
-
Как устроена транскрипция в Jitsi Meet: Jigasi, SIP и путь до EMR
Когда мы проектировали пайплайн автоматического заполнения EMR по итогам видеоконсультаций, исходная гипотеза была простой: Jitsi Meet — open source, документация есть, значит, подключить бота и получить транскрипт — задача на пару дней. На практике именно этот слой занял непропорционально много времени относительно своей "очевидности". В этой статье разберу, как устроена транскрипция в Jitsi Meet под капотом, почему это не "просто включить кнопку", с какими конфигурационными нюансами пришлось столкнуться и как в итоге был выстроен пайплайн от видеозвонка до структурированного текста.
https://habr.com/ru/articles/1021992/
#jitsi_meet #jigasi #sip #xmpp #vosk #transcription #emr #fhir #llm #spring_boot
-
Архитектура мультиканального Discord/Telegram voice-бота на Spring Boot: архитектура, грабли и production-решения
Как я собрал мультиканального voice-бота на Spring Boot, который объединяет Discord, Telegram и веб-панель в одной системе. Разбираю архитектуру, работу с голосом (TTS, запись каналов), интеграцию JDA + LavaPlayer и реальные проблемы продакшена — от memory leaks до ограничений Telegram API.
https://habr.com/ru/articles/1020928/
#spring_boot #discord_bot #telegram_bot #java #jda #lavaplayer #voice_bot #tts #архитектура #backend
-
[Перевод] Раздувание памяти JDK 17 в контейнерах: разбор инцидента
В новом переводе от команды Spring АйО разберем тему раздувания памяти в JDK 17. Апгрейд микросервисов с JDK 8 на JDK 17 прошел dev и QA спокойно, но в проде через 2-3 часа все начало падать. Утилизация памяти выросла в 4 раза, контейнеры стали ловить OOMKill и перезапускаться, Uptime SLA просел, массовый инцидент. Раньше JVM использовала около 50% памяти контейнера и обслуживала ~400 потоков. После релиза стало 95-100% и 1600+ соответственно. При этом heap выглядел нормально, около Xmx, а раздувалась нативная память: ~800 MB -> 3,4-3,6 GB. Виноваты несколько эффектов, которые в контейнерах усиливаются: JVM начала создавать намного больше потоков, OS стала выделять JVM гораздо больше, а дефолтный GC в JDK 17 добавил накладные расходы. Всё это из-за простого бага в JDK, который при миграции утащил за собой весь production.
https://habr.com/ru/companies/spring_aio/articles/1019086/
#jdk_17 #jdk #java #performance #gc #kot #memory #spring #spring_boot #spring_framework
-
[Перевод] Раздувание памяти JDK 17 в контейнерах: разбор инцидента
В новом переводе от команды Spring АйО разберем тему раздувания памяти в JDK 17. Апгрейд микросервисов с JDK 8 на JDK 17 прошел dev и QA спокойно, но в проде через 2-3 часа все начало падать. Утилизация памяти выросла в 4 раза, контейнеры стали ловить OOMKill и перезапускаться, Uptime SLA просел, массовый инцидент. Раньше JVM использовала около 50% памяти контейнера и обслуживала ~400 потоков. После релиза стало 95-100% и 1600+ соответственно. При этом heap выглядел нормально, около Xmx, а раздувалась нативная память: ~800 MB -> 3,4-3,6 GB. Виноваты несколько эффектов, которые в контейнерах усиливаются: JVM начала создавать намного больше потоков, OS стала выделять JVM гораздо больше, а дефолтный GC в JDK 17 добавил накладные расходы. Всё это из-за простого бага в JDK, который при миграции утащил за собой весь production.
https://habr.com/ru/companies/spring_aio/articles/1019086/
#jdk_17 #jdk #java #performance #gc #kot #memory #spring #spring_boot #spring_framework
-
[Перевод] Раздувание памяти JDK 17 в контейнерах: разбор инцидента
В новом переводе от команды Spring АйО разберем тему раздувания памяти в JDK 17. Апгрейд микросервисов с JDK 8 на JDK 17 прошел dev и QA спокойно, но в проде через 2-3 часа все начало падать. Утилизация памяти выросла в 4 раза, контейнеры стали ловить OOMKill и перезапускаться, Uptime SLA просел, массовый инцидент. Раньше JVM использовала около 50% памяти контейнера и обслуживала ~400 потоков. После релиза стало 95-100% и 1600+ соответственно. При этом heap выглядел нормально, около Xmx, а раздувалась нативная память: ~800 MB -> 3,4-3,6 GB. Виноваты несколько эффектов, которые в контейнерах усиливаются: JVM начала создавать намного больше потоков, OS стала выделять JVM гораздо больше, а дефолтный GC в JDK 17 добавил накладные расходы. Всё это из-за простого бага в JDK, который при миграции утащил за собой весь production.
https://habr.com/ru/companies/spring_aio/articles/1019086/
#jdk_17 #jdk #java #performance #gc #kot #memory #spring #spring_boot #spring_framework
-
[Перевод] Раздувание памяти JDK 17 в контейнерах: разбор инцидента
В новом переводе от команды Spring АйО разберем тему раздувания памяти в JDK 17. Апгрейд микросервисов с JDK 8 на JDK 17 прошел dev и QA спокойно, но в проде через 2-3 часа все начало падать. Утилизация памяти выросла в 4 раза, контейнеры стали ловить OOMKill и перезапускаться, Uptime SLA просел, массовый инцидент. Раньше JVM использовала около 50% памяти контейнера и обслуживала ~400 потоков. После релиза стало 95-100% и 1600+ соответственно. При этом heap выглядел нормально, около Xmx, а раздувалась нативная память: ~800 MB -> 3,4-3,6 GB. Виноваты несколько эффектов, которые в контейнерах усиливаются: JVM начала создавать намного больше потоков, OS стала выделять JVM гораздо больше, а дефолтный GC в JDK 17 добавил накладные расходы. Всё это из-за простого бага в JDK, который при миграции утащил за собой весь production.
https://habr.com/ru/companies/spring_aio/articles/1019086/
#jdk_17 #jdk #java #performance #gc #kot #memory #spring #spring_boot #spring_framework
-
[Перевод] Spring Data. На пути к более строгой типизации
В новом переводе от команды Spring АйО разберем, почему stringly-typed API со временем становятся хрупкими, чем помогают метамодели вроде Querydsl и JPA Criteria, и как новый механизм в Spring Data даёт более лёгкую и естественную альтернативу без лишней инфраструктуры сборки.
https://habr.com/ru/companies/spring_aio/articles/1014920/
#spring #spring_data #spring_boot #spring_framework #java #kotlin #jooq
-
[Перевод] Spring Data. На пути к более строгой типизации
В новом переводе от команды Spring АйО разберем, почему stringly-typed API со временем становятся хрупкими, чем помогают метамодели вроде Querydsl и JPA Criteria, и как новый механизм в Spring Data даёт более лёгкую и естественную альтернативу без лишней инфраструктуры сборки.
https://habr.com/ru/companies/spring_aio/articles/1014920/
#spring #spring_data #spring_boot #spring_framework #java #kotlin #jooq
-
[Перевод] Spring Data. На пути к более строгой типизации
В новом переводе от команды Spring АйО разберем, почему stringly-typed API со временем становятся хрупкими, чем помогают метамодели вроде Querydsl и JPA Criteria, и как новый механизм в Spring Data даёт более лёгкую и естественную альтернативу без лишней инфраструктуры сборки.
https://habr.com/ru/companies/spring_aio/articles/1014920/
#spring #spring_data #spring_boot #spring_framework #java #kotlin #jooq
-
[Перевод] Spring Data. На пути к более строгой типизации
В новом переводе от команды Spring АйО разберем, почему stringly-typed API со временем становятся хрупкими, чем помогают метамодели вроде Querydsl и JPA Criteria, и как новый механизм в Spring Data даёт более лёгкую и естественную альтернативу без лишней инфраструктуры сборки.
https://habr.com/ru/companies/spring_aio/articles/1014920/
#spring #spring_data #spring_boot #spring_framework #java #kotlin #jooq
-
Делаем админку из подручных средств
Рано или поздно почти любой бэкенд-проект приходит к задаче: нужна простая внутренняя страница. Посмотреть список чего-то, нажать пару кнопок, может быть что-то удалить.На «внутренней» странице пользователей не будет, а значит – «и так сойдёт». И вот тут начинается выбор: какие технологии взять или какой стек выбрать? Привет! На связи Евгений Захаров — backend разработчик в компании ecom.tech. Моя команда занимается вопросами координации и планирования работы внештатных сотрудников. В этой статье мой опыт, накопившейся за многие года работы в разных компаниях, дальше мы разберём базовые сценарии, риски, сложности. Поехали!
https://habr.com/ru/companies/ecom_tech/articles/1008228/
#kotlin #spring #spring_boot #thymeleaf #vue #gradle #vaadin
-
[Перевод] О размерах пула соединений
Настройка пула соединений — то, в чём разработчики часто ошибаются. При конфигурировании пула есть несколько принципов, которые некоторым могут показаться неочевидными, и их нужно понимать. Подробнее в новом переводе от команды Spring АйО .
https://habr.com/ru/companies/spring_aio/articles/1011770/
#java #kotlin #connection_pool #system_design #system_development #system_designer #spring #spring_boot #spring_framework #postgres
-
[Перевод] Разница между параллельными и распределёнными вычислениями
Параллельные и распределённые вычисления часто ставят рядом, но это далеко не одно и то же. В новом переводе от команды Spring АйО разберем, как устроены обе модели, чем отличаются их архитектура, способы обмена данными, масштабируемость и отказоустойчивость. Статья подойдет тем, кто хочет понять, когда достаточно ресурсов одной машины, а когда без сети из нескольких узлов уже не обойтись.
https://habr.com/ru/companies/spring_aio/articles/1008990/
#system_design #consistency #distributed_computing #distributed_systems #distributed #parallels #parallelism #parallel_computing #spring #spring_boot
-
[Перевод] Часы Лампорта
Сегодня мы живём в мире распределённых систем: Apache Kafka, Apache Spark, Apache Cassandra — это уже не экзотика, а повседневная инфраструктура продакшена. Сервисы пишут события, стримы обрабатываются в реальном времени, данные реплицируются по датацентрам. И почти в каждом таком сценарии возникает фундаментальный вопрос: Как понять, что произошло раньше, а что позже, если глобального времени не существует? Здесь в игру вступают логические часы Лампорта — простая, но концептуально мощная идея, лежащая в основе причинно-следственного порядка в распределённых системах. Подробнее - в новом переводе от команды Spring АйО .
https://habr.com/ru/companies/spring_aio/articles/1005934/
#java #kotlin #system #system_design #architecture #architecture_design #spring #spring_boot
-
[Перевод] HotSpot AOT-кэш: стартуем быстрее, греемся меньше
В новом переводе от команды Spring АйО рассмотрим, как можно ускорить Java-приложения без переписываний: в свежих JDK появились Ahead-of-Time оптимизации кэша, которые выносят «дорогие» этапы загрузки/линковки классов (и даже частично профилирование методов) из рантайма в заранее подготовленный артефакт. Рассмотрим как устроен AOT-кэш в JDK 24–26, какие есть workflow (3 шага vs 2 шага/в один прогон), где прячутся подводные камни вроде удвоения требований по памяти при - XX:AOTCacheOutput , и какие практики обучения помогут реально сократить время старта и быстрее выйти на пик производительности.
https://habr.com/ru/companies/spring_aio/articles/995398/
#java #kotlin #jvm #aot #cache #cachecontrol #spring #spring_boot #spring_framework #springboot
-
Создаем Telegram-бота для отслеживания погоды за 5 минут с помощью Nyagram (а не очередного PizzaBot)
В большинстве туториалов по Java-ботам нам предлагают написать EchoBot или магазин пиццы на огромных switch-case конструкциях. Но в 2026 году, когда у нас есть Java 21 и Spring Boot 3 , писать бойлерплейт — это преступление против продуктивности. Сегодня мы напишем WeatherBot — полезного бота, который показывает реальную погоду через API OpenWeatherMap, имеет кнопку обновления "на лету" и, используя FSM (Машину состояний) с валидацией данных, позволяет настроить ежедневную рассылку прогноза.
https://habr.com/ru/articles/991414/
#telegram #java #telegrambot #github #java21 #spring_boot #spring_mvc #боты #tutorial #программирование