Проблема фантомной записи: почему ваша реализация идемпотентности незаметно теряет данные
В проде бывает так, что одна и та же операция часто повторяется: клиент не дождался ответа и ретраит, балансер порвал соединение, очередь переиграла сообщение. Вспоминаем про идемпотентность - это правило «повтор не должен создавать новый платёж/заказ».
Чтобы отличать повтор от новой операции, используют idempotency key (ключ идемпотентности). Это обычная уникальная строка-идентификатор, которую клиент или апстрим отправляет вместе с запросом (часто в заголовке
Далее приходит запрос с тем же ключом - сервис не выполняет бизнес-действие второй раз, а дедуплицирует на основе ключа идемпотентности. Но так ли всё просто? Многолетний опыт анализа инцидентов показал, что на практике большое количество систем всё же регулярно допускают дублирования, хотя делали всё по методичке.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
В проде бывает так, что одна и та же операция часто повторяется: клиент не дождался ответа и ретраит, балансер порвал соединение, очередь переиграла сообщение. Вспоминаем про идемпотентность - это правило «повтор не должен создавать новый платёж/заказ».
Чтобы отличать повтор от новой операции, используют idempotency key (ключ идемпотентности). Это обычная уникальная строка-идентификатор, которую клиент или апстрим отправляет вместе с запросом (часто в заголовке
Idempotency-Key). Сервис сохраняет этот ключ у себя и связывает с результатом операции.Далее приходит запрос с тем же ключом - сервис не выполняет бизнес-действие второй раз, а дедуплицирует на основе ключа идемпотентности. Но так ли всё просто? Многолетний опыт анализа инцидентов показал, что на практике большое количество систем всё же регулярно допускают дублирования, хотя делали всё по методичке.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Проблема фантомной записи: почему ваша реализация идемпотентности незаметно теряет данные
Практическое объяснение того, почему идемпотентные API всё равно порождают фантомные записи в продакшене, и безгоночный транзакционный па..
👍3🔥2
Playwright vs Selenium на Java: что выбрать для автотестов в 2026 году
Playwright или Selenium на Java — что выбрать для автотестов в 2026 году? Разбираю историю инструментов, различия в локаторах, ожиданиях, стабильности, стоимости поддержки и объясняю, в каких сценариях каждый из них лучше.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
Playwright или Selenium на Java — что выбрать для автотестов в 2026 году? Разбираю историю инструментов, различия в локаторах, ожиданиях, стабильности, стоимости поддержки и объясняю, в каких сценариях каждый из них лучше.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Как мониторить Java-приложения: метрики, алерты и правило 80/20
Хороший мониторинг помогает быстро понять, что происходит с приложением и куда смотреть в первую очередь. Для этого не нужно пытаться измерить всё: базовый набор технических метрик покрывает большинство типовых проблем, а бизнес-метрики, SLO и анализ аномалий помогают заранее замечать нетипичные отклонения. В Календаре мы называем этот подход правилом 80/20.
Всем привет! Меня зовут Настя, я бэкенд-разработчик в Яндекс 360 и отвечаю за надёжность Календаря. В этой статье я покажу, какие метрики стоит взять за основу, как выбирать полезные алерты и чем дополнять базовый набор для оставшихся 20%.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
Хороший мониторинг помогает быстро понять, что происходит с приложением и куда смотреть в первую очередь. Для этого не нужно пытаться измерить всё: базовый набор технических метрик покрывает большинство типовых проблем, а бизнес-метрики, SLO и анализ аномалий помогают заранее замечать нетипичные отклонения. В Календаре мы называем этот подход правилом 80/20.
Всем привет! Меня зовут Настя, я бэкенд-разработчик в Яндекс 360 и отвечаю за надёжность Календаря. В этой статье я покажу, какие метрики стоит взять за основу, как выбирать полезные алерты и чем дополнять базовый набор для оставшихся 20%.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Как мониторить Java-приложения: метрики, алерты и правило 80/20
Хороший мониторинг помогает быстро понять, что происходит с приложением и куда смотреть в первую очередь. Для этого не нужно пытаться изм..
👍2🔥2
Приложение простояло 918 мс, а сборщик мусора отработал за одну: разбираемся, куда ушло остальное
Секундная пауза в Java‑приложении легко выглядит как проблема сборщика мусора, хотя сам GC может отработать за миллисекунду.
Разберём, как safepoint’ы заставляют JVM ждать отдельные потоки, почему профилировщик способен указать не туда и какими инструментами найти реального виновника.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
Секундная пауза в Java‑приложении легко выглядит как проблема сборщика мусора, хотя сам GC может отработать за миллисекунду.
Разберём, как safepoint’ы заставляют JVM ждать отдельные потоки, почему профилировщик способен указать не туда и какими инструментами найти реального виновника.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Приложение простояло 918 мс, а сборщик мусора отработал за одну: разбираемся, куда ушло остальное
Посмотрим на логи и увидим пары строк такого вида:
🔥3👍2
Как спроектировать REST API без ошибок: 3 задачи с разбором
Как на собеседовании отличить системного аналитика, который учил REST по учебнику, от того, кто реально проектировал API?
В статье — три живых кейса из практики в FinTech и e‑commerce. Вы сможете проверить себя, увидите разбор популярных ошибок и узнаете, почему даже опытные инженеры спорят про PATCH и 409.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
Как на собеседовании отличить системного аналитика, который учил REST по учебнику, от того, кто реально проектировал API?
В статье — три живых кейса из практики в FinTech и e‑commerce. Вы сможете проверить себя, увидите разбор популярных ошибок и узнаете, почему даже опытные инженеры спорят про PATCH и 409.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Как спроектировать REST API без ошибок: 3 задачи с разбором
Всем привет, меня зовут Сергей Прощаев. Я Tech Lead в FinTech и преподаватель в OTUS. Сегодня — не лекция, а диагностика. За последние дв..
🔥4👍1
Как организовать балансировку нагрузки Backend приложений Java Spring Cloud + Kubernetes
Привет! Я Юрий Дергач, я возглавляю ЦК DevOps и релизного управления в РСХБ. Мы с командой развиваем инфраструктуру и автоматизируем разработку продуктов компании. При внедрении наших проектов группы «Экосистема Свое», основанных на стеке Java Spring, в Kubernetes, возникли вопросы, связанные с различными методами балансировки нагрузки между микросервисами.
В этой статье мы обсудим два основных подхода к балансировке нагрузки между Backend-компонентами приложений на стеке Java Spring Cloud в Kubernetes. Мы также рассмотрим преимущества и недостатки каждого метода.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
Привет! Я Юрий Дергач, я возглавляю ЦК DevOps и релизного управления в РСХБ. Мы с командой развиваем инфраструктуру и автоматизируем разработку продуктов компании. При внедрении наших проектов группы «Экосистема Свое», основанных на стеке Java Spring, в Kubernetes, возникли вопросы, связанные с различными методами балансировки нагрузки между микросервисами.
В этой статье мы обсудим два основных подхода к балансировке нагрузки между Backend-компонентами приложений на стеке Java Spring Cloud в Kubernetes. Мы также рассмотрим преимущества и недостатки каждого метода.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Как организовать балансировку нагрузки Backend приложений Java Spring Cloud + Kubernetes
Привет! Я Юрий Дергач, я возглавляю ЦК DevOps и релизного управления в РСХБ. Мы с командой развиваем инфраструктуру и автоматизируем разр..
👍3🔥1
Как (не) перевернуть строку, или Ох, уж этот Unicode
Поговорим о строках, которые на первый взгляд просты и тривиальны. Разбирать их будем на примере одной задачи на Java, которую вполне себе можно встретить на этапе алгоритмического собеседования в качестве «разогрева»
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
Поговорим о строках, которые на первый взгляд просты и тривиальны. Разбирать их будем на примере одной задачи на Java, которую вполне себе можно встретить на этапе алгоритмического собеседования в качестве «разогрева»
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Как (не) перевернуть строку, или Ох, уж этот Unicode
Это текстовая версия доклада с Java Rock Star Meetup, с которым выступал Александр Ланцов — ведущий разработчик Мир Plat.Form. Если вы бо..
👍2🔥2
Как я реализовал Connect RPC на Java с помощью AI-агентов
В статье я делюсь практиками работы с Claude Code и Codex, которые помогли мне реализовать сложную техническую задачу в условиях ограниченного времени, бюджета и железа.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
В статье я делюсь практиками работы с Claude Code и Codex, которые помогли мне реализовать сложную техническую задачу в условиях ограниченного времени, бюджета и железа.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Как я реализовал Connect RPC на Java с помощью AI-агентов
В статье я делюсь практиками работы с Claude Code и Codex, которые помогли мне реализовать сложную техническую задачу в условиях ограниче..
👍3🔥1
Нагрузочное тестирование с Apache JMeter: Best Practices
Apache JMeter — не просто инструмент. В этой статье разберем, как получать от него реальную пользу. Вы узнаете, почему 80% отчётов о нагрузке бесполезны, как настроить распределённый тест и анализировать не среднее значение, а процентили. Полный гайд от первого HTTPS-скрипта до информативного HTML-отчёта и Best Practices.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
Apache JMeter — не просто инструмент. В этой статье разберем, как получать от него реальную пользу. Вы узнаете, почему 80% отчётов о нагрузке бесполезны, как настроить распределённый тест и анализировать не среднее значение, а процентили. Полный гайд от первого HTTPS-скрипта до информативного HTML-отчёта и Best Practices.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Нагрузочное тестирование с Apache JMeter: Best Practices
Всем привет, меня зовут Сергей Прощаев. Я Tech Lead и руководитель направления Java | Kotlin разработки в FinTech, а также преподаю на ку..
👍2🔥2
Java без розовых очков: какие знания отделяют грейды
Почти каждый разработчик рано или поздно задается вопросом: «Я уже Middle или все еще уверенный Junior?» Опыт растет, задач становится больше, стек шире — но вместе с этим появляется и иллюзия, что раз ты пишешь на Java каждый день, значит, язык знаешь. На практике же границы между грейдами проходят не по количеству лет в профессии и не по числу реализованных фич. Они проходят по глубине понимания: платформы, архитектуры, производительности, работы с данными и собственных ограничений.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
Почти каждый разработчик рано или поздно задается вопросом: «Я уже Middle или все еще уверенный Junior?» Опыт растет, задач становится больше, стек шире — но вместе с этим появляется и иллюзия, что раз ты пишешь на Java каждый день, значит, язык знаешь. На практике же границы между грейдами проходят не по количеству лет в профессии и не по числу реализованных фич. Они проходят по глубине понимания: платформы, архитектуры, производительности, работы с данными и собственных ограничений.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Java без розовых очков: какие знания отделяют грейды
Почти каждый разработчик рано или поздно задается вопросом: «Я уже Middle или все еще уверенный Junior?» Опыт растет, задач становится бо..
👍1🔥1😱1
Как я перестал разрывать архитектуру на десяток документов — и сделал свой C4-редактор
Инструмент: C4 QuietGridLabs. Можно открыть демо без авторизации: проект будет храниться локально в браузере.
Иногда архитектура «есть» — но пользоваться ею невозможно.
На доске лежит схема сервисов. В Confluence живёт описание. Где-то рядом — sequence-диаграмма, которую никто не открывал с прошлого года. ER-модель хранится в другом инструменте. А когда на ревью возникает простой вопрос «какой endpoint обслуживает этот путь?», команда начинает собирать ответ из памяти, догадок, выдумок, ссылок и исходников.
Я больше 15 лет работаю в ИТ, из них около десяти занимаюсь проектированием и системным дизайном. За это время перепробовал немало: Sparx, ArchiMate, Structurizr, Confluence, whiteboard-сервисы. Я не считаю их плохими — у каждого есть свой сценарий и своя аудитория. Но лично у меня постоянно оставалось ощущение разрыва: диаграмма была отдельно, документация отдельно, а живой контекст системы — в голове у людей.
В какой-то момент моими рабочими спасателями стали whiteboard и VS Code, а позже Cursor. В них можно быстро собрать мысль, оставить немного полезного творческого беспорядка и двигаться дальше. Но они не решали главную проблему: хотелось, чтобы система, её связи, сценарии и документация были одной навигационной моделью.
Так появился C4 QuietGridLabs. Это мой экспериментальный редактор, где C4-модель — это каркас проекта. К элементам можно прикреплять документацию, sequence-диаграммы, ER-диаграммы и описание API, а по связям — переходить от общего ландшафта к конкретным участникам взаимодействия.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
Инструмент: C4 QuietGridLabs. Можно открыть демо без авторизации: проект будет храниться локально в браузере.
Иногда архитектура «есть» — но пользоваться ею невозможно.
На доске лежит схема сервисов. В Confluence живёт описание. Где-то рядом — sequence-диаграмма, которую никто не открывал с прошлого года. ER-модель хранится в другом инструменте. А когда на ревью возникает простой вопрос «какой endpoint обслуживает этот путь?», команда начинает собирать ответ из памяти, догадок, выдумок, ссылок и исходников.
Я больше 15 лет работаю в ИТ, из них около десяти занимаюсь проектированием и системным дизайном. За это время перепробовал немало: Sparx, ArchiMate, Structurizr, Confluence, whiteboard-сервисы. Я не считаю их плохими — у каждого есть свой сценарий и своя аудитория. Но лично у меня постоянно оставалось ощущение разрыва: диаграмма была отдельно, документация отдельно, а живой контекст системы — в голове у людей.
В какой-то момент моими рабочими спасателями стали whiteboard и VS Code, а позже Cursor. В них можно быстро собрать мысль, оставить немного полезного творческого беспорядка и двигаться дальше. Но они не решали главную проблему: хотелось, чтобы система, её связи, сценарии и документация были одной навигационной моделью.
Так появился C4 QuietGridLabs. Это мой экспериментальный редактор, где C4-модель — это каркас проекта. К элементам можно прикреплять документацию, sequence-диаграммы, ER-диаграммы и описание API, а по связям — переходить от общего ландшафта к конкретным участникам взаимодействия.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Как я перестал разрывать архитектуру на десяток документов — и сделал свой C4-редактор
Инструмент: C4 QuietGridLabs. Можно открыть демо без авторизации: проект будет храниться локально в браузере.
👍1🔥1
От регулярок к ANTLR4: три архитектурных решения на парсере бизнес-формул
Три года назад я писал свой первый коммерческий парсер на ANTLR4 — для бизнес-формул аналитической системы. Несколько лет спустя я бы сделал его иначе в трёх центральных местах. Разбираю каждое: левая рекурсия для приоритета операторов, Listener vs Visitor, и почему getText() для повторного парсинга — антипаттерн.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
Три года назад я писал свой первый коммерческий парсер на ANTLR4 — для бизнес-формул аналитической системы. Несколько лет спустя я бы сделал его иначе в трёх центральных местах. Разбираю каждое: левая рекурсия для приоритета операторов, Listener vs Visitor, и почему getText() для повторного парсинга — антипаттерн.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
От регулярок к ANTLR4: три архитектурных решения на парсере бизнес-формул
Одна из самых запомнившихся задач за три года коммерческой разработки — парсер бизнес-формул в аналитической системе. Выражения приходили..
👍1🔥1