GetAnalyst - Навыки • Системный анализ • Бизнес-анализ – Telegram
GetAnalyst - Навыки • Системный анализ • Бизнес-анализ
19.5K subscribers
2.09K photos
74 videos
203 files
1.19K links
Разбор задач на проектирование систем 🚀 Канал для системных аналитиков, бизнес-аналитиков, тестировщиков и менеджеров проектов

Админ @getanalyst
Сайт https://getanalyst.ru
Чат t.me/getanalystchat
Начинающим в IT @getanalyststart

РКН №5013005196
Download Telegram
🤖 UML-диаграмма для сценария интеграции за 3 минуты: ChatGPT+PlantUML 🤖


🔗 Статья с инструкцией - пошаговый гайд с картинками и примерами


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

ChatGPT - Искусственный Интеллект
PlantUML - Инструмент для описания любых диаграмм UML через код


Инструкция по созданию UML Sequence:

1️⃣ Открой ChatGPT и войди аккаунт

2️⃣ Выполни команду
Работай как опытный системный аналитик.
Сделай код для plantUML, чтобы создать UML Sequence диаграмму.
Не показывай альтернативные сценарии.

Сценарий:
<название сценария>

Пользователи и системы:
<участники сценария>

Описание сценария:
<описание Use Case>

Заполни название сценария и список участников (пользователи, фронтенды, бэкенды, внешние системы, БД).

Скопируй и вставь на место <описание Use Case> детализированный Use Case с описанием сценария интеграции.
Пример Use Case.

Отправь запрос к ChatGPT.

3️⃣ ChatGPT вернет в ответ код диаграммы для PlantUML

4️⃣ Вставь полученный код в PlantUML

5️⃣ Обязательно проверь и скорректируй результат:
5.1. Вручную поправь код по аналогии - это быстрее
5.2. Проси уточнения кода у ChatGPT дополнительными запросами


Плюсы:
1. Диаграмма за 3+15 минут, с учетом проверки результатов.
2. Не надо писать код самому.
3. Легко делать правки, т.к. диаграмма через код, и при любых правках всё двигается автоматически.

Минусы:
1. Интеграционный Use Case должен быть описан идеально. Без него диаграмму не сделать, либо будет много правок в придуманном ИИ варианте
2. ChatGPT делает ошибки и за ним надо вносить правки


🔗 Статья с инструкцией


Рекомендую использовать этот лайфхак только при знании и понимании нотации.
Для тех, кто только изучает UML, рекомендую использовать ИИ для проверок ваших результатов.


#ИнтеграцииGA
Please open Telegram to view this post
VIEW IN TELEGRAM
26👍10🔥4🦄3
[GetAnalyst] Интеграционный API-метод.pdf
930.5 KB
👩‍💻 Интеграционный API-метод: как это работает? 👩‍💻

Работая с задачами на интеграцию, важно помнить, что в процесс вовлечены сразу несколько частей системы:

▫️Frontend – пользовательский интерфейс. Он не всегда есть в интеграционных задачах, но если присутствует, то выполняет роль инициатора запросов.

▫️Backend – серверное приложение, которое отвечает за логику обработки данных, их проверку и взаимодействие с внешними системами.

▫️Внешняя система – источник или получатель данных, с которым взаимодействует наш Backend.

Для обеспечения безопасности большинство интеграций реализуется через Backend.
Для этого создают интеграционные API-методы.


👉 Интеграционный API-метод – это метод на стороне нашего Backend, который:
+ принимает запросы от Frontend-приложения;
+ взаимодействует с внешней системой для получения или записи данных;
+ реализует логику сопоставления (маппинга) и обработку данных.


Почему используется интеграционный API-метод, а не прямое обращение к внешней системе с Frontend?

Централизованное хранение данных:
Backend является центром хранения актуальных данных. Все изменения, включая удаление задач, должны проходить через него, чтобы данные оставались актуальными.

Безопасность:
Хранить секретные ключи на стороне Frontend небезопасно – они могут быть скомпрометированы (например, перехвачены через консоль браузера). Размещение ключей на Backend исключает этот риск.


Пример алгоритма работы интеграционного API-метода разобрала в мини-книге к посту 🤝

#ИнтеграцииGA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍155🔥2👌1
💫 Проектирование распределенных БД [23 декабря] 💫

Хотим напомнить вам про продвинутые практикумы по программе проектирование БД и SQL.


В понедельник буду вести занятие:

📚 Проектирование распределенных БД
🗓 23 декабря, 19:00 Мск
👩‍🏫 Екатерина Ананьева


🔗 Узнать подробности и записаться

План:
1. Базовые понятия архитектуры: сервис-ориентированная (SOA) и микросервисная (MSA).
2. Знакомство с проектом и выделение сущностей.
3. Определение логической и физической моделей БД с разбором примеров по проекту.
4. Практика. Фокус на проектировании физических моделей БД - PostgreSQL.
5. Обзор шаблона постановки задачи на разработчиков.

+ Сразу после записи на практику доступно последнее актуальное занятие по миграции данных между БД, чтобы сразу было что изучать.


Участие в занятии актуально для аналитиков, кто уже знаком с проектированием БД и хочет погружаться в работу с более сложными задачами 💪

Есть вопросы? Пишите нам в аккаунт @getanalyst или на сайте 👌
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤‍🔥2
🥶 Ледяные ванны — мой главный антистресс года 🥶

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

Схема простая:
1. 20 минут прогрева в сауне до состояния "я таю" 🫠
2. Погружение в ледяную купель с водой 4-5'C 🥶
Но не на пару секунд и побежала греться. А на 3-10 минут. Спокойно сижу, как в обычной ванной.
3. И так 2-3 круга.

Делаю это минимум два раза в неделю уже пол года.

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

Я начала это ради того, чтобы быть спокойнее в любой непонятной ситуации. Развивать стрессоустойчивость.
И знаете что? Это работает.

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

За пол года эффект невероятный.
Когда только начинала, могла выдержать минуту и думала "зачем я вообще здесь себя так мучаю?".
К концу года спокойно сижу 3-4 минуты и думаю о прекрасном. Если в специальных защитных ботинках для ног, то все 10 минут могу оставаться в ледяной воде.
Это прекрасно снимает напряжение после долгих часов за компьютером и рабочих переживаний.

У нас это называется cold plunge. Их начинают устанавливать во многих спортзалах.

Хотела сделать подборку локаций в Мск и Спб, но не нашла ничего подобного 😞
P.S. Ныряние в прорубь это не совсем то 😂 Когда ты в обстановке как в СПА, рядом с сауной и горячим джакузи, то оно как-то приятнее всё))

Если кто-то такое тоже практиковал и знает места, поделитесь с нами в комментариях.

А если будете путешествовать и увидите вариант сходить в Cold Plangue - пробуйте!
Это классное хобби для восстановления и стрессоустойчивости с нашей работой 🤩
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4520🔥9🍾3❤‍🔥2🤔2👎1😁1🤯1
📖 Требования к технической реализации - REST API метод в интеграции 📖

В конце прошлой недели я дала постановку задачи на интеграционный REST API метод:
при удалении задачи в системе #EventTasksGA нужно автоматически удалять её и в системе Todoist.

Но я не обосновала, почему делаю метод:
DELETE /event/{eventId}/task/{taskId} - удаление задачи из мероприятия

Это метод на стороне нашей системы EventTasksGA. Его описывают системные аналитики и/или Backend-разработчики.


Обоснование:

1. DELETE

Этот HTTP-метод выбран, потому что отвечает за удаление.

Ошибки:
Делать
POST /task/{taskId}/delete

или
POST /delete-task/{id}

и т.п.
Не надо тащить глагол действия delete в URL.
Действие удаления выбирается на уровне HTTP-метода.
Аналогично будет с другими действиями.


2. https://test.com/api/v1/event/{eventId}/task/{taskId}

Такой URL выбран, потому что задачи task всегда создаются внутри мероприятий event.

Альтернативные варианты:
👌 /task/{taskId} - т.к. у каждой задачи в системе в любом случае будет свой уникальный id, то не обязательно создавать дополнительную вложенность (мероприятие -> задача)

👌 /task?taskId={id} - можно делать id задачи как query-параметр (после ?), но более распространенная практика использовать path-параметр, как в решении.

Ошибки:
Глагол действия в URL.
Отсутствие id задачи в URL под предлогом, что оно должно быть в body (json).


3. Тело запроса Body (JSON)
Отсутствует.
Вся необходимая информация уже передается в URL.
Также в DELETE обычно не определяют тело запроса (подтверждающий источник).



Чтобы самостоятельно разобраться с проектированием REST API с нуля, рекомендую последовательно познакомиться с материалами:

📚 Протокол HTTP и его связь с REST API
📚 Картинка к посту
📚 Структура постановки задачи на REST API метод
📚 Связь БД и дизайна REST API
📚 Проектирование REST API: спорные вопросы с проектов и собеседований
📚 Вопросы и ответы по REST API: собеседование на системного аналитика


#RestApiGA #ИнтеграцииGA
17👍9❤‍🔥4🔥3
Работа над ошибками в REST API - часть 1

А теперь давайте вернемся к посту, где я описала для вас в Confluence подробный интеграционный Use Case.

В нём я указала два интеграционных метода REST API на шагах 4 и 5:

1. POST /orders/{orderId}/projects - создание проекта в системе Todoist для оплаченного заказа на организацию мероприятия.


Мои ошибки:

В предыдущем посте я рассказываю вам, что мы берем для удаления задач DELETE /event/{eventId}/task/{taskId}, а сначала предлагала вместо event использовать в URL сущность order.

В одном случае единственное число (event, task), а в другом множественное (orders, tasks) в названиях сущностей.

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

Поэтому выбираю итоговое решение:
POST /orders/{orderId}/projects
DELETE /orders/{orderId}/tasks/{taskId}


Вместо сущности мероприятие (event) будем использовать заказ (order) везде.
Также будем использовать множественное число для названия эндпоинтов, потому что так привычнее.



2. POST /orders/{orderId}/tasks - создание стандартного набора задач под организацию заказанного мероприятия.


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

Проблемы с иерархией.
C точки зрения внешней системы Todoist задачи должны быть внутри проектов.
А с точки зрения нашей системы задачи нужны для выполнения заказа order.

Получается, что для работы с задачами Todoist должны быть методы:
POST /orders/{orderId}/projects/{projectId}/tasks - создание задачи в проекте
DELETE /orders/{orderId}/projects/{projectId}/tasks/{taskId} - удаление задачи
GET /orders/{orderId}/projects/{projectId}/tasks - список задач проекта в Todoist

Выглядят такие методы перегружено.

Продолжим разбирать "как лучше" в следующем посте 👇

#RestApiGA #ИнтеграцииGA
10👌3👍2❤‍🔥1
Работа над ошибками в REST API - часть 2 (читать аккуратно, вдумчиво, глядя на картинку с БД)

Проблемы с иерархией.
C точки зрения внешней системы Todoist задачи рекомендуется делать внутри проектов (API-документация).
А с точки зрения нашей системы задачи нужны для выполнения заказа order.


В БД #EventTasksGA, которую добавила к посту, можно увидеть следующее:

👉 Сущность "Проект Todoist" отсутствует в БД
А в Todoist без проекта нельзя создавать задачи (требование бизнеса).
У нас есть четкое соответствие: для 1 заказа есть 1 проект в Todoist.
Кроме id нам от проекта в Todoist больше ничего не надо в EventTasksGA.
Поэтому давайте только его и хранить в заказе.
Итого: в таблицу order добавляем параметр todolist_project_id. Через него будем узнавать в каком проекте задачи.

👉 Сущность "Задачи Todoist" (todoist_project_task) есть в БД EventTasksGA, и она связана с заказом.
Каждая новая задача в Todoist будет приводить к записи новой задачи в таблицу todoist_project_task - создание новой строки.


После исследований нашей БД и сопоставления с Todoist, предлагаю действовать так:

PATCH /orders/{orderId}/todoist-projects - создание проекта в Todoist под оплаченный заказ, т.е. дополнение таблицы БД “order” параметром project_id.
PATCH - т.к. нет создания новой строки в таблице, а есть только изменение существующей.

POST /orders/{orderId}/tasks - создание задачи в Todoist (вызов API), после чего создаем в БД новую строку - запись о задаче в таблицу todoist_project_task.
POST - так как новая строка данными о задаче в БД.

GET /orders/{orderId}/tasks - список задач по заказу, которые создали в Todoist. Выглядит аккуратно и логично.

DELETE /orders/{orderId}/tasks/{taskId} - удаление задачи из заказа (проекта в Todoist).



Стандартизировались 🙌
Эти посты наглядно показыавают, что при проектировании REST API я не могу работать только с одним методом.
Важно видеть всю систему целиком, все данные.


Остаётся вам передать полные постановки задач на интеграцию 😉

#RestApiGA #ИнтеграцииGA
10❤‍🔥8👍3🔥3
🔎 Нужно ли уметь проектировать методы REST API системному аналитику? 🔎

REST API — это основной способ интеграции современных систем.

Системные аналитики часто сталкиваются с анализом API-документации, чтобы разработать требования к интеграции (инструкция по работе с задачами на интеграции).


Однако некоторым аналитикам требуется не только умение читать чужую документацию, но и способность проектировать методы REST API с нуля.
Это включает как минимум:
✔️ выбор подходящих HTTP-методов (POST, GET, PUT, PATCH, DELETE),
✔️ определение URL,
✔️ и самостоятельное описание JSON-ов.


Что конкретно нужно знать по части REST API системному аналитику зависит от нескольких факторов:

👉 1. Грейд (уровень специалиста)
Все системные аналитики, включая начинающих (junior), должны уметь читать REST API-документацию.
Это включает:
+ Знание назначения методов POST, GET, PUT и других.
+ Понимание структуры URL и способность определить назначение метода, даже без пояснений на естественном языке.
+ Умение читать и описывать JSON, а также формулировать требования к его содержимому
На многих собеседованиях сейчас просят хотя бы на базовом уровне описать метод REST API с нуля. Даже junior-ов.


👉 2. Проект
Бывают простые проекты, бывают сложные. Бывают с REST API или без него (но это редкость).

👉 👉 2.1. В веб-разработке встречаются проекты без API, где UI и серверная логика объединены в одной кодовой базе. Обычно это внутренние системы.
Еще желательно, чтобы проект был без внешних интеграций.
В таком случае с REST API вы не встретитесь.
Такие проекты подходят для начального уровня, но редко интересны опытным аналитикам.

👉 👉 2.2. Если вы работаете над интеграциями с внешними системами, необходимо уметь читать REST API. Умение проектировать методы с нуля не всегда требуется.

👉 👉 2.3. Если ваша система должна предоставлять API для внешних систем, от системного аналитика ожидается умение собирать требования и проектировать методы REST API, т.е. составлять контракты: определять HTTP-метод, URL, JSON-ы и другие параметры.


👉 3. Команда и правила компании
В разных компаниях обязанности по проектированию REST API распределены по-разному.
В одних это зона ответственности разработчиков, в других — системных аналитиков. В любом случае, итоговое решение всегда принимает Backend-разработчик, который может скорректировать предложения аналитика.
Во многих компаниях есть выделенные Backend-команды. В них требуют, чтобы системные аналитики сосредотачивались исключительно на проектировании REST API, и нет задач на работу с пользовательским интерфейсом (UI).


--------
Итого…

Требования к умению проектировать REST API для системного аналитика зависят от уровня специалиста, специфики проекта и подхода компании.

На начальных этапах карьеры достаточно базовых знаний:
+ понимать структуру документации,
+ различать HTTP-методы,
+ и уметь читать JSON.

Однако с ростом квалификации и участием в более сложных проектах навыки проектирования REST API методов с нуля становятся необходимыми. Вмесе с этим просят умение работать с Postman и/или Swagger (знание OpenAPI).

REST API — это уже не просто дополнительный навык, а одна из основных компетенций системного аналитика.

#RestApiGA #ИнтеграцииGA
14👍5
🏆 Маппинг данных - что это и зачем? 🏆

Маппинг - это процесс сопоставления полей (данных) из одной системы с соответствующими полями в другой системе.
Это нужно, так как разные системы могут описывать один и тот же объект данных по-разному.

Этот процесс всегда необходим в задачах на интеграции.

Маппинг описывают в виде таблицы.
Допустимо делать и в виде структурированного списка, но по опыту скажу - таблицы удобнее.


➡️ В таблице с маппингом делают несколько основных колонок:

- название параметра на разговорном языке;
- описание, требования к валидации, ФЛК (форматно-логический контроль) и преобразованиям, если это необходимо;
- названия параметра в API каждой системы (например, поле из JSON, поле из xml или другого формата сообщения, query из URL и др);
- название параметра в БД системы, которая отвечает за работу интеграции, если в процессе работы метода надо сохранить данные в БД.
- типы данных в каждой системе и в БД;

Допустима вариативность с колонками. Их может быть больше, а может быть и меньше.



Если говорить про задачу интеграцию системы #EventTasksGA с Todoist для создания задач, то маппинг будет содержать несколько колонок:

- название поля на русском
- название поля в REST API Backend EventTasksGA
- название параметра в API системы Todoist, чтобы установить соответствие с её полями в интеграции
- название поля в БД EventTasksGA, т.к. задача после создания сохраняется в её БД
- описание поля, требования к его обработке и проверкам
- типы данных в API EventTasksGA, API Todoist и БД. Я бы добавила только отдельную колонку “Тип данных в API EventTasksGA”. Все остальные типы данных не так важны или очевидны.


Маппинг помогает разработчикам понять, какие данные нужно получать из внешней системы, с которой интеграция, что важно сохранить в БД или сопоставить с ней, а что нужно просто показать пользователю и не надо держать в памяти программы 🙌

#ИнтеграцииGA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍255🔥2
🚀 Интеграции систем - предобучение начинается сегодня 🚀

Я рада приветствовать нашу новую команду, которая будет работать над проектом по интеграциям! 💚

Сегодня открывается первый модуль “Предобучение”.
На этой неделе начнём подключение к Confluence для работы над проектом.

А первая онлайн встреча пройдёт уже в Новом году:
🗓14 января 2025, в 19:00 Мск


В этот раз у нас особенный поток 🙂

Так как мы официально стартовали до Нового года и есть дополнительное время на обучение, то мы заранее откроем теоретические модули вперед, и в течение каникул будем давать рекомендации по их прохождению.


Это дополнительное время даёт следующие преимущества:


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

Telegram-чат для консультаций уже открыт — задавайте вопросы в любое время!

У меня есть несколько дополнительных заданий, которые я обычно предлагаю для самостоятельного выполнения после завершения курса. Среди них работа с GraphQL, SOAP API и создание диаграммы C4 через код. Их можно будет сделать раньше.

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


Пусть это время станет отличным стартом для ваших новых знаний и достижений в Новом году! 🚀


🔗 Узнать подробнее о практической программе
Вопросы по подключению к группе можно задать
@getanalyst или через сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍86🔥4
🔥 Связь "многие-ко-многим" в БД: разбор задачи с собеседования на системного аналитика 🔥

В эпизоде разбираем одну из самых популярных задач для собеседования на системного аналитика: проектирование БД, ER-диаграмма и связь “многие ко-многим”.

Полезен для всех начинающих и опытных системных аналитиков, у кого мало опыта в создании ER-диаграмм с нуля. И конечно для тех системных аналитиков, кто сейчас активно готовится к собеседованиям.

🔗 Сайт эпизода


Эпизод доступен в:
RuTube
YouTube
VK Video

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


Делитесь с коллегами и подписывайтесь на канал подкаста, чтобы следить за релизами новых эпизодов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥244😁1👌1
🎁 Доступны новые вебинары в записи 🎁

Ровно один раз в год я рассказываю про этот раздел нашего сайта. День настал! ☺️


Коллеги, у нас на сайте есть раздел:
🔗 Материалы для самостоятельного обучения

В нем вы можете найти практические вебинары в записи по Интеграциям, REST API, Архитектуре, БД и SQL, для начинающих системных аналитиков.

Мы рады сообщить, что за этот год раздел пополнился новыми материалами:
🔗 Проектирование архитектуры 1.0
🔗 REST API для аналитиков 4.0
🔗 Базы данных и SQL: продвинутый уровень

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

Практика и.... еще немного практики! А также все мои душа и сердце, которые я вкладываю в своё дело и в эти занятия.


Спасибо, что выбираете GetAnalyst ❤️

P.S. Есть вопросы? Пишите нам в @getanalyst или на сайте 👌
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍7🔥5🥰1
🤍 Итоги 2024 года в GetAnalyst 🤍

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

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

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

Картинки 🤍☝️
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍3😁3❤‍🔥2