4768. При падении потребителя после обработки сообщения, но до отправки подтверждения,
сообщение возвращается в очередь и обрабатывается снова. Какая гарантия доставки обеспечивается в этом сценарии?
сообщение возвращается в очередь и обрабатывается снова. Какая гарантия доставки обеспечивается в этом сценарии?
Anonymous Quiz
17%
Exactly‑once
79%
At‑least‑once
3%
At‑most‑once
1%
No guarantee
В RabbitMQ (и многих других брокерах) используется модель с подтверждениями: потребитель явно отправляет basic.ack после успешной обработки сообщения. Если потребитель упал до того, как отправил ack, брокер считает сообщение недоставленным и снова ставит его в очередь для другого потребителя или при перезапуске.
Что это даёт?
· Сообщение точно не будет потеряно (если брокер сохранил его на диск).
· Но оно может быть обработано более одного раза (например, если после обработки, но до ack случился сбой). Это называется at‑least‑once (как минимум один раз).
Почему не exactly‑once (A)?
Exactly‑once требует идемпотентной обработки и часто дополнительных механизмов (транзакции брокера, idempotent producer). Простой ack даёт только at‑least‑once.
Почему не at‑most‑once (C)?
At‑most‑once означал бы, что сообщение может потеряться. Здесь же брокер будет повторять доставку.
Реальный кейс:
В сервисе уведомлений использовали авто-ack (подтверждение сразу после получения, до обработки). При падении потребителя сообщения терялись — это at‑most‑once. Перешли на ручной ack после обработки — получили at‑least‑once, но иногда были дубликаты писем. Затем добавили идемпотентность на стороне потребителя (проверку по ID сообщения) и достигли exactly‑once.
Что должен знать аналитик:
· Гарантии доставки — это компромисс между надёжностью и производительностью.
· At‑least‑once подходит для большинства бизнес-сценариев, если потребитель идемпотентен.
· Если дубликаты недопустимы (финансы), требуйте exactly‑once или проектируйте идемпотентность.
Вывод: При описании интеграций аналитик должен явно указывать требуемую гарантию доставки и стратегию подтверждений. Это влияет на надёжность системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Сейчас в IT ощущается переломная фаза: компании уже не просто «закрывают вакансию аналитика», а ищут людей, которые умеют говорить и на языке бизнеса, и на языке продукта, и на языке разработки, без лишней воды и формализма.
Собрали папку, в которую складываем именно то, что реально помогает вникнуть в бизнес‑анализ и IT‑среду, а не просто «заполнить ленту».
Тут: разборы задач, примеры документов, чек‑листы, ссылки на качественные каналы и инструменты, которые помогают разобраться в профессии и не тонуть в потоке.
Сохранить папку себе 📨
Это хороший знак: рынок перестаёт довольствоваться «человеком‑исполнителем» и всё больше ценит тех, кто понимает, зачем нужен каждый документ, схема и требование, и как всё это связано в одну систему.
Собрали папку, в которую складываем именно то, что реально помогает вникнуть в бизнес‑анализ и IT‑среду, а не просто «заполнить ленту».
Тут: разборы задач, примеры документов, чек‑листы, ссылки на качественные каналы и инструменты, которые помогают разобраться в профессии и не тонуть в потоке.
Сохранить папку себе 📨
4769. Для системы заказов нужны: порядок событий для каждого заказа, 100 000 событий/с, отказоустойчивость. Какой брокер и настройка обеспечат баланс?
Anonymous Quiz
17%
RabbitMQ с классической очередью и несколькими потребителями
76%
Kafka с партиционированием по order_id и acks=all
2%
Redis Pub/Sub с постоянным хранением на диске
5%
ActiveMQ с персистентными очередями
Порядок сообщений: Kafka гарантирует строгий порядок внутри одной партиции. Если отправлять все события одного заказа с одинаковым ключом (order_id), они попадут в одну партицию и будут обрабатываться последовательно. RabbitMQ при нескольких потребителях порядок не гарантирует (даже с одним потребителем — да, но пропускная способность упадёт).
Высокая пропускная способность: Kafka рассчитана на 100 000+ событий/сек благодаря пакетной обработке, последовательной записи на диск и эффективному сжатию. RabbitMQ на таких объемах начинает деградировать (особенно с персистентностью).
Отказоустойчивость: acks=all в Kafka означает, что лидер ждёт подтверждения от всех реплик (in-sync replicas) перед ответом продюсеру. Ни одно сообщение не теряется, если хотя бы одна реплика жива. RabbitMQ с зеркалированием очередей тоже отказоустойчив, но при высоких нагрузках это снижает производительность сильнее, чем в Kafka.
Почему не подходят другие варианты?
A (RabbitMQ) — при нескольких потребителях порядок не гарантируется. Даже с одним потребителем пропускная способность будет ниже 100 000/с, особенно с персистентностью.
C (Redis Pub/Sub) — Pub/Sub не хранит сообщения для отставших потребителей (если потребитель упал — сообщения теряются). Redis Streams может, но уступает Kafka по масштабируемости.
D (ActiveMQ) — устаревший брокер, не рассчитан на такие нагрузки.
Реальный кейс:
Логистическая компания перешла с RabbitMQ на Kafka после того, как при пике 50 000 заказов/час порядок обработки начал нарушаться (сообщения одного заказа уходили разным потребителям). После настройки партиционирования по order_id и acks=all производительность выросла до 200 000/сек, а порядок стал строгим.
Что должен зафиксировать аналитик:
Выбор брокера не на вкус, а под требования: Kafka — для потоков больших объёмов с гарантией порядка и отказоустойчивостью; RabbitMQ — для сложной маршрутизации и малых/средних нагрузок.
В требованиях указать ключ партиционирования (order_id), настройку acks, количество реплик.
Вывод: Выбор брокера сообщений — архитектурное решение, влияющее на масштабируемость и надёжность. Аналитик должен понимать разницу, чтобы закладывать правильные нефункциональные требования.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
⏱️Папка скоро исчезнет. И это не кликбейт.
Если ты маркетолог и до сих пор откладываешь «посмотреть потом» — потом может не наступить.
Здесь не просто файлы.
Здесь то, что экономит часы работы, спасает от выгорания и даёт идеи, за которые обычно платят.
📌 Готовые решения, которые можно брать и внедрять;
📌 Формулировки, которые реально продают;
📌 Подходы, которые выделяют тебя среди остальных.
☝️Но есть нюанс.
Доступ к папке закрывается.
Без громких анонсов, без второго шанса и без «ещё пару дней подержим».
Если ты понимаешь, что тебе это нужно — забирай сейчас👇
https://t.me/addlist/KJwPBSB44eg5NTli
Потом останется только читать чужие результаты.
Если ты маркетолог и до сих пор откладываешь «посмотреть потом» — потом может не наступить.
Здесь не просто файлы.
Здесь то, что экономит часы работы, спасает от выгорания и даёт идеи, за которые обычно платят.
📌 Готовые решения, которые можно брать и внедрять;
📌 Формулировки, которые реально продают;
📌 Подходы, которые выделяют тебя среди остальных.
☝️Но есть нюанс.
Доступ к папке закрывается.
Без громких анонсов, без второго шанса и без «ещё пару дней подержим».
Если ты понимаешь, что тебе это нужно — забирай сейчас👇
https://t.me/addlist/KJwPBSB44eg5NTli
Потом останется только читать чужие результаты.
4770. В API заказа автотест в тесте стабилен, в бое падает при параллельных заказе и бонусе. Какой тип тестирования выявил бы дефект?
Anonymous Quiz
4%
Модульное тестирование
19%
Интеграционное тестирование
77%
Нагрузочное тестирование (или тестирование параллельных запросов)
0%
Тестирование безопасности
Нагрузочное тестирование (или тестирование параллелизма) специально симулирует одновременные запросы нескольких пользователей. Именно оно могло бы воспроизвести проблему на этапе тестирования до релиза.
❌ Почему не другие варианты:
A (модульное) — проверяет отдельные функции изолированно, race condition не поймает.
B (интеграционное) — обычно проверяет взаимодействие компонентов в последовательном режиме.
D (безопасность) — не относится к проблеме.
Реальный кейс: В интернет-магазине при параллельном оформлении заказа и начислении кешбэка иногда списывались лишние бонусы. Причина — отсутствие блокировки строки в БД. Нагрузочный тест с 50 одновременными пользователями выявил бы проблему.
Что должен сделать аналитик:
Включать в план тестирования сценарии параллельных запросов для критичных операций.
Требовать от команды проведения нагрузочных тестов перед релизом.
В требованиях указывать необходимость блокировок (пессимистических или оптимистических) для разделяемых ресурсов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
4771. После добавления промокода автотесты заказа упали. Баг исправлен, но тесты падают из-за нового поля в API. Какой вид тестирования нужен?
Anonymous Quiz
14%
Модульное тестирование
74%
Тестирование контрактов (Contract testing)
7%
Нагрузочное тестирование
5%
Юзабилити-тестирование
❤1
Разработчик изменил API (добавил новое поле в ответ), но не уведомил команду, которая пишет автотесты на клиентской стороне. Старые тесты ожидали старый формат ответа и упали. Это классический пример ломающего изменения (breaking change) в контракте между сервисами.
Что такое тестирование контрактов?
Это практика, при которой обе стороны (поставщик API и потребитель) договариваются о спецификации (контракте) и автоматически проверяют, что ни одна сторона не нарушает его. Инструменты: Pact, Spring Cloud Contract, Postman с коллекциями.
Как это работает:
Потребитель пишет тест, в котором описывает ожидаемый формат ответа (поля, типы, обязательность).
Поставщик API запускает эти тесты в своём CI и не может выкатить изменение, которое их ломает, без согласования.
Пример контракт-теста на Pact (Python):
```python
from pact import Consumer, Provider
def test_order_contract():
expected = {
"order_id": 123,
"total": 1000,
"delivery_discount": 0 # новое поле
}
# Ожидаем, что API вернёт именно такую структуру
...
```
❌ Почему не другие варианты:
A (модульное) — проверяет функции изолированно, не поймает изменение API.
C (нагрузочное) — проверяет производительность, а не корректность формата.
D (юзабилити) — про удобство интерфейса.
Реальный кейс:
В микросервисной архитектуре компании из 20 сервисов каждый месяц происходило несколько инцидентов из-за несовместимых изменений API. После внедрения контракт-тестов с Pact число таких инцидентов упало до нуля.
Что должен сделать аналитик:
Включить в определение готовности (DoD) требование наличия контракт-тестов для всех публичных API.
Фиксировать в спецификации обязательные и опциональные поля, а также версионирование API.
Требовать, чтобы breaking changes вводились только с новой версией API (v1, v2).
Вывод: Тестирование контрактов — это страховка от неожиданных изменений API, которые ломают интеграции. Аналитик, знающий этот инструмент, помогает команде избежать многих ночных дежурств. 🎯
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Заработай за месяц от 50000₽ на входящих заявках
Ниже делюсь экспертами, которые помогают выстроить систему продаж. Вы получаете гарантированный результат без выгораний и стресса.
Добавляй папку экспертов к себе и начинай зарабатывать уже сегодня
Все методы работают 💯. Начни делать продажи и ты
Все уже готово за тебя. Просто бери и делай https://t.me/addlist/yWaHGpxI5ethOGYy
Добавляй себе всю папку https://t.me/addlist/yWaHGpxI5ethOGYy и
Записывайся в подборку🫶
Ниже делюсь экспертами, которые помогают выстроить систему продаж. Вы получаете гарантированный результат без выгораний и стресса.
Добавляй папку экспертов к себе и начинай зарабатывать уже сегодня
Все методы работают 💯. Начни делать продажи и ты
Все уже готово за тебя. Просто бери и делай https://t.me/addlist/yWaHGpxI5ethOGYy
Добавляй себе всю папку https://t.me/addlist/yWaHGpxI5ethOGYy и
Записывайся в подборку
Please open Telegram to view this post
VIEW IN TELEGRAM
4772. В микросервисной системе при оформлении заказа нужно: проверить остатки, зарезервировать товар, списать деньги (платежи), отправить уведомление. Сервис склада часто тормозит. Какой подход минимизирует задержку для пользователя и не потеряет заказы?
Anonymous Quiz
5%
Синхронно вызвать все сервисы в цепочке: склад → платежи → уведомления
78%
Асинхронно через брокер: принять заказ, ответить клиенту, выполнить шаги с компенсациями при ошибке
3%
Вызывать сервисы параллельно и ждать все ответы
14%
Использовать распределённую транзакцию (2PC)
Пока одни «присматриваются» к нейросетям— другие уже зарабатывают на этом 💵
И самое интересное — порог входа сейчас минимальный.
Не нужно быть программистом.
Нужно только одно:
понимать, как именно использовать ИИ под свои задачи.
Я тут собрал папку с экспертами в этой теме.
Можешь добавиться и посмотреть, как это делают другие 👇
https://t.me/addlist/A0vy8zWBM1gyNTky
Please open Telegram to view this post
VIEW IN TELEGRAM
Решение — асинхронная сага (Saga):
Пользователь нажал «Оформить» → система сразу отвечает «Заказ принят в обработку».
Событие OrderCreated кладётся в брокер (Kafka/RabbitMQ).
Отдельные обработчики (часто воркеры) слушают события и выполняют шаги: резервирование, списание, уведомление.
Если шаг упал (например, товара нет), запускается компенсация: возврат денег, отмена резерва.
Пример кода (Kafka + компенсация):
```python
# Сервис заказов
def create_order(order):
save_to_db(order, status='PENDING')
kafka.send('order_created', order)
return {"status": "accepted", "order_id":
# Сервис склада
def on_order_created(order):
if reserve_stock(order.items):
kafka.send('stock_reserved', order)
else:
kafka.send('stock_failed', order)
# Сервис платежей
def on_stock_reserved(order):
if process_payment(order):
kafka.send('payment_succeeded', order)
else:
kafka.send('payment_failed', order)
# Компенсация
def on_stock_failed(order):
kafka.send('compensate_payment', order) # возврат денег
```
Почему это выигрывает:
Пользователь не ждёт — UX высокий.
Система не блокируется на тормозящем сервисе склада.
При сбое можно откатить через компенсации (eventual consistency).
Легко масштабировать обработчики.
Реальный кейс: В Ozon при оформлении заказа пользователь сразу видит подтверждение, а резервирование и оплата идут фоном. Если товар закончился — приходит push‑уведомление, а деньги возвращаются автоматически. Это и есть асинхронная сага.
Что должен заложить аналитик:
Асинхронность для длительных операций.
Идемпотентность обработчиков (чтобы дубликаты не ломали логику).
Компенсации для каждого шага (откат).
Мониторинг «зависших» саг.
Вывод: Асинхронная сага — стандарт для микросервисов, где важна скорость отклика и слабая связанность. Аналитик, предлагающий такое решение, спасает и пользовательский опыт, и надёжность. 🎯
Please open Telegram to view this post
VIEW IN TELEGRAM
Всё, можно выдыхать — мы собрали для вас идеальную папку Telegram-каналов 📱 по схеме ALL IN ONE 🔥
Серьёзно. Больше не нужно мониторить сотни источников в надежде найти адекватных авторов. Мы сделали это за вас и заодно попали в эту ПОДБОРКУ сами ✔️
Что внутри? Только лучшее:
* ИИ — не хайп, а реальные инструменты и внедрения
* Технологии — тренды, обзоры, инсайты от первых лиц
* Карьера — как найти работу, вырасти и не выгореть
* HR Tech — кто и как нанимает профессионалов прямо сейчас
* AI Life hacks — как выжить и зарабатывать за границей с помощью возможностей ИИ
Открываете вечером, завариваете что покрепче — и улетаете в чтение с пользой 📑
ПАПКА 👈 здесь, забирайте - там реально круто 👌
📌 Добавляйте в избранное и скидывайте ссылку коллегам. Отписаться можно в любой момент. Остаться — тоже ✔️ * Ссылка ➡️ https://t.me/addlist/g24qP0CEdUs5N2Jk
Серьёзно. Больше не нужно мониторить сотни источников в надежде найти адекватных авторов. Мы сделали это за вас и заодно попали в эту ПОДБОРКУ сами ✔️
Что внутри? Только лучшее:
* ИИ — не хайп, а реальные инструменты и внедрения
* Технологии — тренды, обзоры, инсайты от первых лиц
* Карьера — как найти работу, вырасти и не выгореть
* HR Tech — кто и как нанимает профессионалов прямо сейчас
* AI Life hacks — как выжить и зарабатывать за границей с помощью возможностей ИИ
Открываете вечером, завариваете что покрепче — и улетаете в чтение с пользой 📑
ПАПКА 👈 здесь, забирайте - там реально круто 👌
📌 Добавляйте в избранное и скидывайте ссылку коллегам. Отписаться можно в любой момент. Остаться — тоже ✔️ * Ссылка ➡️ https://t.me/addlist/g24qP0CEdUs5N2Jk
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1