GetAnalyst - Навыки • Системный анализ • Бизнес-анализ
22.4K subscribers
2.56K photos
90 videos
268 files
1.43K links
Разбор задач на проектирование систем 🚀 Канал для системных аналитиков, бизнес-аналитиков, тестировщиков и менеджеров проектов

Админ @getanalyst
Сайт https://getanalyst.ru
Чат t.me/getanalystchat
Начинающим в IT @getanalyststart
Download Telegram
🎒💐 День знаний, которого, скорее всего, не будет у моих детей 😭💐

Сегодня с утра половина российских рабочих чатов выглядит примерно так:

— Буду после 11:00, у ребёнка линейка.
— Я тоже на линейке, к 13 буду.
— И я.
— Понятно. До обеда никого не ищем 😃

По улицам идут дети с огромными букетами, первоклассники теряются среди бантов и школьной формы, а родители делают примерно 700 одинаковых фотографий у школы ❤️‍🔥



А я с радостью и лёгкой ностальгией смотрю сегодня на фотографии друзей, родственников и коллег из GetAnalyst.

Мне завидно, друзья. У вас есть возможность вместе прожить эту общую атмосферу настоящего праздника и нового старта.



🇺🇸 В США первое сентября — просто ещё один день в календаре.

Здесь нет единого Дня знаний и привычных нам торжественных линеек. В разных штатах и школьных округах занятия начинаются в разное время.

В Сан-Диего дети в этом году учатся уже с 10 августа.
В Сан-Франциско — с 17 августа.
А в Нью-Йорке первый учебный день будет только 10 сентября.

Никакого общего первого звонка.
Никаких обязательных белых бантов.
Никаких гладиолусов размером с первоклассника 🥲



❤️‍🔥 Я правда скучаю по тому самому 1 сентября.

Для меня оно всегда было вторым Новым годом: новым стартом, новым этапом и даже во взрослом возрасте — поводом для очередного учебного или карьерного рывка.

Даже период активного найма почему-то начинается именно после этой даты.

Не хватает мне всей этой суеты 😃


Потому что первое сентября мгновенно возвращает в детство:

📚 запах новых учебников
📓 идеально чистый дневник, в котором пока нет ни одной оценки
✏️ новые ручки и тетради, которыми жалко пользоваться
💐 букет, за которым почти не видно меня
🎒 надежда начать учебный год без троек и забытых ДЗ



Но День знаний сегодня не только у школьников, студентов и родителей, которые официально отсутствуют на работе до обеда.

👉 Если вы читаете GetAnalyst — это и ваш праздник тоже.

Вы здесь изучаете ИИ, API, базы данных, интеграции, архитектуру, брокеры и ещё десятки тем, о существовании которых в школе нас почему-то не предупредили 🥲

Просто вместо букваря у нас OpenAPI.
Вместо задачника — реальные проекты.
Вместо контрольной — техническое интервью.
А вместо фразы «Выйди к доске» — «Сделай шаринг экрана» 😅

Так что поздравляю всех нас вечных студентов с Днём знаний! ❤️‍🔥

Пусть новые знания превращаются не в оценки, а в сильные проекты, уверенные собеседования, новые должности и зарплаты 🚀
70❤‍🔥11
🧐 Нужен ли здесь брокер? Разбор реальной задачи ⁉️

Начинаем проектировать архитектуру #PostamatGA.

На первом черновике схемы уже есть основные компоненты.

Ваша задача — определить, где нужен брокер.
Не просто поставить Kafka между всеми сервисами, а понять, какую проблему она должна решить 😃


📌 Основной сценарий

Пользователь оформил заказ в маркетплейсе и выбрал доставку через постамат.

Маркетплейс передал в нашу платформу данные об отправлении. Далее курьер приезжает к постамату, чтобы загрузить его.

1️⃣ Курьер сканирует QR-код посылки

2️⃣ Система резервирует свободную ячейку подходящего размера

3️⃣ Постамату отправляется команда открыть ячейку

4️⃣ Курьер загружает посылку. После чего постамат сообщает серверу, что посылка внутри

5️⃣ Отправление получает статус «Готово к получению», пользователю отправляется одноразовый код + QR

6️⃣ Пользователь вводит код.
Система проверяет его, после чего отправляет команду открыть ячейку

7️⃣ Когда дверца закрыта и посылки внутри больше нет, отправление получает статус «Выдано».

Если посылку не забрали за 72 часа, запускается процесс возврата.



⚠️ Что может пойти не так?

▫️ постамат временно потерял связь
▫️ одно событие от устройства пришло несколько раз
▫️ команда открытия ячейки была доставлена повторно
▫️ сервис уведомлений недоступен
▫️ получение и запуск возврата произошли почти одновременно


При этом:

✔️ одну ячейку нельзя назначить двум отправлениям одновременно
✔️ недоступность уведомлений не должна блокировать загрузку посылки
✔️ повторная команда не должна неконтролируемо открыть ячейку
✔️ от ввода корректного кода до открытия ячейки должно пройти не более 5-ти секунд



Определите:
1. Куда вы добавили бы брокер первым?
2. Какие события через него передавали бы?
3. Какие проблемы это решит?

Попробуйте решить, а затем сверяйтесь с разбором ниже 👇

.
.
.
.
.
.
.
.
.

Разбор решения


Единственного правильного варианта здесь нет. Но брокер должен появляться там, где нам нужны независимость компонентов, гарантированная доставка и повторная обработка.


1️⃣ Отправка уведомлений

Когда отправление получает статус «Готово к получению», сервис отправлений публикует событие:
ShipmentReady

Сервис управления доступом получает его, создаёт одноразовый код и QR-код, после чего формирует событие:
PickupAccessCreated

Сервис уведомлений получает его через брокер и отправляет данные пользователю.

Если сервис уведомлений или внешний SMS/Push-провайдер временно недоступен, загрузка посылки не блокируется. Сообщение остаётся в очереди и будет обработано позже.


2️⃣ События от постамата

Постамат передаёт на Backend технические события:

▫️ CellOpened — ячейка открыта
▫️ CellClosed — дверца закрыта
▫️ ParcelDetected — посылка находится внутри
▫️ ParcelRemoved — посылка извлечена

❗️Закрытая дверца сама по себе не означает, что посылка была загружена или получена. Поэтому состояние двери и наличие посылки — это разные события, которые надо контроллировать бэком.

Далее, например, событие "посылка извлечена" могут одновременно использовать:

→ сервис отправлений — чтобы изменить статус
→ сервис постаматов — чтобы освободить ячейку
→ сервис аналитики — чтобы сохранить статистику
→ сервис уведомлений — чтобы оповестить пользователя о состоянии посылки


3️⃣ Запуск возврата

Планировщик задач контролирует срок хранения отправления.

Когда 72 часа истекли, он публикует событие:
ReturnRequired

Сервис возвратов получает его через брокер и запускает процесс возврата, вкключающий смену статуса, уведомление пользователя, оповещение маркетплейста.

При этом брокер не должен использоваться как таймер на 72 часа. Срок контролирует планировщик, а брокер доставляет уже созданное событие.

Если вдруг покупатель всё же придёт за отправлением раньше забора посылки курьером, то процесс возврата должен быть прерван - это отдельное событие к обработке для брокера.



Что брокер не решает?

Дубли событий
Повторное открытие
Потерю связи с устройством
Одновременное получение и возврат
Назначение одной ячейки двум отправлениям


#PostamatGA #АрхитектураGA
17🔥13
🔵🔥 Нотация C4 для архитектуры: теория, 7 примеров и практический видеоурок 🔥🔵

Как показать архитектуру системы так, чтобы её поняли и бизнес, и разработчики?
Нотация моделирования архитектуры C4 поможет.

Собрала в одном посте все материалы по C4: от теории до готовых схем с конкретными примерами 👇👇👇



🎬 Практический видеоурок: C4 за 90 минут

Разбираем уровни Context, Container и Component и наглядно показываем, как проектировать архитектуру на примере двух реальных проектов.

К уроку — полный комплект схем C4 / Context и C4 / Container по каждому проекту: можно посмотреть процесс, а затем изучить результат.

YouTube
RuTube
VK Video
Telegram

🔗 Статья с доп. материалами




📚 Коротко по теории

C4 — модель описания архитектуры системы на четырёх уровнях.
Каждый следующий раскрывает детали предыдущего.


🔗 Официальный сайт C4
🔗 Нотация С4 — примеры диаграмм и инструменты


1️⃣ C4 / Context — контекст
Система, её интеграции и пользователи.
✔️ Главный прямоугольник - наша система
✔️ Серые прямоугольники вокруг - внешние
✔️ Пользователи

👩‍💻 Полезна бизнес- и техническим специалистам


2️⃣ C4 / Container — контейнеры
Независимые по коду приложения в системе, детализация главного прямоугольника c C4 / Context.
✔️ Пользователи и внешние системы с уровня C4 / Context
✔️ Мобильные, веб- и десктоп приложения
✔️ Сервер-приложения: монолит, сервисы, микросервисы, API Gateway
✔️ Базы данных и файловые хранилища
✔️ Виды API
✔️ Технологии (языки программирования, СУБД, протоколы для API и др)
✔️ Базы данных и файловые хранилища
✔️ Очереди и брокеры

👩‍💻 Полезна архитекторам, разработчикам и системным аналитикам.


3️⃣ C4 / Component — компоненты
Модули кода и зависимости между ними.
Детализирует один из контейнеров с C4 / Container.
На каждый контейнер своя схема.
Отлично подходит для детализации модульного монолита.


4️⃣ C4 / Code — код
На этом уровне детализируют каждый компонент c C4 / Component, показывая его реализацию в коде. Обычно это UML-диаграмма классов или другая визуализация.


🛠 Основные инструменты:
🔗 Draw.io - графический
🔗 Structurizr - код
🔗 MermaidChart - код
🔗 PlantUML - код, самый неудобный


Ключевые элементы нотации для каждого уровня прикреплены в картинках к посту.

Необязательно рисовать все четыре уровня: выбирайте нужную детализацию под задачу и аудиторию.



🖼 Примеры схем архитектуры

Можно изучать и использовать как ориентир для своих проектов.
В подборке есть и монолиты, и микросервисные системы с брокерами.

🔗 RideFlow — заказ такси
🔗 TelMed — телемедицина
🔗 BookingGA — сервис аренды недвижимости
🔗 GreenChargeGA — зарядки для электроавто
🔗 CityGA — поиск мероприятий в городе
🔗 AdFlowGA — рекламный сервис
🔗 Пример архитектуры C4 в Mir




🔖Это максимально полный гайд по C4.
Сохраняйте, чтобы теория, примеры и практика по C4 были под рукой, когда понадобится спроектировать архитектуру.


#АрхитектураGA

📱 Tg | 💙 ВК | 💬 Max
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍9🔥6
🧩 7 архитектурных решений, которые аналитик принимает раньше архитектора

«Пользователь заказал товар, курьер загрузил посылку в постамат, пользователь её забрал».

Один процесс. Но сколько вопросов появляется, когда начинаешь его проектировать:

▫️ какие микросервисы нужны
▫️ где хранить данные об отправлениях, ячейках и оплатах
▫️ какие API использовать
▫️ где ждать ответ, а где передавать событие через брокер
▫️ кто вообще имеет право открыть ячейку

И это вопросы, с которыми системный аналитик сталкивается уже при проработке требований — ещё до готовой схемы архитектуры.


Конечно, архитектурные решения принимаются вместе с архитектором и разработчиками.
👉 Но аналитику важно понимать, что именно мы выбираем и как этот выбор влияет на работу системы.


В карточках разбираем 7 таких решений на примере проекта #PostamatGA. Без попытки поставить Kafka между всеми прямоугольниками 😃


📌 Сохраните последнюю карточку — пригодится при обсуждении следующей большой фичи или нового проекта.


#АрхитектураGA

📱 Tg | 💙 ВК | 💬 Max
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤‍🔥2
💎 Архитектура для СА: открыта предзапись, старт 15 сентября 💎

Вы уже уверенный Middle, Middle+ или Senior. Понимаете процессы, работаете с интеграциями и API.

Микросервисы в теории понятны.
Знаете, зачем нужна Kafka.

Но как спроектировать реальный асинхронный процесс, в котором участвуют несколько сервисов?

🔴 Почему, например, остановка одного сервиса всё ещё блокирует процесс, несмотря на Kafka?

Потому что асинхронный обмен не отменяет зависимость между шагами. Если следующий шаг требует результата предыдущего, сообщение в брокере этот результат не заменит.

Нужно определить, где процесс может продолжаться независимо, где должен ждать и что произойдёт, если ожидание затянется.



От определения микросервисов и выбора технологий — к проектированию процессов между ними. На этом строится наш практический курс «Проектирование архитектуры» для системных аналитиков уровня уверенный Middle / Middle+ / Senior.

👉 Посмотреть программу


Что будем делать

▫️ Проектировать архитектуру с нуля: выбирать между монолитом, сервисной и микросервисной архитектурой.
▫️ Описывать архитектуру упрощенными схемами и с помощью нотации C4, чтобы обсуждать решения с командой.
▫️ Выбирать способы взаимодействия: REST, GraphQL, WebSocket и другие.
▫️ Проектировать асинхронные взаимодействия с Kafka и RabbitMQ, работать с вебхуками и описывать требования для разработчиков.


После практики с нами

✔️ Приходите на архитектурный митинг и ведёте его, а не просто участвуете.
✔️ Обосновываете повышение грейда конкретными навыками.
✔️ Проходите технические собеседования и сами выбираете оффер.
✔️ Переходите из проектной разработки в продукт с SOA или микросервисами.
✔️ Закрываете пробелы, которые давно хотели закрыть, и собираете своё публичное портфолио.


Процесс

12 онлайн-практикумов и теоретические модули в записи: разбираем демонстрационный проект и применяем подходы на дополнительном проекте для закрепления навыков.

Домашние задания и обратная связь — на всех тарифах. Глубина проверки зависит от тарифа.



💎 Проектирование архитектуры
🗓 Старт 15 сентября


Предзапись до 11 сентября
🎁 скидка + мини-курс «Интеграции 4.0 — продвинутый уровень» в подарок

👉 Посмотреть программу и записаться
Please open Telegram to view this post
VIEW IN TELEGRAM
4
👩‍💻 Вайбкодинг для СА: создание приложения с помощью ИИ 🤖🧠

щё недавно системный аналитик описывал требования и передавал их разработчикам. Теперь с помощью вайбкодинга он может сам превратить идею и требования в работающее приложение.

Означает ли это, что граница между аналитиком и программистом постепенно исчезает? И станет ли умение создавать решения с помощью ИИ новым обязательным навыком аналитика?

В этом выпуске проверяем возможности вайбкодинга на реальном кейсе.

🔗 Сайт эпизода
🔗 Приложение: инструмент для БД и SQL


Видео с демо (рекомендуется):
YouTube
RuTube
VK Video
Telegram


Аудио:
Apple Podcast
Яндекс.Музыка
Castbox
Звук
Spotify


GetAnalyst — база знаний с нереальным количеством практики в открытом доступе 😍


📱 Tg | 💙 ВК | 💬 Max
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥7🔥4😁32👍2