Система ↔️ Система
Нарисовали сиквенс-диаграмму на взаимодействие между двумя сервисами.
Кстати, этот пример демонстрирует, что не только «человек» инициирует какой-то процесс. В нашем примере процесс запускается автоматически, по триггеру — в 01:00.
Хотите нарисовать такую же схему?
Заходите на plantuml.com
Вставьте код👇
#uml #sequence #diagrams
Нарисовали сиквенс-диаграмму на взаимодействие между двумя сервисами.
Кстати, этот пример демонстрирует, что не только «человек» инициирует какой-то процесс. В нашем примере процесс запускается автоматически, по триггеру — в 01:00.
Хотите нарисовать такую же схему?
Заходите на plantuml.com
Вставьте код👇
@startuml
actor TimeTrigger as «Триггер времени»
participant ReportService as «Сервис отчетности»
participant Kafka as «Kafka»
participant NotificationService as «Сервис уведомлений»
TimeTrigger -> ReportService: Наступило 01:00
ReportService -> ReportService: Генерирует отчет
ReportService -> Kafka: Публикует событие «Отчет готов»
NotificationService -> Kafka: Pull сообщения из топика
NotificationService -> NotificationService: Отправляет письмо, что отчет готов
@enduml
#uml #sequence #diagrams
👍11❤🔥4🔥4
Вам интересна теория про Sequence Diagram на PlantUML? Хотите разбор элементов диаграммы?
Anonymous Poll
66%
✨ Да, хочу понять элементы и посмотреть на примерах.
27%
🛠️ Да, но только если будут разборы сложных кейсов.
6%
😎 Нет, я уже всё это знаю.
1%
🎨 Лучше про другие диаграммы.
0%
💬 Другое (пишите в комментариях).
👍9🔥4
Sequence Diagram: базовые элементы. Часть 1
Всем привет! 👋
По итогам опроса большинство выбрало разобрать элементы сиквенс-диаграммы в PlantUML. Начнём с основ — без них никуда:
1️⃣ Участники
Это всё, что взаимодействует в рамках процесса: пользователь (включая разные роли), микросервис, внешняя система, брокер и пр.
Если нужно визуально отделить участников (participant), используйте типы:
* actor
* boundary
* control
* entity
* database
* collections
* queue
Объявляем участников на PlantUML так:
2️⃣ Линии жизни
Они отображаются автоматически после объявления участника и показывают период, в течение которого объект «живёт» в процессе. Проще говоря, это визуализация начала и завершения активности объекта, чтобы было понятно, когда и как он участвует во взаимодействии.
3️⃣ Сообщения
Отображаются в виде стрелок, показывают, кто инициирует вызов, и кто отвечает:
Попробуйте прямо сейчас на plantuml.com: вставьте этот код и посмотрите, как всё визуализируется.
В следующих постах поговорим о ветвлениях (alt, opt), других полезных конструкциях и хорошем стиле.
#sequence #plantuml #diagrams
Всем привет! 👋
По итогам опроса большинство выбрало разобрать элементы сиквенс-диаграммы в PlantUML. Начнём с основ — без них никуда:
1️⃣ Участники
Это всё, что взаимодействует в рамках процесса: пользователь (включая разные роли), микросервис, внешняя система, брокер и пр.
Если нужно визуально отделить участников (participant), используйте типы:
* actor
* boundary
* control
* entity
* database
* collections
* queue
Объявляем участников на PlantUML так:
participant Participant
actor Actor
boundary Boundary
control Control
entity Entity
database Database
collections Collections
queue Queue
2️⃣ Линии жизни
Они отображаются автоматически после объявления участника и показывают период, в течение которого объект «живёт» в процессе. Проще говоря, это визуализация начала и завершения активности объекта, чтобы было понятно, когда и как он участвует во взаимодействии.
3️⃣ Сообщения
Отображаются в виде стрелок, показывают, кто инициирует вызов, и кто отвечает:
User -> System: Запрос
System --> User: Ответ
Попробуйте прямо сейчас на plantuml.com: вставьте этот код и посмотрите, как всё визуализируется.
В следующих постах поговорим о ветвлениях (alt, opt), других полезных конструкциях и хорошем стиле.
#sequence #plantuml #diagrams
👍15❤🔥5🔥4
Когда открыл PlantUML и видишь, что всё пишется в виде кода:
💬 Да это же просто! Сейчас нарисую!
…через 10 минут…
🤔 А как там создать notebox? И где подключить стили? Кто-нибудь, спасите!
#plantuml #sequence #diagrams
💬 Да это же просто! Сейчас нарисую!
…через 10 минут…
🤔 А как там создать notebox? И где подключить стили? Кто-нибудь, спасите!
💡 Лайфхак: Начните с самых простых элементов из прошлого поста. А украшение диаграммы (note, цвет, стили) добавьте потом, когда логика на диаграмме будет выстроена правильно — ведь это самое главное.
#plantuml #sequence #diagrams
🔥8❤4
Всем привет! 👋 Поделитесь, сколько лет вы работаете системным аналитиком?
Anonymous Poll
22%
До 1 года
14%
От 1 до 3
14%
От 3 до 6
9%
Более 6
41%
Без опыта, но хочу стать системным аналитиком
❤9
Sequence Diagram: ветвления и циклы. Часть 2
Всем привет! 👋
Продолжаем разбирать конструкции PlantUML, которые помогают точно описать логику взаимодействия. Сегодня расскажем, когда применять alt, opt и loop на практике.
1️⃣ alt — альтернативные сценарии
Блок alt используется, чтобы показать разные варианты развития событий. Например, при обработке HTTP-запроса можно явно указать, как реагировать на успешный и неудачный ответ:
Такой блок позволяет визуально отделить «успешный сценарий» от альтернативных.
2️⃣ opt — опциональные действия
Опциональные шаги выполняются только при соблюдении условия. Например, при авторизации, если включена двухфакторная аутентификация, система отправляет дополнительный код в SMS:
Здесь блок opt выполняется только если у пользователя активирована двухфакторная аутентификация.
3️⃣ loop — повторяющиеся действия
Цикл loop применяется, когда действие нужно повторить несколько раз. Например, попытка получения данных при временной недоступности сервиса:
В этом примере система делает до 3 попыток отправить запрос, и если ни одна не приводит к получению ответа, логируется ошибка.
Попробуйте применить эти конструкции на plantuml.com.
#sequence #plantuml #diagrams
Всем привет! 👋
Продолжаем разбирать конструкции PlantUML, которые помогают точно описать логику взаимодействия. Сегодня расскажем, когда применять alt, opt и loop на практике.
1️⃣ alt — альтернативные сценарии
Блок alt используется, чтобы показать разные варианты развития событий. Например, при обработке HTTP-запроса можно явно указать, как реагировать на успешный и неудачный ответ:
Service_A -> Service_B: Отправить запрос
alt HTTP 200 OK
Service_B --> Service_A: Данные
else HTTP 500 Internal Server Error
Service_B --> Service_A: Сообщение об ошибке
end
Такой блок позволяет визуально отделить «успешный сценарий» от альтернативных.
2️⃣ opt — опциональные действия
Опциональные шаги выполняются только при соблюдении условия. Например, при авторизации, если включена двухфакторная аутентификация, система отправляет дополнительный код в SMS:
Front -> Back: Запрос авторизации
alt Успешная авторизация
Back --> Front: Токен
opt Если включена 2FA
Back -> SMS_Service: Отправить код подтверждения
end
else Неуспешная авторизация
Back --> Front: Ошибка
end
Здесь блок opt выполняется только если у пользователя активирована двухфакторная аутентификация.
3️⃣ loop — повторяющиеся действия
Цикл loop применяется, когда действие нужно повторить несколько раз. Например, попытка получения данных при временной недоступности сервиса:
loop Повторить до 3 раз, пока не получен ответ
Front -> Back: Запрос данных
alt Получен ответ
Back --> Front: Данные
else Нет ответа
Back --> Logger: Логирование ошибки
end
end
В этом примере система делает до 3 попыток отправить запрос, и если ни одна не приводит к получению ответа, логируется ошибка.
Попробуйте применить эти конструкции на plantuml.com.
#sequence #plantuml #diagrams
Plantuml
PlantUML Web Server
Create simply and freely UML diagrams from your browser thanks to PlantUML Web Server. Just enter a text diagram, and get the result in PNG or SVG format.
👍10❤6🔥4👏1
Forwarded from AnalystCore | Начало пути в IT | Системный аналитик
Всем привет! 👋
С вами Вера.
Хочу поделиться маленьким, но важным событием: буквально вчера я запустила свой личный Telegram-канал.
Там я буду писать:
💡 о моем опыте в системном анализе,
✈️ о путешествиях и личных открытиях,
😄 о жизни вне работы — ведь я тоже человек!
Приглашаю вас следить за тем, как выглядит жизнь системного аналитика «изнутри», как я совмещаю работу и личное время, и, конечно, получить порцию вдохновения и позитива.
Подписывайтесь и будьте на связи — будем делиться историями и опытом 😉
https://t.me/vv_konovalova
С вами Вера.
Хочу поделиться маленьким, но важным событием: буквально вчера я запустила свой личный Telegram-канал.
Там я буду писать:
💡 о моем опыте в системном анализе,
✈️ о путешествиях и личных открытиях,
😄 о жизни вне работы — ведь я тоже человек!
Приглашаю вас следить за тем, как выглядит жизнь системного аналитика «изнутри», как я совмещаю работу и личное время, и, конечно, получить порцию вдохновения и позитива.
Подписывайтесь и будьте на связи — будем делиться историями и опытом 😉
https://t.me/vv_konovalova
Telegram
Vera Konovalova | System analyst | Предприниматель
Считаю, нужно делать свою работу так, чтобы было не стыдно.
О жизни системного аналитика «изнутри».
✍️ Заметки аналитика, предпринимателя и просто человека.
Моё детище 👉 https://t.me/analystcore
Связаться 👉 @verakonovalova
О жизни системного аналитика «изнутри».
✍️ Заметки аналитика, предпринимателя и просто человека.
Моё детище 👉 https://t.me/analystcore
Связаться 👉 @verakonovalova
🔥9👍5❤3😐1
Sequence Diagram: красивое оформление (бантики 🎀). Часть 3
Продолжаем разбираться с PlantUML. Сегодня посмотрим фишки, которые делают диаграммы ещё нагляднее:
1️⃣ Нумерация сообщений
autonumber
Чтобы не прописывать номера шагов вручную, используйте ключевое слово autonumber. Оно автоматически пронумерует все сообщения, что удобно при изменениях в диаграмме.
Пример:
В результате каждый вызов будет отображаться со своим порядковым номером.
2️⃣ Перенос текста
Если шаг слишком длинный, используйте \n для переноса строки и улучшения читаемости.
Пример:
3️⃣ Примечания
Добавляйте поясняющие примечания, чтобы выделить важные детали или уточнить логику.
Пример:
Попробуйте применить эти возможности в своих диаграммах на plantuml.com — они помогут сделать описание процессов ещё понятнее!
#sequence #plantuml #diagrams
Продолжаем разбираться с PlantUML. Сегодня посмотрим фишки, которые делают диаграммы ещё нагляднее:
1️⃣ Нумерация сообщений
autonumber
Чтобы не прописывать номера шагов вручную, используйте ключевое слово autonumber. Оно автоматически пронумерует все сообщения, что удобно при изменениях в диаграмме.
Пример:
@startuml
autonumber
User -> System: Запрос данных
System --> User: Ответ
@enduml
В результате каждый вызов будет отображаться со своим порядковым номером.
2️⃣ Перенос текста
Если шаг слишком длинный, используйте \n для переноса строки и улучшения читаемости.
Пример:
User -> System: Запрос на получение\nданных о пользователе
3️⃣ Примечания
Добавляйте поясняющие примечания, чтобы выделить важные детали или уточнить логику.
Пример:
@startuml
autonumber
User -> System: Запрос данных
note right of User: Какое-то примечание
System --> User: Ответ
@enduml
Попробуйте применить эти возможности в своих диаграммах на plantuml.com — они помогут сделать описание процессов ещё понятнее!
#sequence #plantuml #diagrams
🔥10❤🔥5❤2👍1
Forwarded from AnalystCore | Начало пути в IT | Системный аналитик
Системному аналитику важно понимать бизнес-процессы!
Привет!
С вами Вера, основатель AnalystCore. 👋
Я очень рада, что большинство из вас согласны — СА должен разбираться в бизнес-процессах!
Но я скажу больше, нужно не только понимать, но и уметь моделировать процессы, представлять их в виде диаграмм и грамотно документировать.
Мы уже проделали большую работу:
✅ Разобрались, что у любого процесса есть входы и выходы.
✅ Изучили модель Чёрный ящик.
✅ На примерах уборки ёлки, производства мебели, покупки абонемента, ремонта и даже приготовления борща посмотрели, как декомпозировать процесс.
Всё это читайте по хештегу #processdesign
🎁 Хотите закрепить материал и получить ещё больше полезных примеров от меня?
Пишите в комментариях ХОЧУ БЕСПЛАТНЫЙ УРОК из курса и мы отправим его вам в ЛС!
В этом видеоуроке вы всего за 10 минут узнаете:
🔹 Что такое бизнес-процесс на понятном примере — учебный процесс в ВУЗе.
🔹 Какие бывают входы и выходы — получите удобную шпаргалку (можно заскринить и использовать в работе).
🔹 Потренируетесь в определении входов и выходов на реальных процессах.
🔹 А главное поймёте, зачем системному аналитику всё это нужно знать.
Привет!
С вами Вера, основатель AnalystCore. 👋
Я очень рада, что большинство из вас согласны — СА должен разбираться в бизнес-процессах!
Но я скажу больше, нужно не только понимать, но и уметь моделировать процессы, представлять их в виде диаграмм и грамотно документировать.
Мы уже проделали большую работу:
✅ Разобрались, что у любого процесса есть входы и выходы.
✅ Изучили модель Чёрный ящик.
✅ На примерах уборки ёлки, производства мебели, покупки абонемента, ремонта и даже приготовления борща посмотрели, как декомпозировать процесс.
Всё это читайте по хештегу #processdesign
🎁 Хотите закрепить материал и получить ещё больше полезных примеров от меня?
Пишите в комментариях ХОЧУ БЕСПЛАТНЫЙ УРОК из курса и мы отправим его вам в ЛС!
В этом видеоуроке вы всего за 10 минут узнаете:
🔹 Что такое бизнес-процесс на понятном примере — учебный процесс в ВУЗе.
🔹 Какие бывают входы и выходы — получите удобную шпаргалку (можно заскринить и использовать в работе).
🔹 Потренируетесь в определении входов и выходов на реальных процессах.
🔹 А главное поймёте, зачем системному аналитику всё это нужно знать.
Также это уникальный шанс, помимо бесплатного ТЕСТ-ДРАЙВА, познакомиться с нашим курсом, манерой преподавания и убедиться, что сложные вещи можно объяснять просто и понятно. 🚀
🔥10❤5👍1
Последнее время часто слышим от разных спикеров, что:
❓ Что думаете? Напишите своё мнение в комментариях
👇👇👇👇👇
Системный аналитик — это про интеграции, БД, REST API и кафку.
❓ Что думаете? Напишите своё мнение в комментариях
👇👇👇👇👇
👍8
Суббота — самое время повторить изученное! За последние две недели мы много говорили о Sequence Diagram. Давайте освежим в памяти, как с помощью этой диаграммы можно показать взаимодействие между:
✅ Пользователь ↔️ Система
✅ Фронтенд ↔️ Бэкенд
✅ Система ↔️ Внешние API
✅ Система ↔️ Система
А ещё нет ничего удобнее, чем написать диаграмму текстом, вместо того чтобы вручную рисовать идеальные стрелки.
Мы разобрали в трёх частях полезные элементы PlantUML. Переходите к постам, копируйте код и смотрите, как он отрендерится на plantuml.com.
🔗 Sequence Diagram — полезные элементы:
📌 Часть 1
📌 Часть 2
📌 Часть 3 про бантики на диаграмме 🎀
Хороших выходных!
С вами Вера и Юрий,
Основатели AnalystCore
✅ Пользователь ↔️ Система
✅ Фронтенд ↔️ Бэкенд
✅ Система ↔️ Внешние API
✅ Система ↔️ Система
А ещё нет ничего удобнее, чем написать диаграмму текстом, вместо того чтобы вручную рисовать идеальные стрелки.
Мы разобрали в трёх частях полезные элементы PlantUML. Переходите к постам, копируйте код и смотрите, как он отрендерится на plantuml.com.
🔗 Sequence Diagram — полезные элементы:
📌 Часть 1
📌 Часть 2
📌 Часть 3 про бантики на диаграмме 🎀
Хороших выходных!
С вами Вера и Юрий,
Основатели AnalystCore
❤🔥11🔥5
Что происходит после нажатия на кнопку «Войти»? 🤔
Недавно на собеседовании мы обсуждали диаграммы и процессы, и мне задали интересный вопрос:
💬 «Расскажите последовательно, что происходит после нажатия на кнопку Войти?»
❓ Цель такого вопроса — проверить, насколько глубоко кандидат понимает процессы. Мыслите ли вы только на уровне фронта? Или заглядываете в бэкенд? Понимаете ли архитектуру, безопасность, работу сессий, что там с паролями?
🔍 Разобрали бы несколько таких задач и вопросов, которые реально встречаются на интервью?
Голосуйте в опросе ниже
👇👇👇👇👇
#interview
Недавно на собеседовании мы обсуждали диаграммы и процессы, и мне задали интересный вопрос:
💬 «Расскажите последовательно, что происходит после нажатия на кнопку Войти?»
❓ Цель такого вопроса — проверить, насколько глубоко кандидат понимает процессы. Мыслите ли вы только на уровне фронта? Или заглядываете в бэкенд? Понимаете ли архитектуру, безопасность, работу сессий, что там с паролями?
🔍 Разобрали бы несколько таких задач и вопросов, которые реально встречаются на интервью?
Голосуйте в опросе ниже
👇👇👇👇👇
#interview
👍10
📌 Интересно узнать вопросы с собеседований?
Anonymous Poll
87%
Да, хочу прокачаться 💪
13%
Конечно, такие вопросы бывают коварными!
0%
Не особо, я уже эксперт 😎
🔥3👍2
Что происходит после нажатия на кнопку «Войти»? 🚀
Вопрос с собеседования
Разбираем процесс последовательно, чтобы понять, как кандидат погружается в детали.
🔹 1. Действия на фронтенде
* Пользователь вводит логин/пароль и нажимает «Войти».
* Фронтенд собирает данные и отправляет запрос на сервер (POST /auth/login).
* Возможна валидация данных на клиенте (например, проверка длины пароля, формата email).
🔹 2. Валидация и обработка на сервере
* Бэкенд принимает запрос и проверяет его структуру (JSON, параметры, корректность полей).
* Проходит валидация логина и пароля (например, проверка длины, запрещённые символы).
* Сервер запрашивает данные пользователя из БД.
🔹 3. Проверка учётных данных
* Бэкенд сравнивает введённый пароль с захешированным паролем в БД.
* Если пароль совпадает → успешная авторизация.
* Если нет → сервер отправляет ошибку (401 Unauthorized).
🔹 4. Генерация токенов и управление сессией
* Сервер генерирует JWT-токен / session ID для аутентифицированного пользователя.
* В некоторых случаях сервер может обновить refresh-токен, если используется OAuth.
* Информация о сессии может быть записана в кеш (Redis) или БД.
🔹 5. Ответ от сервера и обработка на фронте
* Сервер отправляет ответ с access-токеном и данными пользователя.
* Фронтенд получает токен и сохраняет его (например, в localStorage или cookies).
* Пользователь перенаправляется на главную страницу.
🔹 6. Дополнительные механики
* Если включена двухфакторная аутентификация (2FA) → сервер требует дополнительного подтверждения.
* Если несколько неудачных попыток входа → аккаунт может быть заблокирован или требуется капча.
* Если логин с нового устройства → система может запросить подтверждение через почту/SMS.
На что смотрит интервьюер?
✔️ Глубина мышления — ограничиваетесь ли только фронтом или понимаете, что происходит дальше?
✔️ Знание архитектуры — умеете ли объяснить кеширование, работу токенов?
✔️ Безопасность — знаете ли про хранение паролей, OAuth 2.0, сессии?
Вот так один простой вопрос может показать, насколько вы разбираетесь в процессе!
#interview
Вопрос с собеседования
Разбираем процесс последовательно, чтобы понять, как кандидат погружается в детали.
🔹 1. Действия на фронтенде
* Пользователь вводит логин/пароль и нажимает «Войти».
* Фронтенд собирает данные и отправляет запрос на сервер (POST /auth/login).
* Возможна валидация данных на клиенте (например, проверка длины пароля, формата email).
🔹 2. Валидация и обработка на сервере
* Бэкенд принимает запрос и проверяет его структуру (JSON, параметры, корректность полей).
* Проходит валидация логина и пароля (например, проверка длины, запрещённые символы).
* Сервер запрашивает данные пользователя из БД.
🔹 3. Проверка учётных данных
* Бэкенд сравнивает введённый пароль с захешированным паролем в БД.
* Если пароль совпадает → успешная авторизация.
* Если нет → сервер отправляет ошибку (401 Unauthorized).
🔹 4. Генерация токенов и управление сессией
* Сервер генерирует JWT-токен / session ID для аутентифицированного пользователя.
* В некоторых случаях сервер может обновить refresh-токен, если используется OAuth.
* Информация о сессии может быть записана в кеш (Redis) или БД.
🔹 5. Ответ от сервера и обработка на фронте
* Сервер отправляет ответ с access-токеном и данными пользователя.
* Фронтенд получает токен и сохраняет его (например, в localStorage или cookies).
* Пользователь перенаправляется на главную страницу.
🔹 6. Дополнительные механики
* Если включена двухфакторная аутентификация (2FA) → сервер требует дополнительного подтверждения.
* Если несколько неудачных попыток входа → аккаунт может быть заблокирован или требуется капча.
* Если логин с нового устройства → система может запросить подтверждение через почту/SMS.
На что смотрит интервьюер?
✔️ Глубина мышления — ограничиваетесь ли только фронтом или понимаете, что происходит дальше?
✔️ Знание архитектуры — умеете ли объяснить кеширование, работу токенов?
✔️ Безопасность — знаете ли про хранение паролей, OAuth 2.0, сессии?
Вот так один простой вопрос может показать, насколько вы разбираетесь в процессе!
#interview
🔥18❤5👍5
Задача с собеседования: продумываем доработку 🚀
Представьте, что вы системный аналитик в продуктовом онлайн-магазине с доставкой.
📌 Задача:
Есть клиенты, которые давно не делали заказ. Нужно, чтобы система отправляла им уведомление, мотивируя вернуться.
На первый взгляд — звучит просто. Но интервьюеру важно проверить, насколько глубоко вы копаете и понимаете, какие нюансы скрываются за этой задачей.
В ходе этого «расследования» вы можете выйти на то, что:
🔍 Нужен сервис уведомлений, потому что его нет.
🔍 Придётся разрабатывать админку для маркетологов, чтобы они могли настраивать сегменты клиентов и тексты сообщений.
🔍 Вопросы интеграции: с чем и как будет взаимодействовать система?
❓ Как бы вы проанализировали и спроектировали это задание на собеседовании? 🤔
Пишите свои мысли в комментариях!
👇👇👇👇👇
#interview
Представьте, что вы системный аналитик в продуктовом онлайн-магазине с доставкой.
📌 Задача:
Есть клиенты, которые давно не делали заказ. Нужно, чтобы система отправляла им уведомление, мотивируя вернуться.
На первый взгляд — звучит просто. Но интервьюеру важно проверить, насколько глубоко вы копаете и понимаете, какие нюансы скрываются за этой задачей.
В ходе этого «расследования» вы можете выйти на то, что:
🔍 Нужен сервис уведомлений, потому что его нет.
🔍 Придётся разрабатывать админку для маркетологов, чтобы они могли настраивать сегменты клиентов и тексты сообщений.
🔍 Вопросы интеграции: с чем и как будет взаимодействовать система?
❓ Как бы вы проанализировали и спроектировали это задание на собеседовании? 🤔
Пишите свои мысли в комментариях!
👇👇👇👇👇
#interview
🔥10🤓6❤1
Вопросы с собеседований: синхронное или асинхронное взаимодействие? 🤔
На собеседованиях системным аналитикам часто дают практические задачи: определить, какое взаимодействие здесь уместно — синхронное или асинхронное?
🔹 Синхронное взаимодействие — когда один сервис ждёт ответа от другого перед выполнением следующих шагов. Если ответа нет, процесс приостанавливается.
Пример: Пользователь запрашивает баланс на сайте банка → фронтенд ждёт ответ от сервера, прежде чем показать сумму.
🔹 Асинхронное взаимодействие — когда сервис не ждёт ответа и продолжает работать. Ответ может прийти позже, когда данные будут готовы.
Пример: Пользователь сделал заказ → магазин отправляет запрос на доставку → заказ оформлен, а информация о доставке поступит отдельно.
❓Определите, какое взаимодействие можно сделать в этих случаях:
1️⃣ Мастер-система владеет справочником оргструктуры. Другие сервисы используют его данные.
➡️ Синхронное или асинхронное взаимодействие?
2️⃣ Есть курсы валют, сервису они нужны. Как их получать?
➡️ Синхронное или асинхронное?
3️⃣ Покупка/продажа акций.
➡️ Синхронное или асинхронное?
4️⃣ Купил билеты в кино → сервис отправки писем должен отправить письмо.
➡️ Синхронное или асинхронное?
5️⃣ Проверка наличия товара в магазине при оформлении заказа.
➡️ Синхронное или асинхронное?
📌 Какой вариант выбрали бы вы?
Пишите в комментариях, разберём в следующем посте!
👇👇👇👇👇
#interview
На собеседованиях системным аналитикам часто дают практические задачи: определить, какое взаимодействие здесь уместно — синхронное или асинхронное?
🔹 Синхронное взаимодействие — когда один сервис ждёт ответа от другого перед выполнением следующих шагов. Если ответа нет, процесс приостанавливается.
Пример: Пользователь запрашивает баланс на сайте банка → фронтенд ждёт ответ от сервера, прежде чем показать сумму.
🔹 Асинхронное взаимодействие — когда сервис не ждёт ответа и продолжает работать. Ответ может прийти позже, когда данные будут готовы.
Пример: Пользователь сделал заказ → магазин отправляет запрос на доставку → заказ оформлен, а информация о доставке поступит отдельно.
❓Определите, какое взаимодействие можно сделать в этих случаях:
1️⃣ Мастер-система владеет справочником оргструктуры. Другие сервисы используют его данные.
➡️ Синхронное или асинхронное взаимодействие?
2️⃣ Есть курсы валют, сервису они нужны. Как их получать?
➡️ Синхронное или асинхронное?
3️⃣ Покупка/продажа акций.
➡️ Синхронное или асинхронное?
4️⃣ Купил билеты в кино → сервис отправки писем должен отправить письмо.
➡️ Синхронное или асинхронное?
5️⃣ Проверка наличия товара в магазине при оформлении заказа.
➡️ Синхронное или асинхронное?
📌 Какой вариант выбрали бы вы?
Пишите в комментариях, разберём в следующем посте!
👇👇👇👇👇
#interview
🔥9👍7❤1
Разбираем задачу 🤔: синхронное или асинхронное взаимодействие? ЧАСТЬ 1.
1️⃣ Мастер-система владеет справочником оргструктуры. Другие сервисы используют его данные.
➡️ Асинхронное
🔹 Данные в справочнике меняются не мгновенно. Если каждый сервис будет запрашивать их синхронно перед каждым использованием, это создаст лишнюю нагрузку на мастер-систему.
Как сделать?
* Мастер-система может пушить изменения в другие сервисы через Kafka/RabbitMQ.
* Либо другие системы могут периодически обновлять справочник (например, раз в 24 часа).
Почему не синхронное?
❌ Если перед каждым действием сервису нужно ждать ответ от мастер-системы, он будет работать медленнее и может зависнуть, если мастер-система недоступна.
❌ При высокой нагрузке (например, много пользователей одновременно запрашивают данные) система может просто не выдержать.
👇👇👇👇👇
2️⃣ Есть курсы валют, сервису они нужны. Как их получать?
➡️ Асинхронное
🔹 Курсы валют не меняются каждую секунду, а значит нет смысла запрашивать их в реальном времени. Обычно обновления приходят раз в несколько минут или часов.
Как сделать?
* Обновлять курсы валют через периодический запрос (polling).
* Либо получать события о смене курса через брокер сообщений.
* Хранить курсы в кеше или в БД, чтобы сервисы не запрашивали их каждый раз.
Почему не синхронное?
❌ Если каждый сервис будет делать HTTP-запрос при каждом расчёте, это создаст избыточную нагрузку.
❌ Если API курсов недоступно, система зависнет или не сможет корректно выполнить расчёты.
📌 Когда синхронное всё же нужно?
Если речь идёт о торговле валютами в реальном времени, где важен курс на момент сделки — синхронный запрос может быть оправдан.
👇👇👇👇👇
3️⃣ Покупка/продажа акций.
➡️ Синхронное
🔹 Цена акций меняется каждую секунду. Пользователь должен получить подтверждение сделки сразу, иначе цена может измениться.
Как сделать?
* При отправке запроса сервис брокера фиксирует цену и даёт мгновенный ответ.
* Запрос выполняется транзакционно — если что-то пошло не так, откатываем операцию.
Почему не асинхронное?
❌ Если отправить запрос в очередь и ждать обработки, пользователь не узнает, купил ли он акцию по желаемой цене.
❌ Если ответ приходит с задержкой, цена уже могла измениться, и сделка становится неактуальной.
📌 Когда асинхронное всё же возможно?
Если пользователь делает отложенную заявку (например, «купить акцию, если цена упадёт ниже 100$»), тогда логика может быть асинхронной.
Продолжение следует...
#interview
1️⃣ Мастер-система владеет справочником оргструктуры. Другие сервисы используют его данные.
➡️ Асинхронное
🔹 Данные в справочнике меняются не мгновенно. Если каждый сервис будет запрашивать их синхронно перед каждым использованием, это создаст лишнюю нагрузку на мастер-систему.
Как сделать?
* Мастер-система может пушить изменения в другие сервисы через Kafka/RabbitMQ.
* Либо другие системы могут периодически обновлять справочник (например, раз в 24 часа).
Почему не синхронное?
❌ Если перед каждым действием сервису нужно ждать ответ от мастер-системы, он будет работать медленнее и может зависнуть, если мастер-система недоступна.
❌ При высокой нагрузке (например, много пользователей одновременно запрашивают данные) система может просто не выдержать.
👇👇👇👇👇
2️⃣ Есть курсы валют, сервису они нужны. Как их получать?
➡️ Асинхронное
🔹 Курсы валют не меняются каждую секунду, а значит нет смысла запрашивать их в реальном времени. Обычно обновления приходят раз в несколько минут или часов.
Как сделать?
* Обновлять курсы валют через периодический запрос (polling).
* Либо получать события о смене курса через брокер сообщений.
* Хранить курсы в кеше или в БД, чтобы сервисы не запрашивали их каждый раз.
Почему не синхронное?
❌ Если каждый сервис будет делать HTTP-запрос при каждом расчёте, это создаст избыточную нагрузку.
❌ Если API курсов недоступно, система зависнет или не сможет корректно выполнить расчёты.
📌 Когда синхронное всё же нужно?
Если речь идёт о торговле валютами в реальном времени, где важен курс на момент сделки — синхронный запрос может быть оправдан.
👇👇👇👇👇
3️⃣ Покупка/продажа акций.
➡️ Синхронное
🔹 Цена акций меняется каждую секунду. Пользователь должен получить подтверждение сделки сразу, иначе цена может измениться.
Как сделать?
* При отправке запроса сервис брокера фиксирует цену и даёт мгновенный ответ.
* Запрос выполняется транзакционно — если что-то пошло не так, откатываем операцию.
Почему не асинхронное?
❌ Если отправить запрос в очередь и ждать обработки, пользователь не узнает, купил ли он акцию по желаемой цене.
❌ Если ответ приходит с задержкой, цена уже могла измениться, и сделка становится неактуальной.
📌 Когда асинхронное всё же возможно?
Если пользователь делает отложенную заявку (например, «купить акцию, если цена упадёт ниже 100$»), тогда логика может быть асинхронной.
Продолжение следует...
#interview
👍10🔥7❤2
Разбираем задачу 🤔: синхронное или асинхронное взаимодействие? ЧАСТЬ 2.
4️⃣ Купил билеты в кино → сервис отправки писем должен отправить письмо.
➡️ Асинхронное
🔹 Покупка билетов должна быть независимой от отправки письма. Даже если письмо не отправилось, билеты всё равно должны быть куплены.
Как сделать?
* Сервис покупки ставит задачу в очередь на отправку письма.
* Сервис уведомлений обрабатывает очередь и отправляет письма в фоновом режиме.
Почему не синхронное?
❌ Если сервис отправки писем вдруг упадёт, пользователь не сможет купить билет.
❌ Если отправка письма занимает несколько секунд, это замедлит процесс покупки.
📌 Когда синхронное всё же возможно?
Если, например, перед покупкой требуется подтверждение через email/SMS (например, двухфакторная аутентификация), тогда синхронный запрос может быть оправдан.
👇👇👇👇👇
5️⃣ Проверка наличия товара в магазине при оформлении заказа.
➡️ Синхронное
🔹 Пользователь должен сразу знать, можно ли купить товар, а не ждать обновления информации.
Как сделать?
* Перед подтверждением заказа система делает запрос в складскую систему.
* Если товар есть — заказ подтверждается, если нет — выводится ошибка.
Почему не асинхронное?
❌ Если проверка будет асинхронной, пользователь сможет оформить заказ на несуществующий товар.
❌ Если складская система не отвечает, заказ повиснет в неопределённом статусе.
📌 Когда асинхронное всё же возможно?
Если магазин работает по предзаказу (например, товар можно заказать, даже если его нет в наличии), тогда можно оформить заказ, а проверку сделать позже.
👇👇👇👇👇
Вывод
Как видно, выбор синхронного или асинхронного взаимодействия зависит от:
🔹 Требований к скорости отклика — нужен мгновенный ответ или можно подождать?
🔹 Риск-факторов — если сервис недоступен, что произойдёт?
🔹 Нагрузки на систему — сколько запросов в секунду ожидается?
#interview
4️⃣ Купил билеты в кино → сервис отправки писем должен отправить письмо.
➡️ Асинхронное
🔹 Покупка билетов должна быть независимой от отправки письма. Даже если письмо не отправилось, билеты всё равно должны быть куплены.
Как сделать?
* Сервис покупки ставит задачу в очередь на отправку письма.
* Сервис уведомлений обрабатывает очередь и отправляет письма в фоновом режиме.
Почему не синхронное?
❌ Если сервис отправки писем вдруг упадёт, пользователь не сможет купить билет.
❌ Если отправка письма занимает несколько секунд, это замедлит процесс покупки.
📌 Когда синхронное всё же возможно?
Если, например, перед покупкой требуется подтверждение через email/SMS (например, двухфакторная аутентификация), тогда синхронный запрос может быть оправдан.
👇👇👇👇👇
5️⃣ Проверка наличия товара в магазине при оформлении заказа.
➡️ Синхронное
🔹 Пользователь должен сразу знать, можно ли купить товар, а не ждать обновления информации.
Как сделать?
* Перед подтверждением заказа система делает запрос в складскую систему.
* Если товар есть — заказ подтверждается, если нет — выводится ошибка.
Почему не асинхронное?
❌ Если проверка будет асинхронной, пользователь сможет оформить заказ на несуществующий товар.
❌ Если складская система не отвечает, заказ повиснет в неопределённом статусе.
📌 Когда асинхронное всё же возможно?
Если магазин работает по предзаказу (например, товар можно заказать, даже если его нет в наличии), тогда можно оформить заказ, а проверку сделать позже.
👇👇👇👇👇
Вывод
Как видно, выбор синхронного или асинхронного взаимодействия зависит от:
🔹 Требований к скорости отклика — нужен мгновенный ответ или можно подождать?
🔹 Риск-факторов — если сервис недоступен, что произойдёт?
🔹 Нагрузки на систему — сколько запросов в секунду ожидается?
#interview
🔥12❤3
📣 Внимание! Сегодня стартует запись на новый поток курса «Системный аналитик.БАЗА»
Мы рады представить вам обновлённую программу курса.
Что вас ждёт?
⛰️ Актуальная программа и навыки на 2025 год, которые нужны работодателям
⛰️ 8 заданий, проверяемых экспертом. На выходе документация для вашего портфолио
⛰️ Через 4 месяца сможете начать искать работу и проходить собеседования
⛰️ Помощь с трудоустройством: проверим ваше резюме и проведём тестовый собес 💪
Как проходит обучение?
1️⃣ Получаете доступ и начинаете смотреть видеоуроки
2️⃣ Будете заниматься сами, но не в одиночестве. Вас добавляют в чат потока с поддержкой от авторов курса
4️⃣ Получаете сертификат
5️⃣ Готовитесь к трудоустройству
6️⃣ Ищете работу с поддержкой экспертов
Поток стартует 14 марта, а количество мест очень ограничено — не упустите свой шанс стать уверенными системными аналитиками как можно скорее.
За подробностями 👉 analystcore.com
Успейте занять место!
Мы рады представить вам обновлённую программу курса.
Что вас ждёт?
⛰️ Актуальная программа и навыки на 2025 год, которые нужны работодателям
⛰️ 8 заданий, проверяемых экспертом. На выходе документация для вашего портфолио
⛰️ Через 4 месяца сможете начать искать работу и проходить собеседования
⛰️ Помощь с трудоустройством: проверим ваше резюме и проведём тестовый собес 💪
Как проходит обучение?
1️⃣ Получаете доступ и начинаете смотреть видеоуроки
2️⃣ Будете заниматься сами, но не в одиночестве. Вас добавляют в чат потока с поддержкой от авторов курса
4️⃣ Получаете сертификат
5️⃣ Готовитесь к трудоустройству
6️⃣ Ищете работу с поддержкой экспертов
Поток стартует 14 марта, а количество мест очень ограничено — не упустите свой шанс стать уверенными системными аналитиками как можно скорее.
За подробностями 👉 analystcore.com
Успейте занять место!
🔥11👍3🏆3❤1👏1
Задача с собеседования: спроектируйте взаимодействие 🔍
📌 Условие:
У нас есть 1 сервис, который публикует данные, и 4 других сервиса, которые эти данные читают. Нужно спроектировать взаимодействие между ними.
Как организовать взаимодействие, чтобы система была надёжной и масштабируемой?
Возможные решения:
1️⃣ Синхронный вариант
Как работает:
Читающие сервисы сами запрашивают данные у основного сервиса (API, БД).
Данные обновляются по запросу, когда потребителю это нужно.
Плюсы/минусы:
✅ Простая реализация через REST API или GraphQL.
✅ Каждый сервис сам решает, когда обновлять данные.
❌ Четыре сервиса нагружают основной сервис запросами.
❌ Если один сервис запрашивает данные раз в час, а другой — раз в секунду, их версии могут отличаться.
Когда подходит?
✔️ Если данные меняются редко и можно получать их по требованию.
2️⃣ Асинхронный вариант
Как работает:
Основной сервис отправляет данные сам через брокер сообщений (Kafka, RabbitMQ).
Читающие сервисы подписаны на события и получают данные, как только они появляются.
Плюсы/минусы:
✅ Основной сервис не перегружается — данные не запрашиваются лишний раз.
✅ Все подписчики получают обновления в реальном времени.
✅ Если один из сервисов временно недоступен, он получит данные позже.
❌ Требует настройку брокера сообщений и подписок.
❌ Нужно контролировать, обработал ли сервис сообщение или потерял.
Когда подходит?
✔️ Если данные обновляются часто, и важно передавать их мгновенно.
✔️ Если подписчиков много, и мы не хотим перегружать основной сервис.
Вывод:
* Если данные меняются редко, можно обойтись синхронными запросами.
* Если нужны мгновенные обновления, лучше использовать асинхронную публикацию через брокер сообщений.
#interview
📌 Условие:
У нас есть 1 сервис, который публикует данные, и 4 других сервиса, которые эти данные читают. Нужно спроектировать взаимодействие между ними.
Как организовать взаимодействие, чтобы система была надёжной и масштабируемой?
Возможные решения:
1️⃣ Синхронный вариант
Как работает:
Читающие сервисы сами запрашивают данные у основного сервиса (API, БД).
Данные обновляются по запросу, когда потребителю это нужно.
Плюсы/минусы:
✅ Простая реализация через REST API или GraphQL.
✅ Каждый сервис сам решает, когда обновлять данные.
❌ Четыре сервиса нагружают основной сервис запросами.
❌ Если один сервис запрашивает данные раз в час, а другой — раз в секунду, их версии могут отличаться.
Когда подходит?
✔️ Если данные меняются редко и можно получать их по требованию.
2️⃣ Асинхронный вариант
Как работает:
Основной сервис отправляет данные сам через брокер сообщений (Kafka, RabbitMQ).
Читающие сервисы подписаны на события и получают данные, как только они появляются.
Плюсы/минусы:
✅ Основной сервис не перегружается — данные не запрашиваются лишний раз.
✅ Все подписчики получают обновления в реальном времени.
✅ Если один из сервисов временно недоступен, он получит данные позже.
❌ Требует настройку брокера сообщений и подписок.
❌ Нужно контролировать, обработал ли сервис сообщение или потерял.
Когда подходит?
✔️ Если данные обновляются часто, и важно передавать их мгновенно.
✔️ Если подписчиков много, и мы не хотим перегружать основной сервис.
Вывод:
* Если данные меняются редко, можно обойтись синхронными запросами.
* Если нужны мгновенные обновления, лучше использовать асинхронную публикацию через брокер сообщений.
#interview
👍12❤5✍5🔥2
Объявляем рубрику страхов! 🙀
Опытные аналитики, делитесь в комментариях, чего вы боялись или боитесь на работе? Особенно много страхов у специалистов с опытом от 1 до 3 лет.
Мы будем делиться страхами коллег, своими собственными из прошлого и историями наших учеников.
😱 Страх 1. Я боюсь читать мессенджер — вдруг там вопрос, на который я не смогу ответить.
А если ваш наставник ушёл в отпуск или старший коллега по цеху недоступен — вообще кошмар.
Правда в том, что системным аналитикам пишут постоянно. Это члены команды, заказчики, коллеги из других отделов. Смежники часто задают вопросы:
❓ А если мы добавим новое поле в API, у вас ничего не сломается?
❓ Вы используете наш метод? Мы его хотим выпилить.
❓ На что влияет ваш справочник? Как другие системы его используют?
❓ Вы в коде готовы к такой-то ошибке от нас? Мы её немного изменили, надеемся, вас не задело.
❓ Если мы пришлём вам в этом параметре N/A, что будет?
Вначале реакция стандартная, и её не нужно стыдиться:
😱 Откуда я знаю? Я на этом проекте всего полгода!
😱 Откуда мне знать, что в коде у разработчиков?
😱 Опять придётся лезть в код, а я там ничего не понимаю…
😱 О нет… Придётся отвлекать разработчиков. Как бы перебороть это чувство и всё-таки написать?..
😱 Но я же не отвечаю за то, как наши справочники используют другие системы. Я правда должен это знать?
Главное — не позволяйте этому подорвать вашу уверенность:
1️⃣ Вы не обязаны отвечать сразу. Этот вопрос вообще-то отвлёк вас от рабочих задач. Выделяйте отдельное время в день на такие вопросы.
2️⃣ Не бойтесь сказать, что вам нужно время на поиск ответа. Вы не можете знать всё. И ответ не ожидают только от вас. Вы — это входная точка в команду. Подключайте коллег.
3️⃣ Да, вам снова придётся идти к разработчикам. Это нормально. У вас Confluence, у них код. Вы отвечаете за разные вещи.
4️⃣ С каждым таким вопросом вы лучше узнаёте систему. Через несколько месяцев сможете отвечать сразу, без доп. исследований.
ЭТОТ СТРАХ МОЖНО СНИЗИТЬ 👇
Первый шаг — вести документацию 📄. Если там будет описано всё важное, походы по отделам сократятся в разы.
📌 На курсе «Системный аналитик. БАЗА» результат — написанная документация.
Вы сможете задавать вопросы по вашему проекту, а мы поможем и подскажем, как лучше организовать доку в вашем случае.
✨ Старт потока — 14 марта.
Успевайте записаться!
#страхинаработе
Опытные аналитики, делитесь в комментариях, чего вы боялись или боитесь на работе? Особенно много страхов у специалистов с опытом от 1 до 3 лет.
Мы будем делиться страхами коллег, своими собственными из прошлого и историями наших учеников.
😱 Страх 1. Я боюсь читать мессенджер — вдруг там вопрос, на который я не смогу ответить.
А если ваш наставник ушёл в отпуск или старший коллега по цеху недоступен — вообще кошмар.
Правда в том, что системным аналитикам пишут постоянно. Это члены команды, заказчики, коллеги из других отделов. Смежники часто задают вопросы:
❓ А если мы добавим новое поле в API, у вас ничего не сломается?
❓ Вы используете наш метод? Мы его хотим выпилить.
❓ На что влияет ваш справочник? Как другие системы его используют?
❓ Вы в коде готовы к такой-то ошибке от нас? Мы её немного изменили, надеемся, вас не задело.
❓ Если мы пришлём вам в этом параметре N/A, что будет?
Вначале реакция стандартная, и её не нужно стыдиться:
😱 Откуда я знаю? Я на этом проекте всего полгода!
😱 Откуда мне знать, что в коде у разработчиков?
😱 Опять придётся лезть в код, а я там ничего не понимаю…
😱 О нет… Придётся отвлекать разработчиков. Как бы перебороть это чувство и всё-таки написать?..
😱 Но я же не отвечаю за то, как наши справочники используют другие системы. Я правда должен это знать?
Любая из этих реакций — нормальная. Вы не одиноки!
Главное — не позволяйте этому подорвать вашу уверенность:
1️⃣ Вы не обязаны отвечать сразу. Этот вопрос вообще-то отвлёк вас от рабочих задач. Выделяйте отдельное время в день на такие вопросы.
2️⃣ Не бойтесь сказать, что вам нужно время на поиск ответа. Вы не можете знать всё. И ответ не ожидают только от вас. Вы — это входная точка в команду. Подключайте коллег.
3️⃣ Да, вам снова придётся идти к разработчикам. Это нормально. У вас Confluence, у них код. Вы отвечаете за разные вещи.
4️⃣ С каждым таким вопросом вы лучше узнаёте систему. Через несколько месяцев сможете отвечать сразу, без доп. исследований.
ЭТОТ СТРАХ МОЖНО СНИЗИТЬ 👇
Первый шаг — вести документацию 📄. Если там будет описано всё важное, походы по отделам сократятся в разы.
📌 На курсе «Системный аналитик. БАЗА» результат — написанная документация.
Вы сможете задавать вопросы по вашему проекту, а мы поможем и подскажем, как лучше организовать доку в вашем случае.
✨ Старт потока — 14 марта.
Успевайте записаться!
#страхинаработе
❤9🔥5💯3