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

Моя онлайн-школа:
https://system-analysis.skillspace.ru
Download Telegram
‼️Запись на интенсивы сентября открыта‼️

Базы данных
:
🔸Понедельник 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
Media is too big
VIEW IN TELEGRAM
💬 Итоги опроса 💬

Победил вариант: Новая технология, которой нет на проекте, но она идеально подходит под решение задачи.

Выделю стоп-факторы, из-за которых на реальном проекте не получится пойти по этому варианту:
1️⃣ Нехватка ресурсов на развёртывание новой технологии;
2️⃣ Отсутствие компетенций в команде для работы с новой технологией;
3️⃣ Сроки — внедрять новое дольше, чем использовать то, что уже работает.
4️⃣ Ограничения по использованию технологий. Например, ваш проект должен соответствовать требованиям ФСТЭК.

P.S. У меня на проектах всегда присутствуют 2-3 пункта из перечня выше, поэтому чаще приходится использовать имеющийся стэк.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍9🔥5
❗️Осталось 2 места в группу выходного дня❗️

На новый интенсив "Функциональные требования" в группе 07.09 (воскресенье) осталось 2 места.

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

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Media is too big
VIEW IN TELEGRAM
Горизонтальная масштабируемость в распределенных системах.

ℹ️ Горизонтальная масштабируемость — это способ увеличить производительность распределённой системы за счёт добавления новых экземпляров сервисов (подов) в вашей системе. Поды ваших сервисов работают параллельно, при этом производительность системы кратно увеличивается.

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

P.S. В следующих видео расскажу о преимуществах и недостатках такого подхода.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
Media is too big
VIEW IN TELEGRAM
Горизонтальная масштабируемость — влияние на отказоустойчивость.

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

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

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

P.S. Кто пропустил первую часть, она тут.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍1
А вот и итоги последнего летнего месяца 🫡

Продолжаем расти, несмотря на отпуска 🎉

Статистика без учета интенсивов, так как там ученики повторяются:)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9
❗️После цикла постов о real-time интеграциях забыл сделать итоговый пост для удобства 🫠

Но лучше поздно, чем никогда:
🔸Теория WS;
🔸
Теория SSE;
🔸
Теория Long polling;
🔸
Практическое применение WS;
🔸
Практическое применение SSE;
🔸
Практическое применение Long polling;
🔸
Сравнение технологий.

🔤: Нужно ли углубляться в изучение данных технологий?

🔤: Мне кажется, что точно нужно знать об их существовании, отличиях и способах применения. Глубоко погружаться стоит только если вы столкнётесь с ними на реальном проекте.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5🔥5
❗️Информация по интенсивам❗️

Функциональные требования 07.09 — группа набрана, мест нет.

Но есть хорошие новости:
Функциональные требования 22.09 — осталось 3 места;
По брокерам и REST API — места есть.

Частый вопрос от участников:

🔤: А что, если группа не наберется?

🔤: Проведу интенсив в любом случае! Даже для одного человека — сделаем полноценное персональное занятие 😉

Запись по ссылкам 👇
Брокеры сообщений
Функциональные требования
REST API

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍5🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Горизонтальная масштабируемость — установка обновлений.

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

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

Пример:
В магазине работает одна касса. Требуется провести инкассацию. Кассу закрывают — все покупатели вынуждены ждать.
В магазине работают три кассы. Инкассацию проводят поочерёдно. Покупатели продолжают оплачивать покупки у открытых касс.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍7🔥4
❗️Информация по интенсивам❗️

Слоты начали активно занимать, выкладываю количество мест на данный момент:

☑️ Функциональные требования 07.09 — мест нет;
Брокеры сообщений 08.09 — осталось 3 места;
REST API 15.09 — осталось 4 места.
Брокеры сообщений 21.09 — осталось 2 места;
Функциональные требования 22.09 — осталось 3 места.


Запись по ссылкам 👇
Брокеры сообщений
Функциональные требования
REST API

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Горизонтальная масштабируемость — экономия ресурсов.

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

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

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

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

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

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥6👍2
‼️Сегодня 19:00 МСК ‼️
Остались места на интенсив "Брокеры сообщений"

Уровень: Middle.
Требуемые навыки: Понимание принципов работы распределённых систем.
Кол-во участников: до 4.
Длительность: ~4 часа.
Программа:
Типы брокеров (модель обмена, гарантия доставки, умные/глупые брокеры);
RabbitMQ;
ApacheKafka;
Transaсtional outbox;
Обработка ошибок в асинхронных интеграциях.

Практика:
Проектируем внедрение брокеров в распределенную систему;
Поднимаем RabbitMQ и ApacheKafka локально в docker;
Учимся работать с ними через веб-интерфейс;
Описываем формат взаимодействия в asyncapi.

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

P.S. Желательно записываться заранее, чтобы успеть поставить докер перед занятием.

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Media is too big
VIEW IN TELEGRAM
Когда горизонтальная масштабируемость не поможет?

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

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

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

Выкладываю количество мест на данный момент:

REST API 15.09 — осталось 4 места.
☑️ Брокеры сообщений 21.09 — мест нет;
Функциональные требования 22.09 — осталось 3 места.

Запись по ссылкам 👇
Функциональные требования
REST API

Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
This media is not supported in your browser
VIEW IN TELEGRAM
Возможная проблема при использовании горизонтальной масштабируемости

Один под:
Сервис работает в одном экземпляре — задачи исполняются ровно в той последовательности, в которой поступают. Все строго и предсказуемо.

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

Почему это проблема?

Представьте:
🔸Запрос А: «Списать 100 рублей»
🔸Запрос Б: «Заблокировать карту»

Если Б выполнится раньше А из-за параллельной обработки в разных подах — получим ошибку при исполнении запроса А.

P.S. Игнорирование этого вопроса — прямой путь к рассинхрону данных и багам, которые очень сложно отловить.

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