Записки системного аналитика
1.33K subscribers
71 photos
1 video
50 links
Все о системном анализе и IT архитектуре от SA из @ Sber
👨🏼‍💻 Обучение https://teletype.in/@oldschoolsysdes/mentoring
🤝 По всем вопросам - @oldschoolsysdes
Download Telegram
#Хабр

Друзья!
Мне было довольно неожиданно и приятно обнаружить с утра, что нас уже целых 100 человек в сообществе! 🚀

Вот так действует магия Хабра, с которого многие из вас пришли сюда, после моей публикации первой статьи из серии, посвящённой гайду по профессии системного аналитика.
А ещё это значит, что тема актуальна и интересна для сообщества!

Хочу сказать каждому спасибо за доверие ❤️

В ближайшее время на Хабре выйдет продолжение цикла статей с актуализированными материалами.
На каждую из них я буду дублировать здесь ссылку.

А пока вы можете ознакомиться с материалами гайда в канале по хештегу #guide.

Если у вас появляются какие-либо вопросы - смело задавайте их в комментариях к постам, я обязательно отвечу.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Хабр

Друзья!
Сегодня вышла новая часть статьи на Хабре!

Из статьи вы узнаете о типах требований, рассмотрите пример их оформления, узнаете какие существуют методы сбора требований, как проводить интервью и анкетирование, рассмотрите основные типы диаграмм (Use Case, Sequence, State, Class, ER-diagram, BPMN) и инструменты, используемые при документировании требований.

Если статья будет интересной и полезной для вас, можете проголосовать за нее на Хабре - так она выйдет в топ новостной ленты и ее смогут увидеть больше пользователей 🔝

Желаю приятного чтения!
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья!
Нас уже 200 человек в сообществе! 🚀

Завтра я планирую выпустить новую статью на Хабре, в которой расскажу об монолитной и распределенной архитектурах (SOA, MSA, EDA), расскажу, как рассчитать нагрузку и стоимость, как масштабировать микросервисы и БД в высоконагруженных системах.

😕 Но есть нюанс. Какие-то снобы ставят мне минусы в карму на Хабре, видимо за то, что я посмел поделиться своими знаниями с аудиторией.

❗️Поэтому, если мой контент вам помог, или просто нравится, и у вас есть профиль на Хабре, я хочу попросить поставить мне «плюсик» в карму на Хабре. Для этого необходимо перейти в мой профиль и нажать «стрелочку вверх», которая будет изображена рядом с показателем кармы (не путать с рейтингом).

https://habr.com/ru/users/nick_oldman/

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

Даже если завтра в течение дня показатель кармы не выйдет в плюс, то я все равно выпущу эту статью в Recovery Mode и выложу сюда ссылку на неё.

Благодарю за понимание ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
#Хабр

Друзья!
Как я вчера и обещал, на Хабре вышла новая часть статьи об архитектуре приложений!

В ней вы познакомитесь с основными типами архитектуры, узнаете как оценить нагрузку и рассчитать стоимость, как масштабировать микросервисы и БД в высоконагруженных системах, познакомитесь с понятием CAP-теоремы и уровнями изоляции транзакций в БД.

Если статья будет интересной и полезной для вас, можете проголосовать за нее на Хабре - так она выйдет в топ новостной ленты и ее смогут увидеть больше пользователей 🔝

Желаю приятного чтения!
Please open Telegram to view this post
VIEW IN TELEGRAM
#Хабр

Друзья!
Сегодня вышли две новые статьи на Хабре! 🚀

Статья о синхронных и асинхронных интеграциях: REST, gRPC, Kafka, RabbitMQ, WebSocket.
Статья о методологиях разработки: Waterfall и Agile (Scrum, Kanban).

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

Задавать интересующие вас вопросы вы можете в комментариях, или мне в лс @oldschoolsysdes

Желаю приятного чтения!
Please open Telegram to view this post
VIEW IN TELEGRAM
#Хабр

Друзья, привет!
Выложил на Хабре новую статью о best practices проектирования REST API 👨‍💻

В статье рассмотрено, как реализовать получение данных с пагинацией с помощью GET и POST методов, приложен шаблон описания методов, а также форматов данных на примере JSON-схемы и спецификации OpenAPI в YAML-формате.

По ссылкам в статье вы можете перейти в песочницу swagger, скопировать туда этот YAML и самостоятельно поисследовать реализацию.

Приятного чтения!
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, привет!
Последний месяц у меня выдался несколько напряженным, поэтому совсем не было времени вести канал 🥲

Тем не менее, я вижу, что вас становится все больше, и это очень мотивирует продолжать ❤️

А пока я предлагаю вам ознакомиться с интересными IT-роадмапами на сайте https://roadmap.sh

Они больше ориентированы на подходы к разделению зон ответственности в западной IT-индустрии (США, Европа), но тем не менее будут очень полезны для расширения кругозора и закрытия пробелов в знаниях 👨‍💻

Наиболее релевантные скиллам системного аналитика роадмапы:

Software Architect
API Design Roadmap
System Design Roadmap
Please open Telegram to view this post
VIEW IN TELEGRAM
💜🔹🌺👆🕊🔽💮👆🌿🕊

Ознакомиться с содержанием и стоимостью вы можете здесь.

Что ждет вас на обучении?

7 онлайн-занятий с изучением теории и отработкой практики. Никаких записанных видео и кучи ссылок. Только живое общение со мной 👨‍💻

• Акцент на техническую составляющую самых распространенных типов интеграций (REST, gRPC, Kafka, RabbitMQ) и архитектуру систем 👨‍💻

Резюме Middle аналитика с ориентиром на 200+ 💰

Консультации во время испытательного срока 🆘

Для записи прошу писать мне в личные сообщения - @oldschoolsysdes.
Постараюсь быстро каждому ответить на все вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, привет!

Вас становится все больше, и я рад, что имею возможность создавать и нести ценность для окружающих🔥
Меня давно здесь не было, поэтому решил кратко поделиться основными новостями и событиями:

1⃣ Ранее я планировал канал, как сугубо технический, для желающих стать СА или узнать что-то новое, но в этом году хочу создать тут вовлеченное сообщество, поэтому попробую писать что-то более неформальное из жизни и работы.
Надеюсь из этой затеи выйдет что-нибудь путное и мне хватит времени поддерживать здесь активность 👨‍💻

2⃣ В конце года в семье случилось пополнение 🐕
Теперь у меня живет той-пудель Юна.
Могу сказать, что собака - одновременно и большая радость и ощутимые хлопоты. При желании можете поделиться фото питомцев в комментариях 🙂

3⃣ Все слоты на менторство заняты до конца января.
Сегодня открываю запись на февраль-март, при этом до 31 января стоимость останется прежней, затем увеличится. Записаться по-прежнему можно в лс @oldschoolsysdes

4⃣ Сегодня вышла моя новая статья на Хабре: «Как аналитику научиться читать код без навыков программирования».
Не скажу, что удалось полностью охватить все нюансы, но постарался на примере фреймворка Flask для Python подробно показать, как могут выглядеть простые приложения, и как можно читать их код.

Делитесь в комментариях, приходилось ли вам сталкиваться с такой необходимостью в работе 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Приходилось ли вам самостоятельно разбираться в коде коллег? 👨‍💻
Final Results
44%
Я СА/БА, приходилось
21%
Я СА/БА, не приходилось
35%
Посмотреть результаты 👀
Записки системного аналитика
Приходилось ли вам самостоятельно разбираться в коде коллег? 👨‍💻
🤷‍♂️ Зачем аналитику необходимо уметь читать код?

По результатам опроса в канале и под статьей на Хабре образовалась интересная статистика, которая превзошла мои ожидания.

🟨 В обоих случаях целые 44% опрошенных (почти половина) проголосовали за вариант «мне приходилось погружаться в код и читать его».

А если учесть, что и в канале и на Хабре треть опрошенных (35% и 40% соответственно) проголосовала за вариант «посмотреть результаты», то получим около 70% аналитиков, сталкивавшихся с необходимостью погружаться в код своих коллег и это колоссальные цифры! 🤯

О чем же они говорят?


😳 1. Плохая документация
На это могло повлиять множество факторов. Как основные: или отсутствие аналитиков, или сложный запутанный домен, или команда работала в режиме «стартап», когда главное было пилить как можно быстрее новый функционал для бизнеса. Или все вместе взятое 👨‍💻

☹️2. Плохие процессы
Возможно, что в команде не были должным образом выстроены процессы проектирования, разработки и тестирования:
отсутствовали соглашения по проектированию и описанию требований, отсутствовала культура тестирования (напомню, что хорошо описанные требования на разработку являются основой для формирования тест-кейсов, и хорошие QA будут требовать документацию от аналитиков).

Что делать?


😱 Отсутствие документации — это большая возможность для прокачки скиллов: как хардов, так и софтов.
В целом в таких ситуациях я использую следующий порядок действий:

1⃣ Получить доступ к тестовому стенду и попробовать понять, какой функционал есть в системе.

2⃣ Определить круг стейкхолдеров продукта и подготовить вопросы для интервью о его функциональности.

3⃣ Изучить таск‑трекер (условная Jira) на предмет следов разработки (можно узнать о том какие сервисы и фичи были сделаны ранее)

4⃣ Пройтись по всем разработчикам и узнать, какие сервисы они разрабатывают/разрабатывали на проекте и вообще что они о нем знают.

5⃣ Изучить систему контроля версий (например GitLab или BitBucket) — позволит найти сервисы и их код.

5⃣🧡 Изучить конфигурацию сервисов. В ней могут быть скрыты URL-адреса интеграций и иных взаимодействий (БД, брокеры итд).

5⃣🌿 Изучить API, если есть описание. Если нет, то придется погружаться в чтение кода.
На всем этом этапе очень полезным станет отрисовка схемы микросервисов и определение структуры моделей данных в БД.
На схему микросервисов будет необходимо нанести сервисы, стрелочками изобразить взаимодействие между ними, и желательно написать имя используемого метода и его URL.
БД можно описывать в табличном виде или в виде ER-диаграмм.

5⃣🌿 Во время чтения кода вы можете использовать информацию из предыдущих пунктов, чтобы восстановить и задокументировать бизнес-процессы так, как они реализованы на самом деле.
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻 Спешу сообщить, что один из самых популярных видов спорта этой зимой - спортивное вкатывание в айти

16 февраля стартует последний в уходящей зиме трек моего менторства для системных аналитиков.
🤓 Подробная информация про обучение - по ссылке.

🛞Осталось 3 свободных места.
Записаться - ко мне в личку @oldschoolsysdes
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻 Небольшая подборка полезных материалов для недавно присоединившихся к сообществу

1⃣ Самостоятельное обучение
🔘Системный аналитик. Часть 1.
🔘Системный аналитик. Часть 2.
🔘Системный аналитик. Часть 3.
🔘Системный аналитик. Часть 4.
🔘Системный аналитик. Часть 5.

2⃣ Архитектура
🔘Как устроены современные приложения
🔘Микросервисы
🔘Масштабирование систем
🔘CQRS+Event Sourcing
🔘Saga

3⃣ Интеграции
🔘REST
🔘gRPC
🔘Kafka
🔘RabbitMQ
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, привет!
Сегодня немного теории 🤓

Если вам в работе придётся сталкиваться с необходимостью гарантировано доставлять сообщения до какого-либо сервиса, то вам необходимо будет реализовать архитектурный паттерн Transactional Outbox (или просто Outbox), гарантирующий модель доставки at least once (хотя бы один раз).

Как работает паттерн?
Предположим, что есть два микросервиса: Сервис А и Сервис В.
Задача состоит в том, чтобы после получения сообщения в Сервис А, гарантировано передать данные из него в Сервис В.

Без использования какого-либо механизма обеспечения надежности этот процесс мог бы выглядеть следующим образом:
1. Сервис А обрабатывает запрос клиента.
2. После успешной обработки сообщения Сервис А отправляет сообщение в Сервис В через брокер (например, Kafka).

Но тут возникает проблема: если при передаче сообщения произойдет сбой (сеть упадет, очередь окажется перегруженной), мы можем потерять данные.
Сообщение будет обработано сервисом А, но до сервиса В не дойдет.

Чтобы избежать этой проблемы, используется паттерн Transactional Outbox.

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

Примерный порядок действий выглядит так:

1⃣ Сервис А получает запрос.

2⃣ Затем внутри транзакции:
🔘Сохраняется информация о запросе
🔘Создается запись в таблице Outbox с информацией о сообщении, которое должно быть доставлено
🔘Транзакция фиксируется

3⃣ Асинхронная задача (например шедулер в сервисе А) берет записи из таблицы Outbox и пытается отправить их в сервис В:
🔘Если доставка прошла успешно, то в БД данной записи проставляется атрибут (например status), свидетельствующий об ее успешной отправке в сервис В, или запись удаляется из таблицы Outbox
🔘Если происходит ошибка при доставке, асинхронная задача продолжает попытки до тех пор, пока доставка не завершится удачно

4⃣ Сервис В читает сообщения из брокера.

Таким образом, таблица Outbox действует как временный буфер для хранения сообщений, гарантирующий, что данные будут переданы независимо от внешних факторов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, привет!
Сегодня пост посвящен самой хайповой теме - AI 😅

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

На своем курсе я показываю обучающимся, как можно использовать LLM для:
🔘формирования Use Case’ов
🔘построения по ним Sequence-диаграмм в PlantUML
🔘формирования ER-диаграмм при проектировании БД
🔘проектирования спецификаций REST API в формате OpenAPI, проектирования protobuf-файлов для gRPC, описания json-схем.

По итогу человеку остается лишь провалидировать ответ LLM и, при необходимости, внести минорные правки.

А вчера мои коллеги поделились ссылкой на вот такой продукт калифорнийского стартапа https://www.cursor.com

Это форк среды разработки VSCode, к которому прикручен AI-copilot, умеющий бесплатно из коробки формировать структуру репозитория прямо в IDE, устанавливать зависимости, писать код, дебажить, запускать скрипты и сам проект на твоей машине 🤯

Под капотом бесплатный gpt-4o-mini и даже он творит нечто нереальное - можно собрать MVP проекта на любом языке меньше чем за час в пару десятков кликов, что, собственно, мои коллеги и сделали 🤑

Интересно было бы узнать ваше мнение и опыт использования AI в повседневной работе в комментариях 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
🕊🌿👆🌸🔹🌺💎🔹

👨‍💻 Открыта запись на новый поток обучения системных аналитиков с нуля до Middle+ на ближайшие 1,5 месяца.
Старт занятий - 22 марта.

Ознакомиться с содержанием и стоимостью вы можете здесь.

Что ждет вас на обучении?

8 онлайн-занятий с изучением теории и отработкой практики. Никаких записанных видео и кучи ссылок. Только живое общение со мной 👨‍💻

• Акцент на техническую составляющую самых распространенных типов интеграций (REST, gRPC, Kafka, RabbitMQ) и архитектуру систем 👨‍💻

Резюме Middle аналитика с ориентиром на 200+ 💰

Записаться - ко мне в личные сообщения @oldschoolsysdes

⚠️UPD: старт переносится на неделю вперёд, на 22 марта, так как я заболел гриппом :(
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Всем, привет!
У меня две новости:

1⃣ Я выздоровел, а это значит, что у меня хорошее настроение, поэтому объявляется минута юмора 🤣
Лучше смотреть со звуком.

2⃣ Осталось 1 свободное место для записи на обучение до оффера, стартуем в субботу 22 марта. Записаться - ко мне в личные сообщения

Всем хорошего дня!
Please open Telegram to view this post
VIEW IN TELEGRAM
AI-хайп. Что такое AI-агенты и как работает RAG?

RAG (Retrieval Augmented Generation) — это метод работы с большими языковыми моделями, когда пользователь пишет свой вопросы, а вы программно к этому вопросу «подмешиваете» дополнительную информацию из каких‑то внешних источников и подаете все целиком на вход языковой модели. Другими словами вы добавляете в контекст запроса к языковой модели дополнительную информацию, на основе которой языковая модель может дать пользователю более полный и точный ответ.
О том, что же такое RAG более подробно можно почитать тут.

Как работает RAG.
Рассмотрим схему на рисунке.
1⃣ Предположим у нас есть UI (интерфейс). Сначала мы загрузим документы в нашу базу знаний (в любом формате: pdf, doc, да хоть в json) через сервис DocumentLoader.

2⃣ Сервис DocumentLoader перед тем, как поместить документы в хранилище, преобразует их в векторный вид с помощью Embedding Model - например из английского слова «cat» вы получите нечто похожее на [0.2, -0.4, 0.7]

3⃣ Получив в ответе от Embedding Model векторное представление документа сервис DocumentLoader сохраняет его в векторную БД Vector Database.

4⃣ После того, как мы загрузили в БД документы нашей базы знаний в векторном формате, мы можем начать работу с RAG и LLM.
Вопрос пользователя попадает в сервис Mediator, который направляет запрос в сервис RAG для поиска релевантной вопросу информации в хранилище.

5⃣ Сервис RAG преобразует вопрос пользователя в векторный вид с помощью Embedding Model и ищет совпадения в векторном хранилище, которые возвращает в качестве ответа.

6⃣ Сервис Mediator использует полученную в ответе от сервиса RAG информацию для обогащения контекста запроса в LLM.

7⃣ Ответ от LLM, при формировании которого был учтен контекст из базы знаний, возвращается пользователю на UI.

Как работают AI-агенты
Сервис Mediator в связке с LLM также может реализовывать функции AI-агента.

Если в процессе обработки запроса пользователя необходимо выполнить какие то действия, в том числе, основываясь на результатах обработки языковой моделью (LLM) вашего запроса, то здесь на помощь вам могут прийти AI-агенты.
Один из самых популярных подходов к реализации агентов называется ReAct - парадигма, объединяющая рассуждение и выполнение действий. Более подробно об устрйостве можно почитать по ссылке.

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

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

Mediator сходит в векторное хранилище за релевантной информацией, затем вызовет LLM, которая, обработав запрос, может принять решение, что ей недостаточно данных для того, чтобы фактологически точно дать ответ на вопрос и вызовет ту часть (Tools - см. статью по ссылке выше) сервиса Mediator, которая имеет подключение к внешним API (например API поиска Google), для того, чтобы она нашла в интернете релевантную информацию с новостями о нефтедобыче, дообогатила ей контекст запроса и снова вызвала LLM, а затем вернула ответ пользователю.

P.S. Не претендую на фактологическую точность материала, рассказываю то, как я это понимаю сам и с чем сталкивался в работе. Если среди подписчиков есть специалисты в ds/ml/ai, буду рад комментариям/исправлениям/дополнениям 🐈
Please open Telegram to view this post
VIEW IN TELEGRAM
Развеиваем сомнения начинающих аналитиков и не только 👨‍💻

1⃣ У меня нет технической «вышки», какой из меня технарь, если я даже ни разу не писал код.

В обязанности СА не входит разработка, следовательно вам не стоит опасаться того, что вас заставят это делать.
Если вы умеете читать/писать код, то это просто добавит вам авторитета в глаза команды, а также, возможно, некоторую сумму к офферу 🤑

Техническая вышка также совершенно не нужна. Знание того, как устроен процессор или того, как работает сетевой стек на физическом уровне, вам не пригодится в роли СА в 99,99 % случаев.
Безусловно, техническое образование добавляет тот же процент «респекта» со стороны команды и снижает порог вхождения и освоения в профессии, но не является камнем преткновения (ну разве что если вы собеседуетесь на вакансии в гос.учреждения).

2⃣ Я прошел обучение и все еще сомневаюсь в своих навыках. Боюсь выходить на рынок и собеседоваться.

Это нормальная ситуация, которая может сложиться по разным причинам (было мало практики на обучении, ментор не делился обратной связью, не давал ответы на вопросы о том, как это устроено и применяется в реальной работе, итд)

Вместе с тем, если вы знаете:
• как работает протокол HTTP, что такое JSON и можете описать его с помощью json-схемы;
• как устроены базы данных и можете спроектировать структуру таблиц и описать их в ER-диаграммах;
• знакомы с нотациями UML и BPMN и можете описывать процессы с их помощью;
• как устроена архитектура распределенных систем (микросервисы и как они могут взаимодействовать друг с другом);
• можете спроектировать REST API и задокументировать его в формате OpenAPI
• имеете общее понимание того, как работают брокеры (Kafka, RabbitMQ) и можете спроектировать обмен сообщениями с их помощью;

то поздравляю, вы можете смело выходить на рынок на middle позицию, поверьте, вы знаете больше доброй половины аналитиков данного грейда, и трети сеньеров.

Но в целом senior позиция это не только про сильные софт/хард-скилы, а еще и про насмотренность, способность быть центром компетенций и притяжения людей, наряду с готовностью брать ответственность за результат работы на себя.

3⃣ Боюсь провалов на собеседованиях и попасть в чёрный список.

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

Как только вы выходите на рынок, то первые 3-5 собеседований с вероятностью 90% будут провальными, к этому надо быть готовым.
Затем вы понимаете, чего от вас ждут и что хотят услышать, и начинаете выстраивать и адаптировать свою линию диалога под ожидания собеседующих.
Прохождение собеседований это отдельный навык, который тренируется периодическими повторениями.

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

Верьте в себя, не опускайте руки, идите к своей цели и у вас обязательно все получится вне зависимости от пола/возраста/локации, потому что формула результата по прежнему очень проста - это время, помноженное на усилия 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🕊🌿👆🌸🔹🌺💎🔹

👨‍💻 Открыта запись на новый поток обучения системных аналитиков с нуля до Middle+ на ближайшие 1,5 месяца.
Старт занятий - 24 мая.

Ознакомиться с содержанием и стоимостью вы можете здесь.

Что ждет вас на обучении?

7 онлайн-занятий с изучением теории и отработкой практики. Никаких записанных видео и кучи ссылок. Только живое общение со мной 👨‍💻

• Акцент на техническую составляющую самых распространенных типов интеграций (REST, gRPC, Kafka, RabbitMQ) и архитектуру систем 👨‍💻

Резюме Middle аналитика с ориентиром на 200+ 💰

Записаться - ко мне в личные сообщения @oldschoolsysdes
Please open Telegram to view this post
VIEW IN TELEGRAM