Сможете ли вы спроектировать Maven‑монорепозиторий для 5 микросервисов?
В этой статье мы разберём реальную задачу на проектирование Maven Multi‑Module: от циклических зависимостей и неправильного использования spring‑boot‑maven‑plugin до смешения ролей агрегатора и родителя. Затем соберём эталонную структуру по лучшим практикам Spring Cloud и Netflix, добавим CI/CD‑диаграмму и научимся запускать сервис локально без Eureka и RabbitMQ.
Читать статью
Наш канал в Макс🟪
В этой статье мы разберём реальную задачу на проектирование Maven Multi‑Module: от циклических зависимостей и неправильного использования spring‑boot‑maven‑plugin до смешения ролей агрегатора и родителя. Затем соберём эталонную структуру по лучшим практикам Spring Cloud и Netflix, добавим CI/CD‑диаграмму и научимся запускать сервис локально без Eureka и RabbitMQ.
Читать статью
Наш канал в Макс
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Сможете ли вы спроектировать Maven‑монорепозиторий для 5 микросервисов?
Мне как‑то попалась информация, что даже в опытных командах настройка монорепозитория часто делается «на глаз», и спустя пару месяцев это..
👍4❤2🔥1
Hibernate Reactive: опыт миграции, архитектурные компромиссы и скрытая сложность
Наш проект на Quarkus столкнулся с необходимостью более эффективного использования ресурсов под высокой нагрузкой. В поисках решения мы решили попробовать миграцию с классического Hibernate ORM на Hibernate Reactive (HR). В этой статье я поделюсь реальным опытом этого перехода: разберу ключевые архитектурные различия, расскажу о неочевидных «граблях», на которые мы наступили, и покажу на production-коде, какую цену пришлось заплатить за реактивность.
Версии используемого ПО: Quarkus: 3.31.3, Quarkus Hibernate Reactive: 3.31.3 и Vertx-pg-client (реактивный клиент PostgreSQL): 4.5.24.
Все описанные ниже вопросы и особенности актуальны именно для этих версий.
Читать статью
Наш канал в Макс🟪
Наш проект на Quarkus столкнулся с необходимостью более эффективного использования ресурсов под высокой нагрузкой. В поисках решения мы решили попробовать миграцию с классического Hibernate ORM на Hibernate Reactive (HR). В этой статье я поделюсь реальным опытом этого перехода: разберу ключевые архитектурные различия, расскажу о неочевидных «граблях», на которые мы наступили, и покажу на production-коде, какую цену пришлось заплатить за реактивность.
Версии используемого ПО: Quarkus: 3.31.3, Quarkus Hibernate Reactive: 3.31.3 и Vertx-pg-client (реактивный клиент PostgreSQL): 4.5.24.
Все описанные ниже вопросы и особенности актуальны именно для этих версий.
Читать статью
Наш канал в Макс
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Hibernate Reactive: опыт миграции, архитектурные компромиссы и скрытая сложность
В нашем проекте на Quarkus мы столкнулись с необходимостью более эффективного использования ресурсов под высокой нагрузкой. Решили мигрир..
👍2🔥1
Я написал симулятор квантового поля на Java. Вот что из этого вышло
Одним вечером я решил проверить: что если взять решётку из 10 000 узлов, задать одно правило передачи энергии между соседями — и просто запустить? Никакой теоретической физики из учебника, никакой подготовки. Посмотреть что вырастет само.
Спойлер: за один день появились волновое уравнение, интерференция, фазовый переход, рождение и аннигиляция частиц, и стрела времени. Всё из одного уравнения.
Читать статью
Наш канал в Макс🟪
Одним вечером я решил проверить: что если взять решётку из 10 000 узлов, задать одно правило передачи энергии между соседями — и просто запустить? Никакой теоретической физики из учебника, никакой подготовки. Посмотреть что вырастет само.
Спойлер: за один день появились волновое уравнение, интерференция, фазовый переход, рождение и аннигиляция частиц, и стрела времени. Всё из одного уравнения.
Читать статью
Наш канал в Макс
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Я написал симулятор квантового поля на Java. Вот что из этого вышло
Уточнение: строго говоря, это классическое нелинейное скалярное поле — модификация уравнения Клейна-Гордона с φ⁴ потенциалом. “Квантовое”..
👍2🔥1
Спасаемся от Spring: есть ли альтернативы репозиторным фреймворкам? Часть вторая. Альтернативы
В предыдущей статье мы обсудили недостатки решений Spring в части доступа к данным.
В ходе анализа решений Spring стало очевидно, что оба фреймворка используют радикально разные подходы в работе с данными. Казалось бы, контроль над запросами очень важен для приложений, особенно высоконагруженных. Но Spring Data JPA такого контроля не даёт. Лёгкость и простота изменения кода является залогом его чистоты и работоспособности, однако с этим есть сложности уже у Spring JDBC.
Всего-то нужен фреймворк, предоставляющий полный контроль над запросами со стороны разработчика и не создающий трудностей при развитии, изменении и рефакторинге кода. В этой статье мы разберём две альтернативы, которые, на мой взгляд, в меньшей степени подвержены проблемам Spring Data JPA и Spring JDBC.
Это будут jOOQ и Exposed.
Читать статью
Наш канал в Макс🟪
В предыдущей статье мы обсудили недостатки решений Spring в части доступа к данным.
В ходе анализа решений Spring стало очевидно, что оба фреймворка используют радикально разные подходы в работе с данными. Казалось бы, контроль над запросами очень важен для приложений, особенно высоконагруженных. Но Spring Data JPA такого контроля не даёт. Лёгкость и простота изменения кода является залогом его чистоты и работоспособности, однако с этим есть сложности уже у Spring JDBC.
Всего-то нужен фреймворк, предоставляющий полный контроль над запросами со стороны разработчика и не создающий трудностей при развитии, изменении и рефакторинге кода. В этой статье мы разберём две альтернативы, которые, на мой взгляд, в меньшей степени подвержены проблемам Spring Data JPA и Spring JDBC.
Это будут jOOQ и Exposed.
Читать статью
Наш канал в Макс
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Спасаемся от Spring: есть ли альтернативы репозиторным фреймворкам? Часть вторая. Альтернативы
В предыдущей статье мы обсудили недостатки решений Spring в части доступа к данным.
👍2🔥1
Шёл за утечкой памяти, нашёл утечку диска: SXSSFWorkbook без dispose() в Apache POI
Меня зовут Игорь Симаков, работаю engineering manager’ом и руковожу командами разработки
На одном из наших сервисов, который работает с XLSX-файлами, прилетел production-алерт на высокое потребление памяти. Стандартный P3, обычно решается рестартом. Пошёл смотреть поды и нашёл проблему, к памяти отношения не имеющую, но представляющую больший риск, чем сам алерт. Об этом и расскажу ниже: чем «утечка диска» отличается от «утечки памяти», как мы наткнулись на грабли в Apache POI и как закрыли их на уровне архитектуры
Читать статью
Наш канал в Макс🟪
Меня зовут Игорь Симаков, работаю engineering manager’ом и руковожу командами разработки
На одном из наших сервисов, который работает с XLSX-файлами, прилетел production-алерт на высокое потребление памяти. Стандартный P3, обычно решается рестартом. Пошёл смотреть поды и нашёл проблему, к памяти отношения не имеющую, но представляющую больший риск, чем сам алерт. Об этом и расскажу ниже: чем «утечка диска» отличается от «утечки памяти», как мы наткнулись на грабли в Apache POI и как закрыли их на уровне архитектуры
Читать статью
Наш канал в Макс
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Шёл за утечкой памяти, нашёл утечку диска: SXSSFWorkbook без dispose() в Apache POI
Меня зовут Игорь Симаков, работаю engineering manager’ом и руковожу командами разработки
🔥4👍1
Spring Security: начало работы и первые шаги на практике
В данной статье поигрались с базовыми возможностями Spring Secrity и узнали фундамент на котором строится вся остальная безопасность приложения
Читать статью
Наш канал в Макс🟪
В данной статье поигрались с базовыми возможностями Spring Secrity и узнали фундамент на котором строится вся остальная безопасность приложения
Читать статью
Наш канал в Макс
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Spring Security: начало работы и первые шаги на практике
После того как мы в теории разобрали важные детали о Spring Security нужно учиться работать с ним на практике.
👍2🔥1
Семь вещей, которые нельзя делать из-за стирания типов в Java
Мы, разработчики на Java, используем параметризованные типы каждый день: List<String>, Map<Long, User>, Optional<Order> и так далее. Однако у параметризованных типов есть важная особенность: в Java они существуют в полном виде только на этапе компиляции.
Читать статью
Наш канал в Макс🟪
Мы, разработчики на Java, используем параметризованные типы каждый день: List<String>, Map<Long, User>, Optional<Order> и так далее. Однако у параметризованных типов есть важная особенность: в Java они существуют в полном виде только на этапе компиляции.
Читать статью
Наш канал в Макс
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Семь вещей, которые нельзя делать из-за стирания типов в Java
Мы, разработчики на Java, используем параметризованные типы каждый день: List<String>, Map<Long, User>, Optional<Order> и так далее. Одна..
👍2🔥1
Стили интеграции: от файлов до событий — как выбрать правильно
Выбирать стиль интеграции приложений — всё равно что выбирать фундамент для дома. Ошибёшься — и переделывать придётся, когда стены уже стоят.
В этой статье я разбираю четыре основных стиля интеграции: передача файлов, общая база данных, удалённый вызов процедур (RPC) и асинхронный обмен сообщениями (Messaging). Без воды, на реальных примерах — включая историю провала TSB Bank, который стоил сотен миллионов фунтов.
Вы узнаете:
▪️ почему общая база данных — это антипаттерн для микросервисов;
▪️ как асинхронность спасает прод, когда падают соседние сервисы;
▪️ какие best practice используют команды, чтобы не получить распределённый монолит.
Если вы архитектор, тимлид или разработчик, который хочет строить надёжные системы — добро пожаловать под кат.
Читать статью
Наш канал в Макс🟪
Выбирать стиль интеграции приложений — всё равно что выбирать фундамент для дома. Ошибёшься — и переделывать придётся, когда стены уже стоят.
В этой статье я разбираю четыре основных стиля интеграции: передача файлов, общая база данных, удалённый вызов процедур (RPC) и асинхронный обмен сообщениями (Messaging). Без воды, на реальных примерах — включая историю провала TSB Bank, который стоил сотен миллионов фунтов.
Вы узнаете:
▪️ почему общая база данных — это антипаттерн для микросервисов;
▪️ как асинхронность спасает прод, когда падают соседние сервисы;
▪️ какие best practice используют команды, чтобы не получить распределённый монолит.
Если вы архитектор, тимлид или разработчик, который хочет строить надёжные системы — добро пожаловать под кат.
Читать статью
Наш канал в Макс
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Стили интеграции: от файлов до событий — как выбрать правильно
Всем привет, меня зовут Сергей Прощаев.
🔥3👍1
Вам не нужны микросервисы
Какое‑то время назад, проработав 3 года на позиции Java Middle+‑ разработчика на крупном монолитном легаси‑проекте (естественно, модульном), я столкнулся с тем, что не имел практики в создании приложений на микросервисной архитектуре. При этом я понимал, что работа с микросервисами — это работа с актуальным стеком технологий в мире Java. И если ты не работаешь с микросервисами, то ты вроде как не имеешь необходимой квалификации для большинства вакансий на рынке труда. По крайней мере, если судить по самим вакансиям.
Поэтому я решил, что мне нужен какой‑то достаточно крупный проект, который бы дал мне основные практические навыки работы с микросервисами. Это должен был быть проект, выходящий за рамки пет‑проекта с животными или чего‑то подобного. При этом, отработав на Java более трех лет, я уже хотел сделать что‑то свое, разработать архитектуру с самого начала. Думаю, это нормальное желание для мидл‑программиста, который хочет развиваться в своей сфере.
Читать статью
Наш канал в Макс🟪
Какое‑то время назад, проработав 3 года на позиции Java Middle+‑ разработчика на крупном монолитном легаси‑проекте (естественно, модульном), я столкнулся с тем, что не имел практики в создании приложений на микросервисной архитектуре. При этом я понимал, что работа с микросервисами — это работа с актуальным стеком технологий в мире Java. И если ты не работаешь с микросервисами, то ты вроде как не имеешь необходимой квалификации для большинства вакансий на рынке труда. По крайней мере, если судить по самим вакансиям.
Поэтому я решил, что мне нужен какой‑то достаточно крупный проект, который бы дал мне основные практические навыки работы с микросервисами. Это должен был быть проект, выходящий за рамки пет‑проекта с животными или чего‑то подобного. При этом, отработав на Java более трех лет, я уже хотел сделать что‑то свое, разработать архитектуру с самого начала. Думаю, это нормальное желание для мидл‑программиста, который хочет развиваться в своей сфере.
Читать статью
Наш канал в Макс
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Вам не нужны микросервисы
Дисклеймер
👍4❤1🔥1
Как избежать 7 критических ошибок при переходе на микросервисы
Микросервисы обещают масштабирование и независимость команд, но чаще ломают систему медленнее монолита. Почему?
В статье разбираем семь архитектурных ошибок, которые можно встретить в реальных системах: выбор по моде, shared database, игнорирование network latency, операционная сложность на потом, слишком мелкая декомпозиция, отсутствие стратегии consistency, недооценка сроков миграции.
Читать статью
Наш канал в Макс🟪
Микросервисы обещают масштабирование и независимость команд, но чаще ломают систему медленнее монолита. Почему?
В статье разбираем семь архитектурных ошибок, которые можно встретить в реальных системах: выбор по моде, shared database, игнорирование network latency, операционная сложность на потом, слишком мелкая декомпозиция, отсутствие стратегии consistency, недооценка сроков миграции.
Читать статью
Наш канал в Макс
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Как избежать 7 критических ошибок при переходе на микросервисы
Всем привет, меня зовут Сергей Прощаев. Я Tech Lead и руководитель направления Java | Kotlin разработки в FinTech и E-commerce. За послед..
🔥3👍2
Как устроена транскрипция в Jitsi Meet: Jigasi, SIP и путь до EMR
Когда мы проектировали пайплайн автоматического заполнения EMR по итогам видеоконсультаций, исходная гипотеза была простой: Jitsi Meet — open source, документация есть, значит, подключить бота и получить транскрипт — задача на пару дней. На практике именно этот слой занял непропорционально много времени относительно своей "очевидности".
В этой статье разберу, как устроена транскрипция в Jitsi Meet под капотом, почему это не "просто включить кнопку", с какими конфигурационными нюансами пришлось столкнуться и как в итоге был выстроен пайплайн от видеозвонка до структурированного текста.
Читать статью
Наш канал в Макс🟪
Когда мы проектировали пайплайн автоматического заполнения EMR по итогам видеоконсультаций, исходная гипотеза была простой: Jitsi Meet — open source, документация есть, значит, подключить бота и получить транскрипт — задача на пару дней. На практике именно этот слой занял непропорционально много времени относительно своей "очевидности".
В этой статье разберу, как устроена транскрипция в Jitsi Meet под капотом, почему это не "просто включить кнопку", с какими конфигурационными нюансами пришлось столкнуться и как в итоге был выстроен пайплайн от видеозвонка до структурированного текста.
Читать статью
Наш канал в Макс
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Как устроена транскрипция в Jitsi Meet: Jigasi, SIP и путь до EMR
Когда мы проектировали пайплайн автоматического заполнения EMR по итогам видеоконсультаций, исходная гипотеза была простой: Jitsi Meet —..
👍2🔥2
Сердце облачной Java: проверяем Quarkus
Java уже какое-то время витает в облаках. Всё больше приложений и сервисов переходят на облачную архитектуру. Мы решили не отставать и проверить один из главных проектов для разработки производительных облачных приложений на Java — Quarkus.
Читать статью
Наш канал в Макс🟪
Java уже какое-то время витает в облаках. Всё больше приложений и сервисов переходят на облачную архитектуру. Мы решили не отставать и проверить один из главных проектов для разработки производительных облачных приложений на Java — Quarkus.
Читать статью
Наш канал в Макс
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Сердце облачной Java: проверяем Quarkus
Java уже какое-то время витает в облаках. Всё больше приложений и сервисов переходят на облачную архитектуру. Мы решили не отставать и пр..
👍3🔥2
HttpClient в Spring 7: замена FeignClient или нет?
Последние годы FeignClient и RestTemplate были де-факто стандартом для вызова внешних API в Spring. Но теперь появился нативный Http Interface Client — и я решил проверить, можно ли им заменить Feign без потери удобства.
Читать статью
Наш канал в Макс🟪
Последние годы FeignClient и RestTemplate были де-факто стандартом для вызова внешних API в Spring. Но теперь появился нативный Http Interface Client — и я решил проверить, можно ли им заменить Feign без потери удобства.
Читать статью
Наш канал в Макс
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
HttpClient в Spring 7: замена FeignClient или нет?
За последние несколько лет для вызова внешних API в каждом втором (если не первом) проекте я видел одну и ту же картину:
👍5❤1🔥1
Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Стандартные алгоритмы даунсемплинга хорошо работают с линейными графиками. На scatter они теряют до 60% визуально значимых данных. Показываем, как двумерное прореживание решает задачу, которую одномерные методы фундаментально не могут.
Читать статью
Наш канал в MAX🟪
Стандартные алгоритмы даунсемплинга хорошо работают с линейными графиками. На scatter они теряют до 60% визуально значимых данных. Показываем, как двумерное прореживание решает задачу, которую одномерные методы фундаментально не могут.
Читать статью
Наш канал в MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Вот что видит пользователь, когда мы рисуем график давления в скважине за два года — 50 миллионов точек:
👍3🔥1
Вайб-код для настоящих инженеров: старые практики в новых реалиях
Итак, вопреки утверждениям скептиков (среди которых не так давно был и я) ИИ-разработка с двух ног влетела в настоящую промышленную эксплуатацию, и мем уже совсем не тот: не джун теперь роняет прод, а нейросеть убивает статистику доступности гитхаба, амазона, Cloudflare и даже самой мекки вайб-кодинга — сервисов Anthropic и OpenAI.
Читать статью
Наш канал в MAX🟪
Итак, вопреки утверждениям скептиков (среди которых не так давно был и я) ИИ-разработка с двух ног влетела в настоящую промышленную эксплуатацию, и мем уже совсем не тот: не джун теперь роняет прод, а нейросеть убивает статистику доступности гитхаба, амазона, Cloudflare и даже самой мекки вайб-кодинга — сервисов Anthropic и OpenAI.
Читать статью
Наш канал в MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Вайб-код для настоящих инженеров: старые практики в новых реалиях
Итак, вопреки утверждениям скептиков (среди которых не так давно был и я) ИИ-разработка с двух ног влетела в настоящую промышленную экспл..
👍3🔥1
Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise
Что делать, если синхронные REST-вызовы превращают ваши микросервисы в карточный домик? Пора вспомнить проверенные временем паттерны обмена сообщениями. В этой статье разбираем архитектуру Pipes and Filters, Content-Based Router и Idempotent Receiver — те самые кирпичики, на которых держатся надёжные системы. Схемы, best practices для проектирования устойчивых интеграций для Enterprise-разработки.
Читать статью
Наш канал в MAX🟪
Что делать, если синхронные REST-вызовы превращают ваши микросервисы в карточный домик? Пора вспомнить проверенные временем паттерны обмена сообщениями. В этой статье разбираем архитектуру Pipes and Filters, Content-Based Router и Idempotent Receiver — те самые кирпичики, на которых держатся надёжные системы. Схемы, best practices для проектирования устойчивых интеграций для Enterprise-разработки.
Читать статью
Наш канал в MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise
Всем привет, меня зовут Сергей Прощаев. Я Tech Lead и руководитель направления Java | Kotlin разработки в FinTech, а также преподаю на ку..
👍3🔥1
AI Gateway для микросервисов: гайд по интеграции LLM в 2026
В микросервисной архитектуре LLM быстро превращаются из удобного инструмента в отдельный источник рисков: растут счета за токены, появляются задержки, дублируются запросы, а сервисы начинают зависеть от внешних моделей напрямую.
В статье разбираем, как спроектировать AI Gateway — инфраструктурный слой для централизованной маршрутизации, кеширования, лимитов, observability и отказоустойчивости при работе с AI‑моделями.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
В микросервисной архитектуре LLM быстро превращаются из удобного инструмента в отдельный источник рисков: растут счета за токены, появляются задержки, дублируются запросы, а сервисы начинают зависеть от внешних моделей напрямую.
В статье разбираем, как спроектировать AI Gateway — инфраструктурный слой для централизованной маршрутизации, кеширования, лимитов, observability и отказоустойчивости при работе с AI‑моделями.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
AI Gateway для микросервисов: гайд по интеграции LLM в 2026
Всем привет, меня зовут Сергей Прощаев. В этой статье расскажу про одну из самых горячих тем 2026 года — интеграцию AI/ML как самостоятел..
👍3🔥2❤1
WebFlux vs Virtual Threads: что происходит при 2000 RPS
Всем привет! Меня зовут Александр, и сегодня я расскажу о результатах перевода учебного проекта со Spring WebFlux и Netty на Spring MVC и Tomcat с виртуальными потоками и проверки обоих вариантов под нагрузкой в 2000rps.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
Всем привет! Меня зовут Александр, и сегодня я расскажу о результатах перевода учебного проекта со Spring WebFlux и Netty на Spring MVC и Tomcat с виртуальными потоками и проверки обоих вариантов под нагрузкой в 2000rps.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
WebFlux vs Virtual Threads: что происходит при 2000 RPS
Всем привет! Меня зовут Александр, и сегодня я расскажу о результатах перевода учебного проекта со Spring WebFlux и Netty на Spring MVC и..
🔥5❤1👍1
IDE понимает ваш код. AI-агент — нет. Это можно исправить
Ваша IDE знает о проекте всё — иерархии типов, ссылки между модулями, исходники библиотек, ошибки компиляции. AI-агент ничего из этого не видит и вынужден грепать код и логи. За один выходной можно написать плагин и CLI, которые выставят семантику IDE наружу — и агент получит те же суперсилы, что и вы. В статье — как это сделано на примере Eclipse и JDT, но подход переносим на любую IDE.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
Ваша IDE знает о проекте всё — иерархии типов, ссылки между модулями, исходники библиотек, ошибки компиляции. AI-агент ничего из этого не видит и вынужден грепать код и логи. За один выходной можно написать плагин и CLI, которые выставят семантику IDE наружу — и агент получит те же суперсилы, что и вы. В статье — как это сделано на примере Eclipse и JDT, но подход переносим на любую IDE.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
IDE понимает ваш код. AI-агент — нет. Это можно исправить
TL;DR: Ваша IDE знает о проекте всё — иерархии типов, ссылки между модулями, исходники библиотек, ошибки компиляции. AI-агент ничего из э..
👍3🔥1
C4 для системного аналитика: как навести порядок в микросервисном хаосе
Когда вокруг десяток микросервисов, документация устарела, а на согласование архитектурного решения есть два дня, обсуждение быстро погружается в детали и теряет общую картину.
На примере внедрения кэширования в API‑шлюз разберём, как системному аналитику применять C4-модель: пройти от границ системы до зон ответственности внутри сервиса, зафиксировать сценарии сбоев и сохранить архитектуру в виде кода.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
Когда вокруг десяток микросервисов, документация устарела, а на согласование архитектурного решения есть два дня, обсуждение быстро погружается в детали и теряет общую картину.
На примере внедрения кэширования в API‑шлюз разберём, как системному аналитику применять C4-модель: пройти от границ системы до зон ответственности внутри сервиса, зафиксировать сценарии сбоев и сохранить архитектуру в виде кода.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
C4 для системного аналитика: как навести порядок в микросервисном хаосе
Всем привет, меня зовут Сергей Прощаев. Я Tech Lead и руководитель направления Java/Kotlin‑разработки в FinTech и E‑commerce, а ещё препо..
👍3🔥2
Проблема фантомной записи: почему ваша реализация идемпотентности незаметно теряет данные
В проде бывает так, что одна и та же операция часто повторяется: клиент не дождался ответа и ретраит, балансер порвал соединение, очередь переиграла сообщение. Вспоминаем про идемпотентность - это правило «повтор не должен создавать новый платёж/заказ».
Чтобы отличать повтор от новой операции, используют idempotency key (ключ идемпотентности). Это обычная уникальная строка-идентификатор, которую клиент или апстрим отправляет вместе с запросом (часто в заголовке
Далее приходит запрос с тем же ключом - сервис не выполняет бизнес-действие второй раз, а дедуплицирует на основе ключа идемпотентности. Но так ли всё просто? Многолетний опыт анализа инцидентов показал, что на практике большое количество систем всё же регулярно допускают дублирования, хотя делали всё по методичке.
Читать статью
Полезные ресурсы по Java👩💻 | Наш канал в MAX 🟪
В проде бывает так, что одна и та же операция часто повторяется: клиент не дождался ответа и ретраит, балансер порвал соединение, очередь переиграла сообщение. Вспоминаем про идемпотентность - это правило «повтор не должен создавать новый платёж/заказ».
Чтобы отличать повтор от новой операции, используют idempotency key (ключ идемпотентности). Это обычная уникальная строка-идентификатор, которую клиент или апстрим отправляет вместе с запросом (часто в заголовке
Idempotency-Key). Сервис сохраняет этот ключ у себя и связывает с результатом операции.Далее приходит запрос с тем же ключом - сервис не выполняет бизнес-действие второй раз, а дедуплицирует на основе ключа идемпотентности. Но так ли всё просто? Многолетний опыт анализа инцидентов показал, что на практике большое количество систем всё же регулярно допускают дублирования, хотя делали всё по методичке.
Читать статью
Полезные ресурсы по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
Проблема фантомной записи: почему ваша реализация идемпотентности незаметно теряет данные
Практическое объяснение того, почему идемпотентные API всё равно порождают фантомные записи в продакшене, и безгоночный транзакционный па..
👍3🔥2