Соло, научи меня | Системный анализ


Гео и язык канала: Россия, Русский
Категория: Образование


ВЛАДИМИР СОЛОВЬЕВ
Архитектор решений (Solution Architect)
Ментор и наставник
▪︎ Провожу собеседования на СА
▪︎ Обучаю СА и консультирую
▪︎ Являюсь соавтором огненного курса @newsa20
По рекламе и другим вопросам: @iamelen_solo
По обучению: @VSolovev43

Связанные каналы

Гео и язык канала
Россия, Русский
Категория
Образование
Статистика
Фильтр публикаций


Игру попробовали?💅
Опрос
  •   Да, крутая
  •   Нет, некогда было
  •   Какую игру?
  •   Свой вариант в комменты
5 голосов


Сегодня День Учителя!👩‍🎓

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

Моя вторая профессия - учитель и ментор. И она неразрывно связана с системным анализом. Когда я объясняю сложное простыми словами или пишу курс, я делаю то же, что хороший аналитик: структурирую, нахожу ясные формулировки, строю мосты между знанием и учеником, между бизнесом и IT.

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

С праздником всех, кто учит и учится! ❤️❤️

P.S. Ваш преподаватель и ментор по системному анализу, Владимир. Ставлю отлично в журнал канала.

P.P.S. В честь праздника проведу 2 бесплатные консультации. Пиши комментарий - назначим встречу.

#деньучителя


🔤🔤🔤🔤
Сотворил еще одну игру! Детектив для аналитиков, и выиграть в ней, найдя виноватого, не получится.

Со склада по ночам исчезают термокружки, двести штук. Отгрузок нет, кладовщик Марат уже пишет объяснительную. Обвинить Марата можно, игра даже даст такую кнопку. Только ясность упадёт, на экране встанет красная печать ТУПИК, а кружки продолжат пропадать.

🤪Цифровой страж - четыре дела, в которых разбираешься так, как аналитик разбирает настоящий инцидент. Поднимаешь логи и ТЗ, допрашиваешь свидетелей, читаешь диаграмму состояний и BPMN, проходишь 5 почему и пишешь заключение. Улики поодиночке ничего не доказывают, работают только в связке.

В сезоне склад, страховая, которая склеила двух разных людей в одного клиента, расчётный центр, где платежи жителей уходят в никуда, и финальное дело, которое связывает все три.

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

#игра #системныйаналитик #системныйанализ #тренажер


Ванечка, ПиццаЕдинорог и магия сущностей: или о чём на самом деле говорят аналитики

Привет!

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

🔸🔸🔸🔸🔸🔸🔸🔸

Звучит мистически, правда?🦇

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

Давайте спросим у нашего повара ПиццаЕдинорога, что такое сущность, когда он получает новый заказ от Ванечки.

Ванечка звонит и говорит: Привет! Это Ванечка. Хочу заказать пиццу "Маргарита-Космос" на тонком тесте с доставкой. Записывайте мой адрес

ПиццаЕдинорог берёт блокнот (или открывает свою систему учета заказов) и начинает фиксировать. О ком и о чём здесь идёт речь?

Он видит в этом разговоре три главные вещи, которые нужно сохранить в систему:
🔸Ванечка (тот, кто звонит).
🔸Пицца "Маргарита-Космос" (то, что хотят получить).
🔸Заказ (сам факт того, что Ванечка захотел пиццу и договорился о доставке).

Вот эти три вещи - и есть СУЩНОСТИ.

Сущность в системном анализе (и в программировании) - это просто объект, о котором мы храним информацию.

Это "кирпичик" нашего цифрового мира. У каждой сущности есть имя (Ванечка) и набор характеристик (возраст, адрес, любимая пицца).

Описываем сущность: Атрибуты

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

Он спрашивает:
- Ванечка, а фамилия ваша как? Телефончик какой? Адрес точный?
- А пицца вам какая нужна? Размер? Тесто?


Всё, что он записывает - фамилию, телефон, адрес, размер пиццы, тип теста - это АТРИБУТЫ (свойства) сущностей.

Сущность Клиент:
    Атрибут "Имя" = Ванечка
    Атрибут "Телефон" = +7...
    Атрибут "Адрес" = ул. Пиццерийная, д. 1

Сущность Пицца (в меню):
    Атрибут "Название" = Маргарита-Космос
    Атрибут "Состав" = голубой сыр, соус, тесто
    Атрибут "Цена" = 790 руб.

Сущность Заказ:
    Атрибут "Номер" = 42
    Атрибут "Время" = 18:30
    Атрибут "Статус" = Готовится
Зачем это нужно? Чтобы не варить всё в одном котле🎁

Если бы ПиццаЕдинорог не выделял сущности, у него была бы одна огромная каша в блокноте:

Ванечка с телефоном 123 заказал Маргариту-Космос за 790 рублей с голубым сыром и тонким тестом на дом по адресу..., и пусть это будет заказ №42, который пока готовится, а еще у Ванечки день рождения 1 апреля...

Бр-р-р. В этом тексте невозможно искать информацию, а если Ванечка позвонит завтра и закажет другую пиццу? Придётся всё переписывать заново.

Благодаря сущностям, ПиццаЕдинорог раскладывает всё по полочкам:

⚪️В папке "Клиенты" он один раз создал карточку Ванечки.
⚪️В папке "Меню" у него лежат описания пицц.
⚪️В папке "Заказы" он просто пишет: "Заказ №42: Кто - Ванечка (ссылка на папку клиентов), Что - Пицца Маргарита-Космос (ссылка на папку меню)"

Это и есть база данных! ⚙️

Как это выглядит в коде и таблицах.

Когда системный аналитик или программист говорит "сущность", в 99% случаев он представляет себе либо таблицу в базе данных, либо класс в коде.

Таблица "Клиенты" (сущность) - в ней строки: Ванечка, Петя, Маша. Столбцы (атрибуты): Имя, Телефон, Адрес.
Таблица "Пиццы" (сущность) - в ней строки: Маргарита-Космос, Пепперони, Четыре сыра. Столбцы: Состав, Цена, Размер.

А волшебство начинается, когда сущности связываются друг с другом. Ванечка (сущность "Клиент") как бы говорит: "Хочу вон ту (сущность "Пицца")". Рождается третья сущность - "Заказ", которая связывает первые две.

     🔸🔸🔸🔸

Сущность - это не магия и не дух компьютера. Это просто:

Именованный контейнер для хранения информации о реальном или цифровом объекте

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

#Обучение #СистемныйАнализ


🔸🔸🔸🔸🔸🔸🔸🔸 с моего собеса, за которые мне стыдно

Недавно сходил на очередной техсобес на системного аналитика🙂

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

Уложились в 33 минуты из заложенного часа, и под конец он сказал, что таких подготовленных кандидатов ещё не встречал.

Приятно, конечно. Потом я разбирал запись и насчитал семь ответов, за которые до сих пор неловко😐

🔸Что такое SLA
Я сказал, что это срок, который ставим на задачу. На деле SLA - соглашение об уровне сервиса: доступность 99,9%, время реакции на инцидент, окна для техработ. Самое смешное, что про 99,9% я сам рассказывал минутой раньше, когда говорил про нефункциональные требования.

🔸 Почему POST безопаснее GET
Мой ответ: данные из query можно перехватить. Без HTTPS перехватят и тело запроса. Беда query в том, что параметры оседают в логах серверов, истории браузера и кэше, поэтому токены и персональные данные в URL не кладут.

🔸Зачем нужен HAVING
Я ответил, что для цифровых (хотел сказать числовых🤣) значений. Правильно так: WHERE фильтрует строки до группировки, HAVING фильтрует готовые группы после GROUP BY. Например, клиенты, у которых больше пяти заказов.

🔸Оконные функции
Честно признался, что не писал. Идею знаю в общих чертах, но на собесе, конечно, не вспомнил: ROW_NUMBER, RANK, SUM() OVER считают по группе строк, и сами строки при этом остаются на месте. Типовая задача - найти последний заказ каждого клиента.

🔸 NoSQL и SQL
У меня прозвучало, что NoSQL тоже работает с SQL. В общем виде это неверно, у MongoDB свой язык запросов, у Redis свои команды. Где-то есть SQL-подобные диалекты, и на собесе лучше так и сказать.

🔸ACID и третья нормальная форма
Суть я передал, но путано и без названий. Интервьюеру проще поставить плюс, когда он слышит четыре слова: атомарность, согласованность, изолированность, долговечность. Для 3НФ хватит одной фразы: неключевые поля зависят только от ключа, без транзитивных зависимостей.

🔸 Все методы идемпотентны, кроме POST
PATCH идемпотентность тоже не гарантирует. Запрос прибавить к балансу 100 рублей, отправленный дважды, даст двойную сумму.

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

На каком из семи вы бы тоже споткнулись? Пишите номер в комментариях⬇️

Потренировать разговор с заказчиком можно в боте Интервью с заказчиком

💛 MAX


📖 Ванечка обещает невозможное

Ванечка защищал требования к системе учёта ПиццаЕдинорога и решил произвести впечатление.

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

Инвестор просиял. ПиццаЕдинорог поднял голову от теста и медленно произнёс: повтори последнее предложение.

Ванечка повторил, с выражением🤩

😐- Ты только что пообещал то, что математически невозможно.

Ванечка обиделся, он ведь просто перечислил хорошие вещи.

Единорог вытер руки..

- Ванечка, у нас две точки, склад один, учётная система общая. И вдруг связь между точками пропала. Что делаешь?
- Ну... продолжаю продавать?
- Хорошо. Обе точки торгуют. Точка на Ленина продала последнюю банку трюфельного соуса, точка на Мира об этом не знает и продала её же. Оба клиента довольны ровно до момента выдачи. Ты выбрал доступность и потерял согласованность.
- Тогда ставлю стоп-лист, пока связь не починят!
- Тоже вариант. Никто не купит то, чего нет, зато касса стоит и люди уходят. Ты выбрал согласованность и потерял доступность.
- А третий вариант?
- Третьего нет, это и есть теорема CAP. У распределённой системы, где данные лежат на нескольких серверах, три желаемых свойства.

💛💛💛💛💛
Consistency, согласованность: любой узел на один и тот же запрос отдаёт одинаковый ответ.
Availability, доступность: система отвечает, даже если часть узлов вышла из строя.
Partition tolerance, устойчивость к разделению: система работает, когда связь между узлами оборвалась.
💛💛💛💛💛
- Гарантировать можно только два свойства из трёх. CA, AP, CP пожалуйста, CAP нет.
- А почему нельзя просто выбрать CA? Согласованность и доступность это самое вкусное.
- Потому что CA означает, что разрывов сети не бывает, а в распределённой системе они будут обязательно: кабель, маршрутизатор, ЦОД. Поэтому P у тебя есть всегда, хочешь ты того или нет, и реальный выбор стоит между CP и AP.
- И как выбирать?
- По цене ошибки. Деньги, платежи, остатки на складе только CP: пусть операция подождёт, чем дважды продадим один соус. Лайки, просмотры, лента это AP: если у двух пользователей число лайков разошлось на пару секунд, никто не пострадал.


Ванечка вернулся и переписал строчку: "при разрыве связи между точками приоритет отдаётся согласованности, списание остатков блокируется до восстановления."
💛💛💛💛💛

Что важно запомнить:
⚪️CAP работает только для распределённых систем, где данные лежат на нескольких узлах
⚪️C это одинаковые данные на всех узлах, A это ответ при отказе части узлов, P это работа при разрыве связи
⚪️Разрыв сети неизбежен, поэтому P есть всегда, выбор стоит между CP и AP
⚪️Обещание "всегда доступна и всегда согласована" выполнить нельзя
💛💛💛💛💛

     🔸🔸🔸🔸🔸🔸

Три узла A, B, C:
Consistency: данные одинаковы везде, обновили B и репликация разнесла изменение на A и C
Availability: узел B умер, A и C продолжают отвечать, система жива
Partition tolerance: сеть разорвалась, B отрезан от A и C, но продолжает обслуживать запросы

Почему при разрыве нельзя всё сразу, ведь B не отдаёт изменения A и C:
➡️Приоритет доступности: отвечаем дальше, но клиенты B видят одно, клиенты A и C другое, согласованность потеряна
➡️Приоритет согласованности: не принимаем запросы до устранения разрыва, доступность потеряна

Что выбирать:
➡️CP - банки, платежи, биржи, склады, бронирование
➡️AP - соцсети, ленты, счётчики, рекомендации

Отдельный сервер распределённой системы называют нодой (node).

Как это звучит в требованиях:
❌ Данные всегда актуальны и система всегда доступна
✔️ При сетевом разделении приоритет отдаётся согласованности, запись блокируется до восстановления связи

💛А у вас в проекте выбрали CP или AP? Осознанно или как-то само получилось?

#ВанечкаИЕдинорог #СистемныйАнализ #SystemDesign #CAP #Обучение


Первый месяц в IT я молчал на созвонах

Пришёл в IT в 33, после тринадцати лет в МВД, и первые созвоны просто слушал😮

Спринт, бэклог, ретро, тимлид, девопс - слова знакомые по отдельности, а вместе каша. Я не понимал, кто за что отвечает и в какой момент в этой истории появляюсь я😥

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

Главное там даже не порядок, а результат на выходе каждого этапа.

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

🙃Потом стало понятно про людей. Project manager ведёт проект, product manager отвечает за наполнение продукта, тимлид - за отдел разработки, архитектор решает, как разрезать систему на части и как эти части будут между собой разговаривать, дизайнер делает красиво, юзабилист - понятно, девопс разворачивает, тестировщик проверяет.

❕Аналитик стоит в начале маршрута, и он тоже разный: бизнес-аналитик описывает процессы компании, системный - требования к продукту, аналитик данных работает с массивами данных.

Дальше методологии, и здесь я тормозил дольше всего❔

Waterfall - этапы строго по очереди, следующий не стартует, пока не закрыт предыдущий, вернуться назад и что-то поменять уже нельзя. Гибкие подходы выросли из простой мысли: заказчик редко знает, чего хочет, пока не увидит работающий кусок. Scrum режет работу на спринты по две недели с планированием, стендапами, обзором и ретро. Kanban обходится без регламентных встреч, там доска и поток задач.

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

Послезавтра стартует новый поток курса Новый системный аналитик 3.0, мы ведём его вдвоём с Денисом Чемерисом.

Что внутри:

⚪️Введение в СА: жизненный цикл, роли в команде, Waterfall, Agile, Scrum, Jira, Confluence
⚪️Работа с требованиями: функциональные и нефункциональные, user stories, MoSCoW, реестры
⚪️Моделирование: UML, BPMN, as-is и to-be
⚪️Базы данных и SQL: ER-диаграммы, запросы, DBeaver
⚪️Архитектура ПО: монолит, распределённые системы, микросервисы
⚪️Интеграции: REST API, RabbitMQ, Kafka
⚪️Frontend и UI: связка фронта с бэком, описание экранов
⚪️Бонусный модуль: AI для системного аналитика


Тарифы:

🔸Самостоятельный 15 000 ₽ - все видео на 6 месяцев, сертификат
🔸GROUP Практикум 49 900 ₽ - живые эфиры, диплом гособразца по завпросу
🔸Курс с поддержкой 95 000 ₽ - наставничество, помощь с резюме, плюс 2 месяца сопровождения после курса
🔸VIP 120 000 ₽ - разработка спроектированного приложения, личный план развития, поддержка на поиске работы

Поддержка авторов 6 месяцев на всех тарифах, отвечаем мы сами.

До старта 🔸 🔸🔸🔸, группа собирается прямо сейчас. Запись и подробности: new-sa.ru

#практикум


Как я сдал компьютер по гарантии и нашёл там работу для системного аналитика

Купил комп в ДНС, пару месяцев всё работало отлично, а потом в один день он просто перестал включаться😭

Отнёс в сервис, и на приёмке ребята спокойно сказали: знаем, это типичная история, материнки MSI B550 плохо дружат с Ryzen 5, такие сборки к нам несут постоянно.

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

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

Как бы я разложил эту ситуацию:

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

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

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

Поставил задачу в ДИТ. Например так: если в конфигураторе или корзине одновременно есть материнская плата из списка А и процессор из списка Б, система показывает предупреждение о возможной несовместимости и предлагает альтернативные платы. Список связок ведёт сервисный центр, обновляется без участия разработчиков.

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

t.me/dns_shop_ru

#dns #днс #системныйанализ


📖 Ванечка считает на коленке


В один из осенних дней ПиццаЕдинорог гонял Ванечку перед System Design интервью и выдал задачу: спроектируй Телеграм, для начала прикинь нагрузку и объём хранилища.

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

Двести символов на пост. Кодировка... так, а если эмодзи, там же больше байт. А если репост, он хранится целиком или ссылкой? А аватарки считать? А если пользователь удалит пост, мы место освобождаем?

Через двадцать минут Единорог мягко сказал: давай дальше.

Ванечка так и не назвал ни одного числа...

ПиццаЕдинорог отложил планшет с задачей.

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

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

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

- Ресурсы. Десять тысяч запросов в секунду, на каждый процессору нужно десять миллисекунд, десять тысяч на десять это сто тысяч миллисекунд работы в секунду. Одно ядро выдаёт тысячу миллисекунд в секунду, значит нужно сто ядер. По четыре ядра на сервер, получается двадцать пять серверов с балансировщиком.


Ванечка записал три слова: нагрузка, хранилище, ресурсы. И убрал калькулятор.
💛💛💛💛💛

Что важно запомнить:
⚪️ На оценку тратят до 5 минут, дальше идёт сама архитектура
⚪️ Считают приближённо: округляют, отбрасывают мелкое, берут круглые числа
⚪️ Порядок величины важнее точного ответа
⚪️ Три блока: нагрузка (load), хранилище (storage), ресурсы (resource)
💛💛💛💛💛
      🔸🔸🔸🔸🔸🔸

Оценка нагрузки:
⚫️DAU (Daily Active Users) = 100 млн, по 10 твитов в день
⚫️Записей: 100 млн х 10 = 1 млрд в день
⚫️Чтений: 100 млн х 1000 = 100 млрд в день
⚫️Соотношение чтение/запись 100:1, система read-heavy, нужны кэш и реплики на чтение

Оценка хранилища:
🙂Пост: 200 символов х 2 байта = 400 байт, округляем до 500 байт
🙂Текст: 500 байт х 1 млрд, примерно 0,5 ТБ в день
🙂Фото: 10% от 1 млрд это 100 млн х 2 МБ, примерно 200 ТБ в день
Итог около 200 ТБ в день, из которых текст занимает доли процента

В оригинале округляют грубее и получают примерно 1 ПБ в день. Точное число тут не важно, важен вывод: объём определяют медиафайлы, и хранить их надо отдельно от базы.

Оценка ресурсов:
🙂10 000 RPS х 10 мс = 100 000 мс работы в секунду
🙂1 ядро = 1000 мс в секунду, значит 100 000 / 1000 = 100 ядер
🙂4 ядра на сервер, значит 100 / 4 = 25 серверов плюс балансировщик

Ориентиры для счёта:
⚪️1 день это 86 400 с, округляем до 100 000 с
⚪️1 млн запросов в день это примерно 12 RPS
⚪️1 символ 2 байта, 1 фото 2 МБ, 1 минута видео 50 МБ
⚪️1000 ГБ = 1 ТБ, 1000 ТБ = 1 ПБ

Зачем это аналитику: те же три блока вы считаете, когда обосновываете заказчику стоимость инфраструктуры. Фраза "нужен сервер побольше" никого не убедит, расчёт на 25 серверов убедит.
💛💛💛💛💛
💛 Вас просили прикинуть нагрузку на глазок?

#ВанечкаИЕдинорог #СистемныйАнализ #SystemDesign #Оценка


🥰 С днём системного аналитика!

Тех, кто превращает ХЗ в требования, желания в ТЗ, а хочу, чтобы работало в понятную архитектуру.

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

Удачи, вдохновения и меньше внезапных правок! 🥳

#системныйаналитик #день системногоаналитика


🤖 AI-агент вместо рутины. Даже если вы вообще не из IT

Вы каждый день открываете почту, разбираете документы, сводите таблицы, пишете ответы, ищете нужную информацию и по десять раз объясняете одно и то же?🤪

Часть этой работы уже можно отдать AI-агенту.И нет, для этого не нужно программировать, изучать Python или становиться инженером по AI.

😎Я собрал практический гид AI-агент вместо рутины для менеджеров, юристов, бухгалтеров, HR, руководителей и вообще всех, у кого работа состоит из текста, документов, таблиц и переписки.

Что внутри:

⚪️ что такое AI-агент простыми словами и чем он отличается от обычного чата с нейросетью
⚪️ карта по профессиям: что уже сегодня можно отдать агенту, а что лучше оставить человеку
⚪️ пошаговая сборка первого агента за 30 минут на реальном сценарии: разбор входящей почты
⚪️ 7 готовых агентов с инструкциями:

   💛проверка договора
   💛сверка расхождений
   💛план-факт для руководителя
   💛протокол встречи
   💛разбор резюме
   💛КП по брифу
   💛ответы клиентам

⚪️ Claude Cowork: агент, который может работать с файлами на компьютере, и примеры задач для него
⚪️ безопасность: персональные данные, проверка фактов и ситуации, где AI может ошибаться
⚪️ 50 готовых промптов на каждый день: документы, тексты, таблицы, планирование, переговоры и принятие решений
⚪️ чек-лист готового агента + 5 ошибок, которые чаще всего делают новички
И всё это без программирования.

Формат: PDF на 30 страниц + HTML-версия, где возле каждого промпта есть кнопка Скопировать

💳 Стоимость: 990 ₽
Это разовая покупка, доступ к материалам остаётся у вас.

👉 AI-агент вместо рутины: гид для тех, кто далёк от IT

Если давно хотелось понять, что с AI действительно можно сделать в обычной рабочей жизни, а не просто 'поговорить с нейросетью", начать можно с этого гида.
💛💛💛💛💛
Если после гайда не захочется разбираться самостоятельно, а сделать всё вместе, можно обратиться ко мне за персональной консультацией по установке и внедрению AI-агента.

Разберём вашу конкретную задачу, настроим агента и посмотрим, как встроить его в рабочий процесс.

Стоимость консультации зависит от формата работы, от 2 990 ₽ до 4 990 ₽.

Но покупать консультацию необязательно. Гайд рассчитан на то, чтобы попробовать всё самостоятельно.

💛
2 990 ₽ | разбор задачи + рекомендации, что и как внедрить;
4 990 ₽ | разбор + совместная установка/настройка первого агента.

#гайд #аигайд #Обучение #удаленка #работаиздома


📖 Ванечка платит за 100 серверов впустую

ПиццаЕдинорог запустил доставку в новом городе, и Ванечка подошёл к делу основательно.

Он посчитал: один инстанс спокойно обслуживает 1000 пользователей, в пиковые дни на сайт приходит 100 000 человек, значит нужно 100 инстансов. Ванечка поднял 100 инстансов. Навсегда. Чтобы уж наверняка.

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

Он открыл статистику. В обычные дни на сайте было 10 000 человек, десять инстансов работали, девяносто грелись впустую и выставляли счёт.

🙄 ПиццаЕдинорог заглянул в счёт и присвистнул.

- Ванечка, ты нанял сто пиццайоло в круглосуточную смену. В пятницу вечером они все при деле, спору нет. А во вторник в одиннадцать утра у нас один дед с кофе и девяносто девять человек смотрят, как он его пьёт.
- Так а как иначе? Мне же надо выдержать пятницу!
- Надо, но не постоянно. У тебя два варианта. Первый твой: всегда держать максимум, 100 инстансов. Пик выдержишь всегда, тут не поспоришь, зато в спокойные дни платишь за 90 машин, которые никому не нужны. Второй: держать ровно столько, сколько нужно прямо сейчас. Для этого нужен механизм, который делает две вещи.

     а) Мониторит нагрузку, например загрузку процессора на инстансах.
     б) Когда она доходит до порога, скажем 90%, сам поднимает ещё один инстанс и раскидывает на него трафик. Без тебя, ночью, в отпуске, когда угодно.

- А когда нагрузка спала, он так же сам гасит лишние машины. Как подменная смена: очередь выросла, вызвали ещё двоих, схлынула, отпустили домой.
- И это называется...
- Автоматическое масштабирование. Динамическое изменение количества серверов в зависимости от трафика.
- А порог именно 90%? Записываю.
- Не записывай. Все эти цифры гипотетические, я их взял для наглядности, и тысяча пользователей на инстанс тоже. Свой настоящий порог ты не угадаешь и не вычитаешь в статье, его находят нагрузочным тестированием: гоняют инстанс, смотрят, где он начинает захлёбываться, и ставят порог заранее, до этой точки.


Ванечка настроил автомасштабирование, погасил лишние машины и в следующем месяце получил счёт, от которого не хотелось зарыться под землю.
💛💛💛💛💛
Что важно запомнить:
➡️ Держать пиковую мощность постоянно надёжно, но вы платите за простаивающее железо
➡️ Автомасштабирование меняет число инстансов автоматически, по метрике нагрузки
➡️ Механизм простой: мониторим метрику, достигли порога, поднимаем инстанс, нагрузка упала, гасим
➡️ Порог и число пользователей на один инстанс берут из нагрузочного теста, а не из головы
💛💛💛💛💛
      🔸🔸🔸🔸🔸🔸

Арифметика из примера:
⚫️️1 инстанс = 1000 пользователей
⚫️️10 000 пользователей = 10 инстансов
⚫️️100 000 пользователей = 100 инстансов

Все числа условные, важна логика, а не цифры.

По каким метрикам обычно масштабируют:

💛Загрузка CPU - самая частая
💛Потребление памяти
💛Количество запросов в секунду на инстанс
💛Длина очереди необработанных задач
💛Время ответа

Два направления:
🔸Scale out - добавить инстансы при росте нагрузки
🔸Scale in - убрать лишние при спаде. Про эту половину забывают чаще всего, а именно она экономит деньги

Что должно попасть в требования:
⚪️Ожидаемая нагрузка в будни и в пик, в цифрах
⚪️Минимальное и максимальное число инстансов
⚪️Метрика и порог срабатывания
⚪️Как быстро поднимается новый инстанс: если он стартует 5 минут, всплеск за 30 секунд он не спасёт

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

💛 А вы считали, сколько у вас платится за простаивающие мощности? Или страшно смотреть?
💛💛💛💛💛

Где ещё я пишу:

YouTube
ВКонтакте
Сетка
Instagram*
Boosty

*Instagram принадлежит компании Meta, признанной экстремистской и запрещённой в РФ


#ВанечкаИЕдинорог #СистемныйАнализ #SystemDesign #Автомасштабирование #Обучение


🙂🙂🙂🙂, или что за чем происходит🤩

На созвонах в IT это слово звучит постоянно: давай распишем флоу, во флоу дыра, флоу поехал. Со стороны похоже на сленг для своих, хотя смысл у него самый бытовой.

Флоу (от английского flow, поток) - последовательность действий, путь человека от начала до результата. Проще говоря, что за чем происходит.

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

зашёл на сайт ⚪️ выбрал сценарий ⚪️ написал текст ⚪️ добавил фото ⚪️ посмотрел, как это будет выглядеть ⚪️ оплатил ⚪️ получил ссылку ⚪️ отправил человеку

Восемь шагов, и каждый можно ткнуть пальцем на экране.

Свой флоу есть, например, и у ролика для Reels, только там описан путь зрителя по видео:

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

Для аналитика флоу удобен тем, что в записи стрелочками сразу видны места, где всё может сломаться. Оплата не прошла, куда попадает человек? Закрыл вкладку на шаге с фото, текст сохранился? Ссылка у получателя открылась со старого телефона? Каждый такой вопрос - отдельная ветка, и если её не продумал аналитик, её на ходу придумает разработчик👎

В use case это разделение так и называется: основной поток и альтернативные
⚫️Основной - когда всё идёт гладко, его ещё зовут happy path.
⚫️Альтернативные - всё остальное, и обычно их в разы больше.

Как расписать флоу за пять минут:

➡️Запишите, откуда человек приходит
➡️Запишите результат, ради которого он пришёл
➡️Между ними поставьте шаги, по одному действию на шаг, глаголом
➡️На каждом шаге спросите себя: а если тут что-то пошло не так?

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

⬇️А какое айтишное словечко сбивало с толку вас в начале?
💛💛💛💛💛

Словарь терминов
Третий поток

#айтишное #айтишноесловечко #айти #системныйанализ #бизнесанализ


📖 Ванечка выбирает, как масштабировать

В понедельник у ПиццаЕдинорога лёг сайт заказов🤪

Не подтормаживал, а именно лёг, наглухо, ровно в тот момент, когда на него пришло больше людей, чем обычно.

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

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

👍ПиццаЕдинорог как раз вытаскивал противень из печи.

- Ванечка, у нас поток вырос вдвое. Что делаешь с печью?
- Куплю печь побольше.
- Купил. Поток снова вырос. Что делаешь?
- Ещё побольше...
- В какой-то момент печь перестанет влезать в кухню.
- И что тогда?
- Тогда ставишь вторую печь, вот и всё различие. То, что ты делал, называется вертикальное масштабирование: увеличиваешь характеристики той же машины, память, процессор, хранилище. Просто, переписывать ничего не надо. Так чаще всего масштабируют SQL-базы и приложения с состоянием, потому что растащить состояние по нескольким машинам и удержать его согласованным очень сложно. Но потолок есть всегда, ты в него только что упёрся.
- А вторая печь это...
- Горизонтальное масштабирование. Добавляешь машины и распределяешь нагрузку между ними.
- Так, а как клиент поймёт, на какую машину идти? Я же не могу выдать людям два разных IP и сказать: выбирайте сами, к какой печи вставать.
- Не можешь. Поэтому на входе стоит администратор, в системах он называется балансировщик нагрузки. Все клиенты обращаются к нему одному, он принимает входящий поток и отправляет каждый заказ на наименее загруженную печь. Клиент вообще не знает, сколько у нас печей, три или триста.
- И что чаще используют в реальности?
- Горизонтальное, почти всегда. Вертикальное это первая помощь, на стратегию оно не тянет.


Ванечка поднял три инстанса, поставил перед ними балансировщик и впервые за неделю выспался.
💛💛💛💛💛
Что важно запомнить:
➡️ Вертикальное масштабирование это увеличить мощность одной машины, просто, но упирается в потолок
➡️ Горизонтальное это добавить машины и распределить нагрузку, потолка практически нет
➡️ Клиенту нельзя раздавать разные IP, поэтому перед серверами стоит балансировщик нагрузки
➡️ В реальном мире большую часть времени используют горизонтальное масштабирование
💛💛💛💛💛
      🔸🔸🔸🔸🔸🔸

Вертикальное (scale up):
⚫️Что делаем: докидываем RAM, CPU, диск на ту же машину
⚫️Плюс: код менять не надо, состояние живёт в одном месте
⚫️Минус: жёсткий физический потолок, машина остаётся единой точкой отказа
⚫️Где применяют: SQL-СУБД, stateful-приложения, там, где согласованность состояния важнее

Горизонтальное (scale out):
⚫️Что делаем: добавляем инстансы и раскидываем нагрузку
⚫️Плюс: масштабируется дальше, отказ одной машины не роняет систему
⚫️Минус: нужен балансировщик, состояние приходится выносить наружу, в кэш или БД
⚫️Где применяют: stateless-сервисы, веб-приложения, микросервисы

Как работает балансировщик:
⚪️Было: 8 клиентов, 1 сервер, перегрузка.
⚪️Стало: 8 клиентов идут в балансировщик, он отправляет 4 на сервер 1 и 4 на сервер 2. Балансировщик сам определяет, какой сервер наименее загружен.

Что спросить на аналитике: хранит ли приложение состояние в памяти инстанса. Если хранит, горизонтально его не размножить, пока состояние не вынесут наружу. Это ограничение архитектуры, и всплывать оно должно на этапе требований, а не на нагрузочном тесте.
💛💛💛💛💛

😐 А вы упирались в потолок вертикального масштабирования? Как выкручивались?
💛💛💛💛💛
Потренировать сбор требований 

Где ещё я пишу:

YouTube
ВКонтакте
Сетка
Instagram*
Boosty

*Instagram принадлежит компании Meta, признанной экстремистской и запрещённой в РФ

#ВанечкаИЕдинорог #СистемныйАнализ #SystemDesign #Масштабирование #Обучение


💛Ссылка на Вебинар, старт в 19:00


Тебя ждать?🥺
Опрос
  •   Обязательно приду! 💪
  •   Я очень постараюсь 🥺
  •   Не приду 🍴
5 голосов


😳 17.09 в 19:00 практикум: заменит ли ИИ системного аналитика?

Разберём на примерах: что ИИ уже делает, где ломается и почему аналитик с ИИ вытеснит того, кто не умеет.

Спикеры: Денис Чемерис и Владимир Соловьев.

❕ Розыгрыш места на НСА 3.0 + тренажёр.

#Розыгрыш #вебинар #практикум #айти


Ванечка путает задержку и пропускную способность

Ванечка защищал требования к новой системе заказов и уверенно заявил, что система будет быстрая.

- Насколько быстрая? - поднял бровь ПиццаЕдинорог.
- Ну... очень. Почти мгновенно.
- А сколько заказов одновременно вытянет?
- Так она же быстрая!

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

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

ПиццаЕдинорог позвал его на кухню.

- Вопрос первый: сколько времени проходит от нажатия кнопки заказать до пиццы на столе у клиента?
- Ну... минут двадцать пять.
- Отлично. Вопрос второй: сколько пицц наша кухня выдаёт за час?
- Шестьдесят, если печь не простаивает.
- А теперь скажи, какое из этих чисел означает, что пиццерия быстрая?

Ванечка открыл рот и закрыл.

- Вот. Два разных числа про одну кухню. Двадцать пять минут это задержка, latency, время, за которое один запрос доходит до сервера и возвращается обратно. Меряется в миллисекундах. Шестьдесят пицц в час это пропускная способность, throughput, сколько запросов система переваривает за секунду. Меряется в RPS, запросах в секунду, или TPS, транзакциях в секунду.
- И они не связаны?
- Не так, как ты думаешь. Можно посадить одного гения, который лепит пиццу за восемь минут, но он один, и в пятницу очередь до дверей. Можно поставить двадцать человек, которые копаются по сорок минут каждый. Первое это низкая задержка при слабой пропускной способности, второе наоборот.
- А хочется?
- Хочется низкую задержку и высокую пропускную одновременно, это и есть цель. Но помни главное: у каждого сервера есть предел, как у печи. Она держит X пицц за раз, и всё, что сверху, превращается в тормоза или в сгоревший ужин. Сервера, который просто быстрый, не бывает.

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

Единорог впервые за встречу кивнул.
💛💛💛💛💛
Что важно запомнить:
➡️ Задержка (latency) это время обработки одного запроса, в миллисекундах
➡️ Пропускная способность (throughput) это сколько запросов система тянет за секунду, в RPS или TPS
➡️ Числа независимые, слово быстро без указания, какое из них имеется в виду, требованием не является
➡️ У любого сервера есть лимит, сверх него он перегружается или отключается
💛💛💛💛💛
‼️РАЗБОР

Latency и RTT:
RTT (Round Trip Time) это полное время от отправки запроса до получения ответа. Часто RTT используют как синоним задержки, на собеседовании это допустимо, но помните, что RTT это именно путь туда-обратно.

Четыре состояния системы:
⚪️Низкая задержка и высокая пропускная - идеал, к нему проектируем
⚪️Низкая задержка и низкая пропускная - работает шустро, падает на пике
⚪️Высокая задержка и высокая пропускная - держит толпу, но каждый ждёт
⚪️Высокая задержка и низкая пропускная - здесь мы обычно и начинаем

Аналогия:
🔸Задержка это время проезда одной машины из точки А в точку Б, 10 минут.
🔸Пропускная способность это сколько машин проходит по шоссе за час, 1000 машин.

Как формулировать в требованиях:
❌ Система должна работать быстро
✔️ 95% запросов обрабатываются не дольше 300 мс при нагрузке 2000 RPS

Вторую формулировку можно проверить нагрузочным тестом, первую на груминге вы не защитите.

💛 А у вас в ТЗ нефункциональные требования стоят в цифрах, или там тоже живёт система должна быть быстрой и удобной?

#ВанечкаИЕдинорог #СистемныйАнализ #SystemDesign #Требования #Обучение


Однажды я крепко накосячил дома.

Не буду расписывать, что именно натворил 😐 Скажу так: был неправ по всем пунктам.

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

Слова у меня были. Не было способа сделать так, чтобы их дочитали до конца.

И я поступил как любой айтишник, который не знает, как поступить по-человечески🤣 Открыл редактор.

Собрал страницу, которая открывается по ссылке, без регистрации и приложений. Текст проявляется по одной фразе, промотать вперёд нельзя, так что прочитать придётся всё. В конце две кнопки: "Прощаю" и "Ни за что". Вторая убегает от пальца, отвечает что-то вроде "Даже не начинай" и постепенно тает, первая в это время растёт😎

Сработало🥳 Причина простая: она дочитала до конца, этого и хватило.

Потом выяснилось, что такое нужно не мне одному, и страница выросла в сайт - www.estrazgovor.ru. Появилось 3 режима: примирение, признание и открытка без повода. Собрать и посмотреть можно бесплатно, платишь только за готовую ссылку.

От идеи до боевого сервера ушёл один день. Домен, VPS, платёжка, бот в телеграме для уведомлений, посадочные под поиск.

Если сейчас с кем-то в контрах - собери и посмотри, это бесплатно❤️

А если отправлять некому и незачем - всё равно зайди и потыкай, пожалуйста! И напиши мне коммент, что не так: где непонятно, где хочется закрыть вкладку, что бы ты сделал иначе.

Мне сейчас честный разбор нужнее продаж🙂

#пролюбовь #какпомириться #какпопроситьпрощения


🤨Ванечка выясняет, что такое сервер

На планёрке в ПиццаЕдинороге прозвучало: задеплоим сайт на сервер.

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

Через час его попросили описать в ТЗ, как клиент попадает на сайт заказа. Ванечка написал: пользователь заходит на сайт, и сайт открывается.

Разработчик прочитал и спросил: по какому адресу заходит, на каком порту слушает приложение, домен уже купили или пока по IP?

Ванечка снова открыл блокнот. Там было написано: сервер = шкаф. Блокнот не помог.

👍 ПиццаЕдинорог как раз принимал заказ по телефону, положил трубку и повернулся.

- Ванечка, ты у себя на ноутбуке проект запускаешь?
- Ну да, на localhost:8080, каждый день.
- Поздравляю, ты уже месяц работаешь на сервере.
- Это же просто ноутбук!
- Сервер и есть машина, на которой крутится код твоего приложения, никакой магии. localhost это доменное имя, которое превращается в IP-адрес 127.0.0.1, адрес твоего же ноутбука. Считай, ты испёк пиццу и сам её съел, не выходя с кухни.
- А чужой сайт тогда как открывается?
- Как доставка. Ты пишешь в браузере abc.com и жмёшь Enter:

🔸Браузер идёт в DNS, это справочная. Спрашивает, по какому адресу живёт abc.com.
🔸DNS отдаёт IP-адрес. IP это адрес дома, уникальный.
🔸Браузер отправляет запрос по этому адресу, курьер выехал.
🔸Курьер приехал к дому, а в доме двести квартир, как на одном сервере крутится десяток приложений. Чтобы понять, кому именно пицца, нужен порт. Порт это номер квартиры. Сервер находит нужное приложение и возвращает ответ.

- Поэтому https://abc.com это ровно то же самое, что 35.154.33.64:443. Просто 443 это порт HTTPS по умолчанию, его не пишут.
- А зачем вообще домены, если есть IP?
- Попробуй продиктовать курьеру 35.154.33.64. А теперь скажи: ПиццаЕдинорог на Ленина. Вот и весь ответ, домен покупают, чтобы человек запоминал имя, и настраивают маппинг имени на IP.

Ванечка вычеркнул старую запись и написал: сервер = машина + адрес + порт.

💛💛💛💛💛
Что важно запомнить:
⚪️Сервер это машина, на которой выполняется код приложения. Ваш ноутбук тоже сервер
⚪️DNS переводит доменное имя в IP-адрес
⚪️IP это адрес машины, порт это конкретное приложение на ней
⚪️https://abc.com равно 35.154.33.64:443, порт 443 просто скрыт по умолчанию
💛💛💛💛💛

          🔸🔸🔸🔸🔸🔸

Как выкатить приложение в интернет:
Приложение слушает порт 8080 на ноутбуке. Чтобы к нему обращались другие, нужен публичный IP, привязанный к машине, тогда сайт доступен по http://публичный_ip:8080.

Делать это самому морока: питание, охлаждение, канал, обновления, физическая безопасность. Поэтому серверы арендуют у облачных провайдеров: вы получаете виртуальную машину с публичным IP и доступом из любой точки мира, а железо остаётся заботой провайдера.
💛💛💛💛💛

Зачем это аналитику: фраза система А обращается к системе Б требованием не является. Требование это протокол, хост, порт, метод и формат. Без них интеграцию не настроить.


💛 А вы помните момент, когда до вас дошло, что сервер это просто чужой компьютер? Или до сих пор представляете шкаф с лампочками?
💛💛💛💛💛
Бесплатный практикум
Запись на 3 поток
💛💛💛💛💛

#ВанечкаИЕдинорог #СистемныйАнализ #SystemDesign #Сети #Обучение

Показано 20 последних публикаций.