Системный анализ | Дмитрий Помаскин
1.38K subscribers
44 photos
150 videos
266 links
📍Обучение системному анализу
📍Полезные материалы для развития навыков
📍Разбор практических кейсов по системному анализу и архитектуре
📍Индивидуальные консультации (менторство)

Моя онлайн-школа:
https://system-analysis.skillspace.ru
Download Telegram
Media is too big
VIEW IN TELEGRAM
❗️Второй способ решения интерактивного кейса.

Сам кейс тут 👈

Шардирование основной БД для распределения операций записи по шардам.

1️⃣ Шардируем нашу основную БД;
2️⃣ В качестве ключа шардрования лучше всего подойдет hash — для равномерного распределения;
3️⃣ Операции записи распределятся по шардам, что кратно ускорит обработку потока сообщений.

⚠️ Диски под шардами должны быть физически изолированы.

P.S. Данный вариант имеет риск снова "упереться" в диск при неравномерном потоке сообщений (на его пиках).

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4
❗️Обновление программы интенсива по REST API❗️

Добавил в программу работу со Swagger.

Теперь практика выглядит следующим образом:
🔸Проектируем REST API для нового сервиса;
🔸Описываем его в Swagger;
🔸Собираем вызовы сервиса через Postman (сервис реальный, с логикой и БД).

Следующий интенсив 11.08 в 19:00 МСК, записаться тут 👈

P.S. На брокерах сообщений осталось всего 2 места на 25.08, группа 24.08 полностью набрана.

UPD: На брокерах 1 слот
.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4
Media is too big
VIEW IN TELEGRAM
🚩Ошибка при проектировании REST API.

Жестко привязывать параметры API к модели данных в БД.

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

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

1️⃣ В API передаем только параметры новой позиции, не нужно заранее рассчитывать новую сумму на фронте и передавать её на вход.
2️⃣ Сервис при получении такого запроса выполняет в одной транзакции 2 операции:
- Добавляет новую запись в таблицу позиций заказа;
- Обновляет сумму заказа в таблице заказов.

Системный анализ | Дмитрий Помаскин
👍9🔥2
Media is too big
VIEW IN TELEGRAM
🚩Ошибка при проектировании REST API: высокая связность клиентской части и модели данных.

Пример: У вас есть 2 таблицы: основная таблица со списком товаров и таблица с вариантами этих товаров (размеры, цвета и тд).

Задача:
Получать список товаров отдельно и получать товары со всеми вариантами.

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

Реализовать два отдельных метода и возвращать в них только нужный набор атрибутов.

Системный анализ | Дмитрий Помаскин
👍6🔥5
❗️Осталось 2 слота на понедельник 11.08 19:00 МСК на интенсив по REST API❗️

Подробнее:
Тема: Проектирование REST API.
Уровень: junior.
Требуемые навыки: Умение читать ER-диаграмму.
Кол-во участников: до 4.
Программа:
Форматы данных;
HTTP-методы и их свойства;
REST и RESTfull;
Обработка ошибок в синхронных интеграциях.

Практика:
Проектирование REST API для нового сервиса;
Внедрение пагинации и фильтрации;
Swagger;
Postman.

👉 Для записи переходите по ссылке.

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

UPD: 1 слот

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3🤔1
Media is too big
VIEW IN TELEGRAM
Немного теории: WebSocket.

ℹ️ WebSocket — это самостоятельный протокол, предназначенный для двустороннего обмена сообщениями, c использованием постоянного соединения.

Важно помнить:
1️⃣ WebSocket — самостоятельный протокол;
2️⃣ Handshake — HTTP-запрос с заголовком Upgrade: websocket, который используется для установки соединения. Отправляется от клиента к серверу.
3️⃣ Ping/pong — механизм, с помощью которого сервер проверяет присутствие клиента на той стороне. Позволяет не держать "мертвые" соединения.

P.S. На этой неделе поговорим про real-time интеграции.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥11
💬Немного обратной связи💬

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

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

Голосуйте в опросе, а самые востребованные включу в расписание.

Описание программ:
🔸Базы данных (с нуля);
🔸Проектирование REST API (junior);
🔸Брокеры сообщений (middle).

Опрос ниже 👇

P.S. Новые темы опубликую чуть позже.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Ещё немного теории: SSE.

ℹ️ SSE (Server-Sent Events) — это механизм, позволяющий серверу асинхронно отправлять данные клиенту через HTTP-соединение.

Важно помнить:
1️⃣ Работает поверх HTTP-протокола. Поддерживает только метод GET.
2️⃣ Для установки соединения клиент должен отправить GET-запрос с заголовком Accept: text/event-stream.
3️⃣ При получении такого запроса сервер возвращает ответ 200, но не закрывает соединение. В это соединение сервер может досылать данные.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍7
Давно у нас не было вопросно-ответных постов (это он).

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

💬Я отвечу на них в комментариях (текстом или голосовым), а самые интересные разберу в видеоформате.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Media is too big
VIEW IN TELEGRAM
И ещё чуть-чуть теории: Long polling.

ℹ️ Long polling — это технология, при которой клиент отправляет запрос к серверу, и сервер удерживает соединение открытым до тех пор, пока не появится новая информация для отправки или не истечёт время ожидания. После этого клиент сразу отправляет новый запрос.

Важно помнить:
1️⃣ В классическом виде работает на HTTP-протоколе.
2️⃣ Зависит от таймаутов. При наступлении таймаута клиент должен открыть новое соединение.
3️⃣ На одну итерацию получения данных требуется одно соединение (запрос-ответ).

P.S. Технология достаточно устаревшая, но всё ещё встречается на проектах.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍4
Media is too big
VIEW IN TELEGRAM
⚙️ Практическое применение: web-socket.

Пять, на мой субъективный взгляд, популярных применений технологии:

1️⃣ Онлайн-чаты — вы отправляете сообщения на сервер, сервер передает новые сообщения вам.
2️⃣ Онлайн-игры — ваши действия передаются на сервер, действия других игроков приходят к вам на клиент.
3️⃣ Финансовые биржи — обновление котировок в реальном времени с минимальной задержкой.
4️⃣ Совместная работа — изменения, внесённые разными пользователями, синхронизируются без перезагрузки.
5️⃣ Удалённое управление умным домом — получение данных с устройств и передача команд на устройства. Речь о взаимодействии с пользователем через браузер или приложение.

P.S. Кто пропустил теоретическую часть,
жмём сюда.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍4
🆕 Функциональные требования — новая тема практического интенсива 🆕

Будем учиться писать ФТ так, чтобы у разработчиков не осталось вопросов :)

Подробнее:
Тема: Функциональные требования.
Уровень: junior.
Требуемые навыки: Работа с ER-диаграммой, понимание принципов работы REST API.
Кол-во участников: до 4.
Программа:
Виды требований;
Какие бывают ограничения и как они влияют на ФТ;
Что включать в ФТ;
Правильная структура ФТ;
Где описывать ФТ.

Практика:
Подготовка ФТ под различные кейсы:
FRONT;
BACK;
Интеграции(синхронные и асинхронные);
Базы данных.

Запись будет открыта одновременно со всеми интенсивами сентября.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3
🗓 Завтра 20.08 в 18:00 по МСК будет открыта запись на практические интенсивы сентября 🗓

По результатам нашего опроса в программу сентября включил:

🔄 Брокеры сообщений — 2 интенсива;
🔄 Проектирование REST API — 1 интенсив;
🔄 Базы данных — 1 интенсив;
🆕 Функциональные требования — 2 интенсива.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4
Media is too big
VIEW IN TELEGRAM
⚙️ Практическое применение: SSE.

Три возможных применения технологии:
1️⃣ Уведомления — система отправляет вам уведомление о наступлении нового события. Например, получение письма на почту.
2️⃣ Системы мониторинга — одна система постоянно отправляет метрики в другую систему, которая занимается агрегацией показателей.
3️⃣ Лента новостей — система отправляет события, которые видят все пользователи на клиенте. Например, текстовая трансляция футбольного матча.

P.S. Кто пропустил теоретическую часть,
жмём сюда.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍3
‼️Запись на интенсивы сентября открыта‼️

Базы данных
:
🔸Понедельник 01.09 19:00
👤Количество мест: 5
ℹ️ Описание интенсива
👉 Запись

Функциональные требования:
🔸Воскресенье 07.09 12:00
🔸Понедельник 22.09 19:00
👤Количество мест: 4
ℹ️ Описание интенсива
👉 Запись

Брокеры сообщений:
🔸Понедельник 08.09 19:00
🔸Воскресенье 21.09 12:00
👤Количество мест: 5
ℹ️ Описание интенсива
👉 Запись

Проектирование REST API:
🔸Понедельник 15.09 19:00
👤Количество мест: 5
ℹ️ Описание интенсива
👉 Запись
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3
Media is too big
VIEW IN TELEGRAM
⚙️ Практическое применение: Long polling.

⚠️Помните, что технология достаточно устаревшая и лучше от неё отказаться.

Но вот случаи, когда можно и нужно её использовать:
1️⃣ Поддержка старых версий браузеров, которые не поддерживают WS и SSE;
2️⃣ Ограничения безопасности на вашем проекте, при которых вам нельзя использовать WS и SSE;
3️⃣ Интеграция с внешней системой, у которой реализован только Long polling;
4️⃣ Использование Long polling в качестве резервного канала, если при установке WS или SSE возникли ошибки.

P.S. Кто пропустил теоретическую часть,
жмём сюда.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
Media is too big
VIEW IN TELEGRAM
🚩Сравнение 3-х технологий на одном практическом примере (WS, SSE, Long polling)

Пример: Отправка 1000 уведомлений одному пользователю. Размер 1-го уведомления 100 байт (0.1кб).

WS: 1.2 КБ (запрос) + 0.2 КБ (ответ) + 1000 * 0.1 КБ (сообщение) ≈ 101.4кб

SSE: 1.2 КБ (запрос) + 0.2 КБ (ответ) + 1000 * 0.1 КБ (сообщение) ≈ 101.4кб

Long polling: (1.2 КБ (запрос) + 0.2 КБ (ответ) + 0.1 КБ (сообщение)) * 1000 ≈ 1500 КБ

Системный анализ | Дмитрий Помаскин
🔥10
This media is not supported in your browser
VIEW IN TELEGRAM
💬 Интерактивный опрос 💬

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

Что выбрать при проектировании новой фичи(модуля)?
🔸Технология, которая уже используется на проекте, но не совсем подходит для этой задачи.
🔸Новая технология, которой нет на проекте, но она идеально подходит под решение задачи.

Опрос ниже 👇

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3