This media is not supported in your browser
VIEW IN TELEGRAM
Вчера на интенсиве мы подняли интересную тему выбора технологий для проекта.
Что выбрать при проектировании новой фичи(модуля)?
🔸Технология, которая уже используется на проекте, но не совсем подходит для этой задачи.
🔸Новая технология, которой нет на проекте, но она идеально подходит под решение задачи.
Опрос ниже
Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3
Выбираем технологию⚙️
Final Results
38%
Уже есть на проекте, но не совсем походит
62%
Идеально подходит, но на проекте ранее не применялась
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
На новый интенсив "Функциональные требования" в группе 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
Но лучше поздно, чем никогда:
🔸Теория 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
Остались места на интенсив "Брокеры сообщений"
Уровень: 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
This media is not supported in your browser
VIEW IN TELEGRAM
Подвел небольшой итог по двухнедельному циклу видео.
Все посты собрал в один, чтобы было удобно ориентироваться:
🔸Что такое горизонтальная масштабируемость;
🔸Влияние на отказоустойчивость;
🔸Влияние на установку релизов;
🔸Экономия ресурсов;
🔸Горизонтальная vs Вертикальная масштабируемость;
🔸Неконсистентность данных.
Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
70🔥7👍4
Media is too big
VIEW IN TELEGRAM
Кейс:
Имеем базу данных, в которую записывается ~1 млрд сообщений в сутки. Средний размер одного сообщения 2кб. Срок хранения 30 дней.
Задача:
Внедрить полнотекстовый поиск по сообщениям.
Важно:
Время работы поиска не должно превышать 1 секунду.
Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥11
Учимся писать ФТ без воды, структурировано и понятно, чтобы у разработчиков не осталось вопросов :)
Подробнее:
Тема: Функциональные требования.
Уровень: junior.
Требуемые навыки: Работа с ER-диаграммой, понимание принципов работы REST API.
Время проведения: ~4 часа.
Кол-во участников: до 4.
Программа:
✅ Виды требований;
✅ Какие бывают ограничения и как они влияют на ФТ;
✅ Что включать в ФТ;
✅ Правильная структура ФТ;
✅ Где описывать ФТ.
Практика:
Подготовка ФТ под различные кейсы:
✅ FRONT;
✅ BACK;
✅ Интеграции(синхронные и асинхронные);
✅ Базы данных.
Запись тут
Функциональные требования
Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
Media is too big
VIEW IN TELEGRAM
1️⃣ Выбрать технологию подходящую под задачу и её масштабы. Тут подойдёт Elasticsearch.
2️⃣ Разделить чтение и запись. Записывать данные будем в основную БД, а поиск осуществлять из Elasticsearch.
3️⃣ Настроить репликацию данных от основного сервиса в Elasticsearch.
4️⃣ Внедрить сервис для потокового обогащения событий, чтобы приводить их в удобный для поиска формат.
5️⃣ Для наполнения хранилища Elasticsearch использовать коробочное решение Kafka Connect Elasticsearch Sink, которое будет читать топик с обогащенными сообщениями и через Bulk API отправлять данные в Elasticsearch.
ℹ️ Bulk API — это высокопроизводительный интерфейс для массовой асинхронной обработки больших объёмов данных.
P.S. В следующих видео разберу отдельно каждый этап. Укажу на нюансы, которые нужно учитывать, а также посчитаю примерное количество ресурсов для каждого участка.
Системный анализ | Дмитрий Помаскин
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥8👍3