GetAnalyst - Навыки • Системный анализ • Бизнес-анализ
21.7K subscribers
2.36K photos
84 videos
243 files
1.33K links
Разбор задач на проектирование систем 🚀 Канал для системных аналитиков, бизнес-аналитиков, тестировщиков и менеджеров проектов

Админ @getanalyst
Сайт https://getanalyst.ru
Чат t.me/getanalystchat
Начинающим в IT @getanalyststart
Download Telegram
💫 Вопросы и ответы по REST API: собеседование на системного аналитика 💫

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

Эпизод рекомендуется к прослушиванию как для начинающих, так и для опытных системных аналитиков, стремящихся углубить свои знания в теме проектирования REST API и успешно проходить технические собеседования. Особенно рекомендуется, если у вас завтра техническое интервью 🙂

00:59 - О структуре выпуска и причине выбора темы.
02:25 - Что такое REST API и его отличия от RESTful.
10:10 - 6 главных принципов REST API.
15:52 - Структура запросов и ответов REST API: типы методов и отличия между ними.
23:50 - URL и URI. Структура URI запроса. Примеры.
query и path-параметры, headers, тело запроса и ответа, авторизация, коды состояний HTTP.
29:10 - Ресурс в контексте REST API. Связь объектов данных (ресурсов) REST API и БД.
31:05 - Query-параметры в запросе. Элементы пагинации в query-параметрах и body. Path-параметры.
36:28 - Что спрашивают по авторизации в API на собеседовании. Про безопасность. Заголовки запросов - Headers. Форматы сообщений в Body.
39:27 - Коды ответов HTTP, их назначения и какие знать обязательно. Вопросы с подвохами про отличия между кодами ответов HTTP в разных ситуациях.
43:40 - Отличия между POST и PUT. Идемпотентность. Получение данных через POST.
47:10 - Другие важные технические вопросы про асинхронные запросы и Webhook-и.
48:48 - Виды практических задач по REST API на собеседованиях для системных аналитиков.
54:00 - Вопросы про опыт работы с REST API. Рекомендация - используйте портфолио (личные демо-проекты).
56:48 - Заключение и рекомендации по самостоятельному освоению REST API.

Эпизод доступен в:

Apple Podcast
Яндекс.Музыка
YouTube
Telegram
Castbox
Spotify

Подписывайтесь и делитесь с коллегами! 😉
🔥3612👍8💯1
Риал лайф, ребят 😀

*Confluence - один из наиболее популярных инструментов для документирования требований к ПО 🤓

#GAhahaha
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36😁65
Проектирование и разработка REST API находится в зоне ответственности:
💫 Всей Backend-команды, если в компании есть деление на команды Frontend/Mobile/Backend,
💫 В случае кросс-функциональных команд, отвечающих за части системы, это ответственность Backend-разработчиков.

В обоих случаях в этом процессе участвуют системные аналитики. Они могут работать в тесном сотрудничестве с тим-лидами, архитекторами и разработчиками, чтобы разработать REST API, который наиболее эффективно решит бизнес-задачи проекта.

В процессе анализа требований, связанных с интеграциями и API, системный аналитик делает:
1. Исследование бизнес-процесса
2. Анализ требований клиентов (UI / другие системы)
3. Проектирование доработок БД
4. Разработка контрактов API
5. Использование контрактов API всеми разработчиками и их сопровождение

Системный аналитик может внести следующий вклад в реализацию задачи по проектированию REST API (по факту любого API):
🟢 предоставить информацию о том, какие данные нужны для интеграции систем, и как эти данные должны быть структурированы и переданы в API;
🟢 предложить использовать соответствующие действиям в системе HTTP-методы, такие как GET, POST, PUT и DELETE;
🟢 предложить использовать определенные структуры JSON-объектов для передачи данных в API;
🟢 помочь обеспечить безопасность API, выбрав механизм аутентификации и авторизации;
🟢 документировать API для облегчения взаимодействия между системными аналитиками, тим-лидами и разработчиками;
🟢 тестировать API через Postman, для проверки правильности его работы и соответствия постановке задачи.

Я, как системный аналитик, всегда очень хорошо знают весь проект с которым работаю. Это позволяет мне видеть решение задачи не только в контектсте одной функции, а шире - с учетом требований ко всей системе.

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

#RestApiGA
👍289👎1
📌 Проект на проектирование REST API - Smart Home GA - #SHGA 📌

Проект Smart Home GA представляет собой мобильные приложения Android и iOS, с которых можно управлять умными устройствами в доме.

Умные устройства:
- Пылесос (через сервер идет включение, выключение, проверка статуса, история уборок).
- Весы (значения отправляются с весов на телефон, с телефона на сервер).
- Светильники (через сервер идет включение, выключение, проверка статуса).
- Холодильник (через сервер можно запрашивать информацию про запас воды по кол-ву бутылок в секции бутылок, блокировать-разблокировать дверь, смотреть запас яиц по датчикам в отсеке яиц).

Для взаимодействия с сервером (Backend), то есть для отправки и получения данных по умным устройствам будет использоваться REST API. Посредником в передаче данных до устройств будет сервер Backend SHGA.

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

Наши задачи на проект:
1. Выделить процессы к автоматизации. Разработать для них UI для мобильных приложений и БД сервера.
2. Для процессов и описанных UI выделить список REST API методов к проектированию.
3. Создать контракты REST API для этих методов: GET/POST/PUT/PATCH/DELETE + URL + Headers + Body (JSON) + ... .
4. Посмотрим как переносить контракты в один из инструментов Postman / Swagger.

Вводные есть, можно начинать 🙂

#RestApiGA
18🔥9👍5👀4
📰 Новости GetAnalyst 📰

🙌 Системным и бизнес-аналитикам:

1. Открыли предзапись на практическую программу REST API на специальных условиях до 18 апреля 23:59 Мск (предобучение - с 24 апреля, первая онлайн-практика 6 мая) 🚀

2. На сайте появился раздел "Карьера".
Там можно будет найти актуальные вакансии. Все вакансии будут проходить модерацию.
А первая компания, вакансии которой мы уже опубликовали, очень даже вау. Проводила у них внутреннее обучение по искусственному интеллекту. Это круто, когда компании развивают своих сотрудников!

3. Оформили YouTube-канал 📹

4. Освежили дизайн в Instagram. Туда на этой неделе опубликуют подборку книг по системному анализу - самую-самую полную, следите за актуальным в сториз 📚


🙌 Работодателям

1. Открыли предзапись на практическую программу REST API на специальных условиях до 18 апреля 23:59 Мск (предобучение - с 24 апреля, первая онлайн-практика 6 мая) 🙂

2. На сайте в разделе Карьера добавили блок "Работодателям".
Теперь у нас можно публиковать вакансии.

Стараемся сделать IT-сообщество максимально полезным.
Делитесь новостями с вашими коллегами и HR. А мы с командой GetAnalyst будем продолжать развивать наш проект для вас дальше ❤️

#RestApiGA #HrGetAnalyst
🔥223👎1🤔1
🤝 Связь CRUD-модели и методов REST API 🤝

Работая над задачами связанными с определением функциональности, я всегда использую CRUD-модель, которая легко сопоставляется с методами REST API:

C - Create - Создать - POST / PUT
R - Read - Читать / Смотреть / Получить - GET / POST в искл. случаях
U - Update - Изменить - PATCH / PUT
D - Delete - Удалить - DELETE / PATCH в случаях архивации

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

❗️Важно помнить, что эту модель нужно прогнать не только для ОДНОГО объекта, но и для МНОГИХ.
❗️Важно уточнять, кто и когда это будет делать.

Статья по созданию CRUD-модели с подробным разбором примера доступна по этой ссылке.

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

Используйте её, чтобы структурировать процесс работы с функциональными требованиями 🙌
26👍12❤‍🔥3
🤝 Пример применения CRUD-модели для проекта Smart Home GA #SHGA 🤝

🔸 Сущность:
Умное устройство

🔸 Роли в системе:
Администратор - может загружать данные о произведенных заводом устройствах из файла.
Пользователь - владелец устройства.

🔸 По CRUD-модели:

Create:
+ Создать устройство - пользователь активирует и добавляет устройство в свой ЛК, чтобы управлять им (1).
+ Создать список устройств - администратор загружает список устройств из файла, получаемого от завода (2).

Read:
+ Получить информацию об одном устройстве - пользователь смотрит подробную информацию об одном своем устройстве (3), а администратор смотрит информацию о любых устройствах (4).
+ Получить список устройств - только своих для пользователя (5), и общий для администратора (6).

Update:
+ Обновить информацию об одном устройстве - пользователь изменяет имя или другие настраиваемые характеристики (7), администратор может внести изменения в любые характеристики, даже в заводской номер устройства, что недоступно пользователю (8).
- Обновить список устройств - пользователю списком обновлять ничего не надо, а вот администратору такая возможность может пригодиться, если в файле при создании были ошибки, но лучше пусть удалит ошибочные данные и перезагрузит файл заново.

Delete:
+ Удалить информацию об одном устройстве - пользователь удаляет устройство из личного списка (9), а администратор из общего (10).
+ Удалить список устройств - пользователю это избыточно, а для администратора полезно в случае ошибок при загрузке файлов с производства (11).


Получился список из 11 методов, связанных с Умным устройством.

Как модель помогает? Я по порядку прохожу по списку функций CRUD и анализирую что можно, а что нельзя будет делать с сущностью в системе. Это структурирует процесс аналитики: делает его последовательным и логичным.

В результате такой аналитики я всегда точно знаю, какое количество REST API методов нужно будет сделать.

Особенно CRUD полезна для проектов "с нуля", но и при доработках тоже.

Пусть лайфхак с CRUD-моделью помогает и вам 🙂
👍16🔥82👌1
Когда мы впускаем новые знания в свою жизнь, это всегда больше, чем просто получение новых навыков. Это про изменение жизни. Можно сравнить это с переездом в незнакомый город или страну. В один прекрасный момент ты осознаешь, что эти изменения делают тебя совершенно другим человеком.

Обучение это не только про умение делать что-то новое. Это о трансформации твоего восприятия, изменении твоих внутренних убеждений и даже о новом способе взаимодействия с миром вокруг. Как когда ты переезжаешь в другой город, где всё неизвестно и вызывает лёгкое волнение. Ты начинаешь замечать вещи, которые раньше не замечал, встречать людей, пути которых никогда бы не пересеклись с твоими, если бы ты остался на месте.

Каждый раз, когда ты начинаешь учиться чему-то новому, ты делаешь шаг в неизведанное. И это не всегда легко. Может показаться, что ты один в этой новой "стране" знаний. Но именно это и делает процесс таким волнующим и ценным. Ты начинаешь понимать, что каждый шаг, каждая ошибка и каждое достижение делают тебя уникальным. Ты учишься не только новым навыкам, но и узнаешь много нового о себе.

В этом процессе ты сталкиваешься с собственными страхами, сомнениями и неуверенностью. И каждое маленькое победное "я смог" добавляет тебе уверенности. Ты начинаешь верить, что можешь больше, чем думал до этого. И в какой-то момент ты осознаешь, что больше не тот человек, который начинал это путешествие. Ты вырос, изменился, ты стал лучшей версией себя.

Так что, если ты стоишь на пороге нового начала, будь то новый навык, хобби или даже новая работа, помни: ты не просто учишься чему-то новому. Ты на пути к трансформации своей жизни. Это путешествие к тому, чтобы стать другим — более смелым, опытным и, безусловно, интересным человеком. Погрузись в этот процесс с головой и наслаждайся каждым моментом изменений, ведь это путешествие столь же важно, сколь и его конечная цель.
32👏9🔥5
📌 Структура метода REST API - чек-лист для постановки задачи на Backend-разработчика 📌

Если вы только переходите на позицию Системного аналитика, или начинаете работать с задачами на Backend и API, то этот пост с чек-листом будет работать на вас 😎


ЗАПРОС

☑️ Назначение API и список его будущих пользователей
Метод предназначен для авторизованных пользователей Smart Home GA, чтобы отображать для них список привязанных к ЛК умных устройств в мобильном приложении.

☑️ Короткое название API-метода на родном языке
Получение списка устройств

☑️ Алгоритм работы
Здесь может быть детализированное описание Use Case взаимодействия между клиентом и сервер приложением, предоставляющим API-интерфейс.
На вход пользователь передает… . Из БД, таблица … .

☑️ Тип метода REST API
GET / POST / PUT / PATCH / DELETE / TRACE …
GET

☑️ Полный URL (endpoint)
https://smarthomega.com/api/user-apps-api/v1/devices

☑️ Query-параметры
Фильтры, сортировки, пагинация, авторизация.
status: Значения - on/off/deactivated. По умолчанию: не применяется.
name: Название устройства, поиск по вхождению подстроки в строку.
limit, offset: Элементы пагинации. По умолчанию 10, 0.
и так далее.


☑️ Headers - заголовки запроса
Content-Type: application/json.
Authorization:..
User-Agent:..

☑️ Request Body - тело запроса
Здесь может быть JSON / XML / HTML / TEXT / JavaScript пример запроса.
Нет - для примера запроса.

☑️ Маппинг данных запроса
Сопоставление данных в API, БД и в API внешних систем, если метод интеграционный. Таблица.


ОТВЕТ

☑️ HTTP-код успешного ответа
HTTP-200

☑️ Headers успешного ответа
Редко описывают отдельно, обычно они стандартные на всё API.

☑️ Response Body - тело ответа
Пример JSON:
{
"devices":
[
{
"id": 1,
"name": "my robot",
"status": "off",
...
},
{
...
}
]
}


☑️ Маппинг данных успешного ответа
Сопоставление данных в API, БД и в API внешних систем, если метод интеграционный. Таблица.

☑️ Список возможных ошибок
Код HTTP, заголовки, тело ответа, описание ситуации.

Готово!

#RestApiGA #SHGA
35👍6❤‍🔥4🦄3🤩1
Для чего нужен API на проекте 🧐

API (Application Programming Interface) – это основной компонент современной архитектуры программных систем, обеспечивающий взаимодействие между различными приложениями и сервисами в них.


Зачем нужен API на проекте?

⭐️ Обеспечение работы мобильных, веб- и десктоп приложений.
API обеспечивает связь с сервером и доступ к базам данных.

⭐️ Интеграция с внешними сервисами.
API позволяет вашему приложению легко "общаться" с внешними сервисами и системами, расширяя функциональные возможности без необходимости разработки собственных сложных решений.
Например, подключить на сайт API-погоды, чтобы не разрабатывать свою собственную погодную систему с нуля.

⭐️ Безопасность.
API обеспечивает безопасный доступ к функциям и данным приложений, используя стандарты аутентификации и авторизации, такие как JWT Token, OAuth и другие.

Для более глубокого понимания добавила картинку к посту.

Умение проектировать и использовать API становится важным навыком для разработчиков и системных аналитиков. В особенности REST API, который используют более 80% систем во всём мире.

А как аналитики участвуют в разработке и проектировании API - рассказала в этом посте.

#RestApiGA #SHGA
10👍6
Привеееет! Пора проходить квиз на знания REST API! 😉

Подобрала для вас 10 вопросов разного уровня сложности.
Первые 5 придут сейчас, остальные завтра.

Будьте внимательны 😉 Некоторые вопросы вызывают огромное желание спорить! Обсуждаем в комментариях.

Ответы будем разбирать в начале следующей недели.

#RestApiGa #SHGA
❤‍🔥8👍1
1. Какой из перечисленных компонентов является обязательным в структуре URL для REST API?
Anonymous Poll
52%
A) Протокол
28%
B) Параметры запроса
1%
C) Фрагмент
19%
D) Только Path-параметры запроса
2🔥2
2. Какой код статуса HTTP используется для указания того, что операция прошла успешно, и в результате был создан новый ресурс?
Anonymous Poll
41%
A) 200
58%
B) 201
1%
C) 302
0%
D) 404
🔥31👍1
4. Какой статус код следует возвращать, если клиентское приложение запрашивает несуществующую страницу пагинации?
Anonymous Poll
3%
A) 200 с пустым телом ответа
13%
B) 204 No Content
72%
C) 404 Not Found
11%
D) 416 Requested Range Not Satisfiable
🔥21
5. Какой метод и эндпоинт REST API лучше всего подходят для регистрации нового умного устройства администратором системы?
Anonymous Poll
51%
A) POST /devices/register
31%
B) POST /device
14%
C) PUT /admin/device
4%
B) PUT /devices
9🔥5👏4
Мои родители почти всю жизнь работают на одной и той же работе. В одних и тех же компаниях. Больше 20 лет. Каждый будний день из дома на работу и обратно. Живут в одном городе всю жизнь. Им так комфортно, удобно, им не хочется выходить за рамки привычного. Я их понимаю и принимаю. И ситуация моих родителей не уникальна.

Есть мнение, что: “Дети копируют поведение своих родителей”. И я с ним отчасти согласна. Но всё же жизненный путь и развитие - это личный выбор.

Я начала свою карьерную деятельность в HR, когда мне было всего 16 лет. С 17 лет преподавала математику и информатику - посвятила больше 5 лет жизни этому первому мини-бизнесу, параллельно обучаясь в университете.

Пока получала высшее образование по направлению системного анализа, с первого же курса пыталась найти хоть что-то в IT, где я могу быть полезна, получить хоть какой-то опыт. Но из-за нагрузки с учебой и репетиторством удавалось делать только супер-мелкий фриланс. Но это было то самое “что-то”, что двигало меня к юношеской мечте стать программистом. Я с 10 класса интуитивно тянулась к самой развивающейся и передовой сфере, т.к. чувствовала, что здесь есть чего достигать.

В итоге, когда мини-бизнес с репетиторством стал стабилен, приносил высокий для того времени доход для part time, и даже начал успешно расти, я осознала, что у этого пути развития есть потолок. Начала думать как внедрить себя в большой IT. И действительно случайно попала на ярмарку вакансий в университете, после которой меня взяли в найм на позицию стажера системного аналитика. Тогда начался период жизни, где было две работы и университет на очном.

И именно тот период стал поворотным в моей жизни. Спустя пару месяцев работы я уже не взяла новых учеников на новый учебный год, а только обещала довести до экзаменов текущих. В течение года смогла научиться быстро копить на путешествия и отпуска. Узнала про возможность удаленной работы по чуть-чуть. Посетила Италию, США, Австрию и следом много других стран. Перешла из бакалавриата в магистратуру и забрала два своих красных диплома, которые оказались супер-нужны спустя почти 10 лет. Улетела учиться в США. Жила в разных точках планеты.

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

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

Продолжение 👇
39🔥12👍3🥱1
А сегодня я опять сижу, пересматриваю фото, смотрю за окно и думаю: а круто я навыбирала и наменяла. Во всем по жизни. Даже не верится.

Мы иные, чем наши родители. Каждое новое поколение всё легче и легче принимает возможность выбора и роста, постоянные перемены. И это хорошо.


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

Восхищаюсь каждым, кто находит свой потолок в любой сфере жизни и прикладывает усилия, чтобы сделать её лучше - карьера, переезды, отношения, здоровье. Жизнь одна. И каждый из нас решает сам как круто её прожить.

На этой ноте завершаем неделю. Желаю всем крутых выходных ♥️
75🔥11👍6❤‍🔥2
Интересно наблюдать за ответами на опубликованные вчера вопросы квиза.

Вопросы 4 и 5 отдельное удовольствие 😁

Я создала этот квиз, не для того, чтобы проверить ваши знания, а для того, чтобы пополнить вашу копилку знаний и опыт работы с REST-ом. Мне хочется, чтобы отвечая, вы погружали себя в ситуации реальных проектов и обоснованно принимали решения.

Это ваше обучение. Это реальные ситуации, где вы с командой коллег-аналитиков пытаетесь определить "правильное" для REST API решение. А как мы знаем, понятия "правильно" в REST API нет 😬 Мы просто руководствуемся лучшими стандартами IT-отрасли в процессе проектирования.

Поэтому приглашаю вас продолжить изучение "подводных камней" REST API на следующих 5 практико-ориентированных вопросах 😌

#RestApiGa #SHGA
9👍3
6. Какой метод и эндпоинт используются для получения списка всех зарегистрированных устройств в системе умного дома?
Anonymous Poll
35%
A) GET /devices/all
3%
B) POST /devices/list
61%
C) GET /devices
1%
D) PUT /devices/list
🔥3👍2
7. Какой метод и эндпоинт подходят для массового удаления умных устройств из системы?
Anonymous Poll
87%
A) DELETE /devices
8%
B) POST /devices/delete
4%
C) PUT /devices/remove
1%
D) GET /devices/delete
👍3🔥3