📡 Kafka: когда сообщений слишком много.
В прошлом посте мы разобрались, зачем вообще нужны брокеры сообщений.
Теперь пойдём глубже👉 поговорим про одну из самых известных систем: ⏭ Kafka⏮
Она не просто передаёт данные, а умеет держать огромные потоки событий, не теряя ни байта информации.
📎 Что такое Kafka?
📎 Как она устроена?
💡 Пример:
📎 Чем Kafka отличается от обычной очереди?
📎 Когда она нужна?
Kafka особенно полезна там, где всё крутится вокруг данных: маркетплейсы, платёжные сервисы, аналитика, телеметрия.
📎 Что важно знать аналитику или "от меня что требуется?" 😐
‼️ какие топики существуют и какие события туда пишутся
‼️ кто продюсер (отправляет), а кто консьюмер (читает)
‼️ какие гарантии нужны: “хотя бы один раз” или “ровно один раз”
‼️ как долго хранятся сообщения (retention).
Kafka выдерживает огромные нагрузки и хранит историю, как хронику системы.
💬 Если RabbitMQ - это надёжная почта, то Kafka - это радиоэфир: все слушают, но каждый выбирает, с какого момента включиться.
В прошлом посте мы разобрались, зачем вообще нужны брокеры сообщений.
Теперь пойдём глубже
Она не просто передаёт данные, а умеет держать огромные потоки событий, не теряя ни байта информации.
Это распределённая система для обмена потоками сообщений.
Её задача не просто доставлять данные, а удерживать поток.
Можно перечитывать историю, возвращаться назад или подключаться к нужному моменту, как к записи эфира.
Сообщения не складываются в “очередь”, а записываются в топики как в журнал событий.
Внутри топика данные делятся на партиции, чтобы можно было обрабатывать тысячи сообщений одновременно.
👉 сервис заказов пишет событие “создан заказ” в топик "orders"👉 сервис аналитики слушает топик "order" и считает статистику.👉 сервис уведомлений тоже подписан на топик "orders", чтобы отправить письмо клиенту.
В итоге каждый "читатель" работает независимо, не мешая другим.
В RabbitMQ сообщение исчезает после обработки.
В Kafka оно остаётся.
Каждый потребитель хранит “указатель”, где он остановился, и может перечитать с нужного места.
Это удобно, когда нужно анализировать историю или восстановить данные после сбоя.
✅ Когда поток событий идёт постоянно: логи, клики, заказы, метрики.✅ Когда важно не потерять ни одного сообщения.✅ Когда системы обрабатывают данные параллельно, а не по очереди.
Kafka особенно полезна там, где всё крутится вокруг данных: маркетплейсы, платёжные сервисы, аналитика, телеметрия.
Kafka выдерживает огромные нагрузки и хранит историю, как хронику системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥1
В прошлом посте мы говорили про Kafka и что она умеет.
Но не всем нужна такая махина, иногда системам просто нужно обменяться сообщениями.
Вот тут вступает
Но если получатель временно недоступен, сообщение теряется...
RabbitMQ решает эту проблему, он:
Он не бросает посылку у двери, а хранит её у себя, пока получатель не получит и не откроет.
Если не получилось доставить
Он решает, в какую очередь положить сообщение и кто его получит.
Иногда сообщение нужно передать конкретному сервису
А иногда
А если сообщений много и они разного типа, подключается topic exchange, который умеет фильтровать их по шаблонам вроде order.created или order.cancelled.
Самое приятное
Когда получатель забрал сообщение и обработал его, он отправляет брокеру подтверждение
Если подтверждения нет, сообщение возвращается обратно.
Ничего не пропадает, просто откладывается “на потом”.
Можно даже настроить, чтобы несколько сервисов забирали сообщения параллельно
🐰RabbitMQ не пытается быть универсальным решением.
Он просто делает своё дело: хранит, доставляет и повторяет, если нужно.
Поэтому его особенно любят там, где важна стабильность и предсказуемость.
🐰RabbitMQ 👉 это та самая система, которая не суетится)
Она не ломается от нагрузки и не теряет данные, просто доставляет точно и вовремя.
💬 Если Kafka 👉 это радио, где всё звучит одновременно,
то RabbitMQ 👉 это почтовое отделение: письма лежат в ящике и ждут, пока их аккуратно разберут.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3👍2
Мы уже поговорили про брокеры: Kafka держит потоки, RabbitMQ передаёт сообщения надёжно.
Но представь, что систем становится десятки.
Каждая связана с каждой и теперь у тебя паутина, где одно изменение может задеть половину проекта.
Вот тут и пригождается сервисная шина, когда брокера уже мало.
Брокер - это просто транспорт: отправил➡️ доставил.
Но он не думает кому это нужно, в каком порядке и что делать дальше.
Если систем много, без координации начинается путаница:
каждая пишет другим напрямую, логику обмена никто не контролирует.
Шина решает эту проблему: она становится центром, через который всё проходит.
В общем, это не просто очередь, а целая инфраструктура.
Она знает, кто отправитель, кто получатель, и как трансформировать данные между ними.
Сервис отправляет сообщение “новый заказ создан”➡️ шина решает, кому это важно: складу, бухгалтерии, CRM.
Если нужно, меняет формат данных и отправляет каждому в его виде.
Можно сказать, что шина - это брокер с мозгами)
Допустим, у тебя десяток систем: заказы, платежи, уведомления, аналитика.🫡 Без шины между ними десятки точек связи, и любое изменение превращается в квест.🙏 С шиной у каждой системы одно соединение👉 к шине.
Они не знают друг о друге, но всё работает.
1️⃣ Брокер просто хранит и доставляет сообщения.2️⃣ Шина управляет маршрутизацией, преобразованием данных и контролем потоков.
У шины есть правила, мониторинг, логирование и даже возможность “приостановить” интеграцию.
↗️ Когда интеграций десятки, и они начали мешать друг другу.↗️ Когда нужно централизовать маршрутизацию и логику обработки.↗️ Когда хочется единый контроль: видеть все обмены, ошибки и задержки.
Для аналитика шина
Ты видишь, что с чем связано, какие форматы проходят, где упало и почему.
И это уже не просто обмен данными, а полноценная архитектура!
Шина не всегда обязательна, если у тебя пара систем, то хватит и RabbitMQ.
Но когда связей становится слишком много, без шины проект превращается в клубок...
И когда данных становится слишком много, порядок - это тоже интеграция)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3👏3
Каждая система что-то делает, реагирует на события других, запускает свои процессы.
И тут важно не просто знать “кто с кем общается”, а кто управляет этим взаимодействием.
Хореография
Представь, что системы обмениваются событиями напрямую.💬 Одна система отправляет сообщение “заказ создан”, и дальше никто ни с кем не согласовывает, остальные просто реагируют.💬 Склад резервирует товар, бухгалтерия создаёт счёт, CRM обновляет статус клиента.
Никакого центрального координатора нет.
Такой подход прост и гибок: добавляешь новый сервис и он просто подписывается на нужные события.🙂 Но и минусы очевидны: если в цепочке что-то пошло не так, найти причину сложнее, потому что событий много, логики централизованной нет.
Оркестрация
Здесь появляется отдельный компонент - оркестратор.
Он знает последовательность шагов и управляет ею
✅ Создать заказ✅ Проверить оплату✅ Подтвердить склад✅ Отправить уведомление
Если что-то падает👉 оркестратор понимает, где именно, и решает, откатить ли процесс или повторить попытку.
Это похоже на режиссёра, который координирует актёров: каждый играет свою роль, но по единому сценарию)
На практике часто комбинируют: часть процессов живёт “по событиям”, а ключевые шаги управляются оркестратором.
Оркестратор не мешает работать, он просто помогает всем действовать синхронно.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥4👍3
WebSocket, Webhook, Callback и Fallback
Теперь пора поговорить о том, как они дают ответ.
один пишет, второй читает, третий “я занят, перезвоню позже”, а четвёртый вообще молчит до последнего.
Другими словами, WebSocket
Не “отправил запрос
"Я здесь, ты здесь, давай держать линию открытой"
➡️ клиент подключился➡️ сервер держит соединение открытым;➡️ как только что-то изменилось - клиент узнаёт мгновенно.
Это идеальный вариант для чатов, торгов, трекинга статуса “в реальном времени”.
Всё шустро, без опросов и лишних телодвижений.
То есть Webhook
"Я позвоню сама, не жди меня у порога"
Платёж прошёл➡️ платёжка прислала тебе уведомление➡️ ты обновил статус заказа.
Никаких постоянных опросов, никакого “а что там у них?”. Webhook сам всё расскажет.
Один сервис выполняет долгий процесс, а потом вызывает твой обратный метод:
"Всё, закончил, можешь продолжать работу".
то callback
И вот самый жизненный механизм. Fallback
Когда основной сервис внезапно “ушёл покурить”, а пользователю нужно показать хоть что-то.😖
🆖 Что делают:
➡️ возвращают данные из кэша
➡️ подставляют упрощённый ответ
➡️ повторяют попытку через время
➡️ идут по запасному маршруту
🆖 Типичная ситуация:
Сервис профиля лежит ➡️ возвращаем последний сохранённый профиль ➡️ обновляем позже.
Пользователю хорошо, системе тоже не больно)
🤏Как легко отличать всё это?
➡️ WebSocket - постоянное соединение.
Почти как телеграм чат: написал ➡️ сразу прилетело.
➡️ Webhook - уведомление от внешней системы.
Как доставка: "Ваша посылка прибыла в пункт выдачи".
➡️ Callback - уведомление от своей же системы.
Как коллега: "Я всё сделал, смотри".
➡️ Fallback - запасной сценарий.
Как когда интернет пропал, а видео всё равно доигрывает из буфера - примерно та же логика.
💬Если раньше эти четыре слова казались чем-то туманным, то теперь ты точно можешь объяснить их человеку без диаграмм и UML.
А значит ➡️ пост справился со своей миссией 😎.💬
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥2👍1
🧩 Интеграция глазами аналитика
😏 За этот месяц мы разобрали многое:
REST и SOAP, брокеры, Kafka, RabbitMQ, шину, оркестрацию.
Снаружи всё это кажется сложным, но внутри - лишь логика и здравый смысл)
❣️ Для аналитика интеграция - это знание, как системы понимают друг друга и не теряют смысл в пути.
Когда ты работаешь с интеграцией, важно смотреть шире, чем на запросы и поля.
👉 Спрашивать себя:
Интеграция - это всегда история о надёжности и она не должна зависеть от удачи.
‼️ Поэтому хороший аналитик видит не только, что передаётся, но и почему именно так.‼️
Он умеет объяснить, зачем нужен брокер, почему REST подходит здесь, а SOAP - там.
👉 Иногда интеграция выглядит просто: “отправили - получили”.
🔻 Но на деле за этим стоит десяток решений, проверок и точек синхронизации.
И именно аналитик держит этот контур в порядке.
💬 Сохрани эти посты, перечитай через пару месяцев и посмотри, как изменится твой взгляд на интеграции)
REST и SOAP, брокеры, Kafka, RabbitMQ, шину, оркестрацию.
Снаружи всё это кажется сложным, но внутри - лишь логика и здравый смысл)
Когда ты работаешь с интеграцией, важно смотреть шире, чем на запросы и поля.
❓ кто инициирует процесс❓ куда идут данные и зачем❓ что будет, если один из участников “молчит”❓ как понять, что всё сработало правильно
Интеграция - это всегда история о надёжности и она не должна зависеть от удачи.
Он умеет объяснить, зачем нужен брокер, почему REST подходит здесь, а SOAP - там.
И именно аналитик держит этот контур в порядке.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2
Так, с интеграцией вроде разобрались.
Теперь перейдём к тому, о чём почти не пишут, но что отличает аналитика, который “делает задачи”, от аналитика, который рулит проектом - это умение видеть систему целиком.
Когда ты только начинаешь работать аналитиком, кажется, что главное - это разобраться в задаче и описать её так, чтобы разработчики всё поняли.🙂
Но со временем ловишь себя на мысли:
можно идеально расписать маленький кусочек, но если не понимаешь, где он живёт, то результат будет не всегда удачным...😔
Тогда и приходит
Система - это просто набор вещей, которые связаны между собой: сервисы, роли, данные, процессы, события.
Каждый элемент что-то делает не просто так, а потому что на него что-то влияет и он влияет на других.
Иногда система огромная (торговая площадка), а иногда маленькая (процесс восстановления пароля)
Если ты работаешь только в рамках своей задачи, легко сделать что-то логичное локально, но странное глобально...
Ты добавляешь поле в профиль. Локально - всё супер.
А потом выясняется, что это поле участвует в регистрации, выгружается в отчёт, влияет на фильтр в админке и вообще зачем-то подтягивается в интеграцию...😒
Системное мышление как раз помогает этого избежать.
➡️ какие процессы затронет моя задача➡️ что сломается, если изменить это поле➡️ кто потребляет эти данные➡️ какой сервис будет страдать первым
Это когда перед тем, как писать задачу, ты автоматически думаешь:
Меньше уточнений, меньше переделок, меньше “мы это не учли”.
Это часть одной большой конструкции.
И чем раньше ты увидишь конструкцию, тем спокойнее у тебя будет жизнь (и у команды тоже).
📣 Если хочешь прокачать этот навык на реальных задачах — на курсе мы как раз работаем с настоящими проектами.
Системное мышление там появляется не из теории, а из практики, приходи!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥4👍3
Мало кто думает о том, что хорошие вопросы в работе аналитика экономят времени больше, чем любое шикарное ТЗ.
Если честно, этот вопрос выбивает из контекста хуже любого звонка.
Человек не знает, на что он соглашается, поэтому лучше сразу написать, что тебе нужно:
"Мне нужно уточнить один момент по задаче с интеграцией. Написала ниже, посмотри, пожалуйста"
Нет ничего хуже, чем вопрос, который можно было решить за 10 секунд поиском.
Когда же ты даёшь контекст, человек видит, что разговор будет предметный:
"Я проверила метод getUser он отдаёт статус 'false'. Хочу понять, это всегда так или есть исключения?"
Когда ты пишешь длинный текст с кучей вопросов, кто-то обязательно что-то пропустит.
Не потому что игнорирует, а потому что это просто тяжело читать в мессенджере.
"Уточню три момента, они связаны между собой:
- кто формирует дату?
- обновляется ли она?
- зависит ли от неё другой процесс?"
это делает переписку чище и добавляет структуры.
Вот это
"Почему метод не работает?"
А вот это
"Метод возвращает ошибку на таких данных, вот пример. Я подозреваю, что проблема может быть в поле userId. Правильно думаю?"
Во втором варианте человек понимает, куда смотреть и как помочь.
Не нужно комплиментов, смайликов и "сорри, что отвлекаю".
Достаточно просто быть аккуратным в формулировках, задавать контекст и люди начинают отвечать охотнее, даже те, кто обычно пишет “давай завтра”))
Уметь правильно задавать вопросы - это не врождённый талант, а привычка думать на шаг вперёд: что человек увидит, глядя на мой текст, и сможет ли он быстро помочь?
И если иногда кажется, что ты "слишком подробно" пишешь - поверь, это лучше, чем полдня тянуть из человека ответ по слову.
А если кто-то отвечает быстро и по делу - значит, ты задал хороший вопрос!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2👍1😁1
Если честно, умение находить границы системы - один из недооценённых навыков аналитика.
Пока его нет, кажется, что ты отвечаешь за всё: и за то, что происходит внутри сервиса, и за то, что происходит в трёх соседних командах, и иногда даже за погоду за окном...
А потом в какой-то момент задаёшь себе вопрос: “секунду… это вообще не наша ответственность”.
И работа становится спокойнее в разы.
Это ответ на простой вопрос: "Где заканчивается наша зона влияния?"
И это не абстракция, а очень практичная штука: она помогает не писать лишние требования, не чинить чужие проблемы и не обещать то, что твой сервис вообще не делает.
Есть маленький признак:
если ты начинаешь придумывать логику, которую твоя система не может выполнить физически, значит, ты уже в чужом огороде.
Если сервис умеет только “создать заказ”, он не обязан “проверять склад”, “выставлять счет”, “отправлять уведомления” и ещё полдня решать судьбу пользователя. Он просто создаёт заказ и точка.
Дальше подключаются другие сервисы.
Если очень упростить, то любая система - это: что она принимает, что она отдаёт, и что происходит между этими двумя точками.
Всё, что происходит до и после - это уже территория других.
Когда смотришь на задачу через эту призму, решение почти всегда становится проще.
Ты перестаёшь пытаться “впихнуть невпихуемое”, и начинаешь описывать только то, что реально влияет на твой сервис.
На реальных проектах тебе никто не даст листочек “вот наша зона ответственности”.
Иногда сервисы перепутаны, процессы зависят друг от друга, а документация покрыта пылью.
Ответы чаще всего сами рисуют границу так чётко, что дальше уже не запутаешься.
Звучит героично, но работает плохо и малоэффективно.
Границы системы - это не ограничение, а ориентир который помогает не тащить на себя чужие задачи и не усложнять проект там, где всё и так работает. И чем раньше ты начинаешь их чувствовать, тем спокойнее становится работа: и твоя, и всей команды)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3🤝2
Не нужно пытаться сразу понять весь процесс.
Для начала разберись, что к нам приходит.
Это может быть:🔵 запрос от пользователя,🔵 webhook от внешней системы,🔵 файл, который загрузили,🔵 событие из брокера,🔵 или просто параметр, который где-то кто-то передал.
Если входы не ясны, дальше никак...
Система не может сделать то, для чего у неё нет данных.
🔵 откуда пришла информация🔵 кто её формирует🔵 что гарантированно будет в запросе, а что может отсутствовать🔵 есть ли у данных история или контекст
Иногда один ответ “а вот это к нам не приходит” меняет половину решения.
То есть это не только успешный ответ. Это:🔵 ошибки,🔵 статусы,🔵 события,🔵 побочные эффекты,🔵 или даже просто тишина (да, такое тоже бывает).
Когда ты понимаешь выход, ты понимаешь зачем существует весь процесс.
Потому что система делает не “действия”, а производит результат.
🔵 что внешний мир должен получить после выполнения операции🔵 нужно ли уведомление🔵 может ли результат зависеть от состояния🔵 что будет считаться корректным выходом, а что ошибкой.
Очень часто задача перестаёт быть туманной, когда ясно, что мы должны отдать наружу.
Это самый тихий, но самый важный элемент. Это то, что система запоминает.
Например:🔵 создали заказ → статус “новый”🔵 пользователь сменил пароль → поле обновилось🔵 запущен процесс модерации → выставлен признак, что проверка началась
Состояние определяет, что можно делать дальше.
Если его неправильно понять, то процесс будет ломаться точно так же, как реальная жизнь, когда кто-то забыл, что у него сегодня дедлайн..
🔵 что внутри системы меняется после операции🔵 какие переходы возможны дальше🔵 какие ограничения появляются🔵 что должно храниться, чтобы процесс работал предсказуемо
Иногда именно состояние показывает, что логика вообще лежит в другом месте, и ты просто смотрел не туда.
Потому что ты перестаёшь метаться между деталями.
Процесс превращается из длинного “что-то где-то происходит” в три чёткие точки:
Если эти три вещи понятны, всё остальное становится только техникой)
Это один из тех навыков, которые сначала кажутся “слишком простыми”, а потом оказываются фундаментальными.
Когда ты начинаешь смотреть на задачи через входы, выходы и состояние, системное мышление включается само собой.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤3🤝3👍1
(
вот тут только кнопку добавить,
вот тут новый метод создать,
вот тут новое поле просят на странице сайта.
Сделаем быстренько и пойду кайфовать.🧘
Прям буквально: одно действие запускает следующее, то меняет данные, а это уже влияет на другой кусок логики.
И если эти связи не замечать, можно легко написать требования, которые вроде нормальные…но в реальности столько геморроя тебе создадут.
Проще всего смотреть на задачу как на короткую цепочку. Не UML, не диаграмму, просто цепочку:
что произошло➡️ что система сделала из-за этого➡️ что стало доступно дальше
1️⃣ пользователь нажал кнопку2️⃣ система сохранила действие3️⃣ после этого появилась возможность сделать следующий шаг
Потому что, когда их не видишь, задачи кажутся нелогичными.
Ты думаешь: "Что за баги появились? Я же описал всё нормально.."
А оказывается, что система ведёт себя правильно, это просто ты не учёл шаг, который для неё обязателен, а для тебя просто неочевиден.
И всё, особо сильно погружаться не надо. Этого достаточно, чтобы увидеть цепочку
Когда начинаешь видеть связи между шагами, задачи становятся структурно логичными.
Ты не пытаешься держать в голове всю систему и каждую мелочь, просто понимаешь, что одно действие приводит к другому.
И это помогает писать требования так, чтобы система вела себя предсказуемо. (
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4💯3❤2🔥1
Слово SRS у многих новичков вызывает примерно одну реакцию:
"так, кажется, я ещё не на этом уровне"
Как будто SRS это что-то очень большое, формальное и доступное только “настоящим” аналитикам.
На самом деле пугает не сам SRS, а сразу несколько вещей, которые с ним обычно идут в комплекте.
Что каждый раздел обязателен, каждое слово важно, и если что-то упустишь, то всё, провал...
И появляется ощущение, что писать его нужно сразу идеально. Без "пока не ясно", без вопросов, без черновиков.
Этот страх очень понятен. SRS это ответственность и новичков она реально напрягает.
На самом деле SRS это не проверка на профпригодность)
И поэтому в следующем посте логично поговорить о другом важном моменте:
и
Please open Telegram to view this post
VIEW IN TELEGRAM
✍4🔥3❤2
Не "ничего не ясно", а именно "что-то здесь не так".
Вот про это ощущение и поговорим
Первая мысль у новичка обычно такая: "Наверное, я просто ещё не разобрался"
И он идёт перечитывать описание ещё раз. Потом ещё....
Потом начинает задавать вопросы и вопросы получаются странные, потому что непонятно, с чего вообще начинать.
На самом деле проблема часто не в тебе, а в том, что задача реально сырая.
Например: "Нужно добавить кнопку" или "Нужно расширить функциональность формы".
И всё..без контекста/цели/понимания, что изменится после этого.
задача почти наверняка просто не готова к работе!
Фразы вроде: "ну это очевидно"или "пусть работает как раньше" и т.д.
Они вроде звучат нормально, но на практике означают, что каждый понимает задачу по-своему.
А потом все очень удивляются результату. Поэтому если в задаче много таких мест, то это сигнал.
ты не можешь коротко пересказать задачу своими словами.
То есть не на страницу, не "в целом", а просто в двух-трёх предложениях.
☝🏻Важно вот что: сырая задача это не чья-то ошибка, а нормальное состояние на старте)
Ошибка начинается тогда, когда с сырой задачей идут дальше, надеясь "разобраться по ходу".
✔️ Поэтому со временем у аналитика вырабатывается привычка:
не торопиться "делать", а сначала честно признать, мол, "да, здесь пока нечего делать, тут надо думать".
✔️ И вот тут как раз очень помогает фиксация требований:
хоть в простом документе, хоть в черновом SRS, хоть в виде заметок.
Главное вытащить неясности наружу, а не тащить их с собой дальше.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤4👍3
Это одна из самых частых ловушек в анализе. И в неё попадают вообще все, особенно в начале.
и внезапно ловишь себя на том, что описываешь уже не задачу, а решение. Причём подробно, с любовью и схемами в голове.
"Нужно добавить проверку перед отправкой формы".
"При нажатии на кнопку система должна вызвать метод X, проверить поле Y и показать сообщение…"
И это нормально просто потому, что ты залез в реализацию.
Нужно сохранить признак, что пользователь уже проходил этот шаг
Добавить поле is_step_completed в таблицу users
система должна помнить, что пользователь был на этом этапе,
чтобы дальше вести себя иначе.
я описываю поведение системы или конкретный технический способ?🤔
Аналитик не обязан быть оторван от реализации.
Но думать о ней и фиксировать её в требованиях
тем меньше правок, споров и переписываний потом прилетает.
Если пост был полезен, жми любую реакцию, это реально помогает каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6💯4👍2🔥2
А потом проходит пара дней и начинается база.
И выясняется, что один и тот же разговор каждый понял по-своему..
Потому что устная договорённость живёт ровно до первого расхождения в интерпретациях.
Пока всё идёт по плану, то кажется, что проблем нет.
Но как только появляется спорный момент, выясняется, что опереться не на что и каждый помнит "свою версию".
На созвоне договорились: "Сделаем проверку перед отправкой".
Звучит понятно, да?
Но "как сейчас" для разных людей вообще не одно и то же.
Особенно если "сейчас" уже менялось три раза .
Кажется, что всё зафиксировано, но на деле нет.
всё важное должно где-то жить в зафиксированном виде.
Не обязательно сразу писать идеальный документ, иногда достаточно пары абзацев в задаче или короткой заметки:
И главное
И внезапно разговоры становятся спокойнее, а фраза "мы это не обсуждали" начинает звучать сильно реже)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🤝6🔥4
Этот год был…непростым.
Особенно для тех, кто только начинает путь, учится, пробует, откликается на вакансии и иногда получает тишину в ответ.
С задачами "на пять минут", которые оказывались не такими уж простыми.
С требованиями, которые вроде понял, а потом снова перечитываешь.
С ощущением, что стараешься, а результата пока не видно.
Мы правда знаем, как это ощущается.
Но важно помнить одну вещь
Каждый разобранный термин, каждый прочитанный пост, каждый вопрос, который ты задал - это шаг.
Даже если сейчас кажется, что он маленький.
Рынок сейчас сложный, да. Но это не значит, что ты не подходишь!
Это значит, что путь может быть длиннее, чем хотелось бы.
Мы будем рядом.
Будем объяснять сложное простыми словами, делиться опытом и поддерживать, когда кажется, что всё идёт не так.
Отдыхайте, выдыхайте, набирайтесь сил.
А после праздников продолжим идти дальше вместе.
С наступающим!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🥰4
Рано или поздно аналитик упирается в вопрос "а где вообще это всё будет храниться?"
И начинают всплывать слова: PostgreSQL, MongoDB, Redis, ClickHouse…
И если ты в начале пути, это звучит примерно как набор случайных названий.
Давай разберёмся и начнём с самого базового
Это те самые "таблички", строки и колонки.
Если ты работал с PostgreSQL, MySQL, Oracle, то это оно.
Их главный плюс - структура и порядок. Есть схема, есть связи между таблицами, есть чёткие правила.
Поэтому почти вся классическая бизнес-логика живёт именно тут.
Тут чуть запутаннее, потому что NoSQL это не один тип, а сразу несколько разных подходов.
Но за гибкость обычно платят строгими связями и проверками.
Самый известный пример - Redis. Тут всё максимально просто: ключ → значение.
Никаких сложных запросов, никаких связей, зато очень быстро.
Не для сложной логики, а для скорости.
Например, ClickHouse. Они заточены под аналитику и отчёты.
Не "что сейчас происходит", а "покажи статистику за полгода по миллиону записей".
Не чтобы выбирать СУБД вместо архитектора, а чтобы:
Когда ты знаешь, как примерно хранятся данные,
ты начинаешь писать требования более приземлённо и реалистично.
Нет "лучшей" СУБД, есть подходящая под конкретную задачу.
И чем раньше аналитик это понимает, тем меньше потом странных ожиданий от системы)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥2
(и почему это не всегда IT)
сервисы, базы, интеграции и т.д.
Но в работе аналитика выясняется, что системы это вообще не только про IT и что иногда код - это самая простая часть.
Система - это когда есть:
1) какие-то элементы, 2) связи между ними, 3) правила, по которым всё это живёт.
И становится понятно, что систем вокруг нас сильно больше, чем кажется.
Есть люди, есть шаги, есть правила, есть исключения, есть состояния "на согласовании", "отклонено", "вернули с комментариями".
Это система? Да. Даже если там нет ни одной строки кода.
У каждого своя роль, своя зона ответственности, свои ожидания.
Кто-то принимает решения, кто-то исполняет, кто-то проверяет.
Не потому что сервис упал, а потому что:
Иногда техническая часть работает идеально,
но результат всё равно плохой просто потому что сама система вокруг неё кривая.
Потому что аналитик работает не только с требованиями, но и с системами в широком смысле:
И это очень упрощает жизнь.
А иногда - процесс. А иногда всё сразу)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥2👌2
Как аналитик понимает, что в обсуждении говорят про разные вещи (используя одни и те же слова)
Есть очень коварная ситуация, с которой аналитики сталкивались кучу раз🔜
Вы обсуждаете одну задачу, используете одни и те же слова. Все кивают, все согласны)
А потом оказывается, что каждый имел в виду вообще своё...😕
➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖
Обычно это выглядит безобидно, кто-то говорит: нужно ограничить доступ. И начинается...
➡ Для бизнеса это "чтобы пользователь не мог".
➡ Для разработчика это "проверить роль".
➡ Для аналитика это "определить условия".
➡ Для тестировщика это "понять, в каких кейсах должно быть запрещено".
Слова одни и те же, а смысл разный.🤷♀️
➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖
1️⃣ Первый признак, что вы говорите о разном ➡️ обсуждение идёт слишком гладко.
Никто не спорит, не уточняет, все такие: "да, да, понятно".
И в этот момент внутри аналитика должно что-то щёлкнуть, потому что:
➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖
2️⃣ Второй признак ➡️ начинают всплывать уточнения "по ходу".
Сначала маленькие уточнения:
➡ "А это для всех пользователей?"
➡ "А это только в этом сценарии?"
Потом побольше:
➡ "А мы вообще так договаривались?"
И тут уже понятно, что изначально каждый слышал своё...
➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖
✏️ Есть простой приём, который очень помогает в таких ситуациях.
Типа:
❗️ И выясняется, что обсуждение только начинается.
➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖
📎 Самое интересное, что никто не делает это специально.
Люди правда думают, что говорят об одном и том же, просто у каждого своя картина в голове.
И аналитик это как раз тот человек, который эту разницу вытаскивает наружу.
📎 Со временем ты начинаешь ловить такие моменты почти автоматически.
По интонации, формулировкам, слишком быстрому согласию.
И чем раньше ты остановишь обсуждение и уточнишь смыслы,
тем меньше "а мы это не так поняли" прилетит потом.
📌 Если после поста захотелось на следующем созвоне задать пару уточняющих вопросов - значит, цель достигнута.👍
Есть очень коварная ситуация, с которой аналитики сталкивались кучу раз
Вы обсуждаете одну задачу, используете одни и те же слова. Все кивают, все согласны)
А потом оказывается, что каждый имел в виду вообще своё...
Обычно это выглядит безобидно, кто-то говорит: нужно ограничить доступ. И начинается...
Слова одни и те же, а смысл разный.
Никто не спорит, не уточняет, все такие: "да, да, понятно".
И в этот момент внутри аналитика должно что-то щёлкнуть, потому что:
если слишком легко, то значит, что где-то подвох.
Сначала маленькие уточнения:
Потом побольше:
И тут уже понятно, что изначально каждый слышал своё...
Когда слышишь общее слово, например:
доступ, проверка, ограничение, статус, валидация➡️ попробуй развернуть его вслух.
Типа:
Давайте уточню, что мы понимаем под "ограничить доступ":
в каких случаях, для кого и что именно должно быть запрещено.
Люди правда думают, что говорят об одном и том же, просто у каждого своя картина в голове.
И аналитик это как раз тот человек, который эту разницу вытаскивает наружу.
По интонации, формулировкам, слишком быстрому согласию.
И чем раньше ты остановишь обсуждение и уточнишь смыслы,
тем меньше "а мы это не так поняли" прилетит потом.
📌 Если после поста захотелось на следующем созвоне задать пару уточняющих вопросов - значит, цель достигнута.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤3👍3
Что такое связи в БД и почему "один ко многим" - это важно аналитику
Связи в базе данных обычно всплывают в разговоре как что-то очевидное.
Типа: ну там же один ко многим, всё понятно.
И именно в этот момент чаще всего начинается путаница.
🤍 Начнём с базового🤍
🟢 Самый частый и важный вариант 🌼 один ко многим.
Тут аналитик нужен ровно для одного: не перепутать направление связи.
🙁 Очень типичная ошибка ➡️ думать "симметрично".
🟢 Есть ещё один к одному 🌼 редкая, но важная история.
Здесь часто возникает соблазн "а давайте просто всё в одну таблицу".
Иногда это нормально, а иногда нет и это уже решение, которое стоит принимать осознанно и лучше совместно с разработчиками.
🟢 И наконец многие ко многим 🌼 самая коварная связь.
На словах всё просто, а на практике если аналитик не зафиксировал эту связь явно, то
она почти всегда вылезает позже, когда менять что-то уже больно...
📌 Почему аналитику вообще важно об этом думать?
📌 И ещё один важный момент.
Связи - это не навсегда.
То, что сегодня "один к одному", завтра может стать "один ко многим".
Связи в базе данных обычно всплывают в разговоре как что-то очевидное.
Типа: ну там же один ко многим, всё понятно.
И именно в этот момент чаще всего начинается путаница.
Связь - это ответ на простой вопрос:
сколько объектов одного типа может быть связано с объектом другого типа?
То есть не как это хранится, не какими ключами, а именно как это работает в реальной жизни.
Один пользователь🌼 много заказов.
Одна категория🌼 много товаров.
Один документ🌼 много версий.
Тут аналитик нужен ровно для одного: не перепутать направление связи.
Например:
один пользователь может иметь много заказов, это понятно.
Но может ли заказ иметь много пользователей?
Чаще всего нет.
И если этот момент не проговорить, дальше начинают всплывать странные вопросы и доработки.
Например:🟡 пользователь и его паспортные данные🟡 основной объект и его расширенные настройки.
Здесь часто возникает соблазн "а давайте просто всё в одну таблицу".
Иногда это нормально, а иногда нет и это уже решение, которое стоит принимать осознанно и лучше совместно с разработчиками.
Например:🟡 пользователИ и ролИ🟡 товарЫ и тегИ🟡 сотрудникИ и проектЫ
На словах всё просто, а на практике если аналитик не зафиксировал эту связь явно, то
она почти всегда вылезает позже, когда менять что-то уже больно...
➡️ Потому что связи - это про логику предметной области.
И если ты понял, как объекты связаны между собой, то ты уже наполовину понял систему)
Связи - это не навсегда.
То, что сегодня "один к одному", завтра может стать "один ко многим".
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤2🦄2👍1
Что такое первичный ключ и почему это важно при работе с данными
Про первичный ключ обычно говорят очень быстро, типа: "ну это id, он есть и ладно."🆗
И пока всё работает, кажется, что тема вообще не стоит внимания.
➡️ Но как только система начинает расти, выясняется, что без нормальных ключей данные перестают быть надёжными.
✅ Если совсем просто, первичный ключ ➡️ это способ однозначно отличить одну запись от другой.
Не "примерно понять" или "кажется, это оно", а точно знать: вот эта запись - именно она.
➡️ Жизненный пример :
❗️ А потом:
🟡 пользователь меняет почту
🟡 у кого-то два аккаунта
🟡 где-то email вообще необязателен
И на практике выясняется, что "уникальное поле"➡️ это не такая уж надёжная опора...😕
✅ Вот тут и нужен первичный ключ.
Имя может измениться, email может измениться, статус может измениться.
А идентификатор➡️ нет.
✅ Почему аналитикам важно это понимать?
Потому что требования часто звучат так:
"Нужно найти пользователя по email"
или
"Обновлять данные по номеру телефона".
❓ И если не задуматься, легко заложить логику,
которая развалится при первом же нестандартном кейсе.
〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️
✅ Хороший признак здоровой модели данных ➡️
когда у объекта есть один понятный идентификатор,
на который всё остальное спокойно ссылается.
Есть, конечно, и составные ключи, и бизнес-ключи, и куча нюансов.
Но на уровне аналитики важно уловить главное:
➿ каждый объект должен уметь быть однозначно найденным➿
Если этого нет, то дальше почти всегда начинаются костыли.
📌 Самое интересное, что проблемы с ключами редко видны сразу, они всплывают позже,
когда появляются связи, начинаются интеграции или данные начинают переиспользоваться.
И тогда чинить всё становится сильно дороже....
〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️ 〰️
📌 Если по ходу чтения ты поймал себя на мысли "а у нас тут не всё так однозначно" - это нормальное ощущение)
Обычно с него и начинается более внимательное отношение к данным.
Про первичный ключ обычно говорят очень быстро, типа: "ну это id, он есть и ладно."
И пока всё работает, кажется, что тема вообще не стоит внимания.
Не "примерно понять" или "кажется, это оно", а точно знать: вот эта запись - именно она.
Есть таблица пользователей: имя, email, телефон - всё красиво.
И вроде кажется: ну email же уникальный, зачем ещё какой-то id?
И на практике выясняется, что "уникальное поле"
Имя может измениться, email может измениться, статус может измениться.
А идентификатор
Потому что требования часто звучат так:
"Нужно найти пользователя по email"
или
"Обновлять данные по номеру телефона".
которая развалится при первом же нестандартном кейсе.
когда у объекта есть один понятный идентификатор,
на который всё остальное спокойно ссылается.
Есть, конечно, и составные ключи, и бизнес-ключи, и куча нюансов.
Но на уровне аналитики важно уловить главное:
Если этого нет, то дальше почти всегда начинаются костыли.
когда появляются связи, начинаются интеграции или данные начинают переиспользоваться.
И тогда чинить всё становится сильно дороже....
Обычно с него и начинается более внимательное отношение к данным.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤2