Системный Аналитик – Telegram
Системный Аналитик
18.6K subscribers
91 photos
4 videos
49 files
254 links
Канал для системных аналитиков и не только: подборки полезных материалов на все случаи жизни.

Реклама и сотрудничество @radale

https://gosuslugi.ru/snet/67b0613c6411ff785396754a
Download Telegram
Недостатки Kafka

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

В Кафке масштабирование сложнее, чем в AMQP брокерах. Например, если вы добавите еще один экземпляр читателя и натравите его на ту же партицию, вы получите нулевой КПД, так как в этом случае оба экземпляра будут читать один и тот же набор данных. Правило масштабирования Кафки — количество конкурентных читателей (то бишь группа сервисов, реализующих одинаковую логику обработки (реплик)) топика не должно превышать количество партиций в этом топике, иначе какая-то пара читателей будут обрабатывать одинаковый набор данных. Решение: объединять несколько реплик одного сервиса в consumer Group, в рамках которого Zookeeper будет назначать одной партиции не более одного читателя.

Необходимо вести учет последнего прочитанного сообщения в партиции каждым из читателей. В силу простоты структуры партиций, эта информация представлена в виде целочисленного значения, именуемого offset (смещение). Решение: Kafka, начиная с версии 0.9, хранит оффсеты по каждому пользователю в специальном топике __consumer_offsets (до версии 0.9 оффсеты хранились в ZooKeeper). К тому же, вести учет оффсетов можно непосредственно на стороне получателей.

В Кафке сложнее (в сравнении с AMQP-брокерами) реализовать приоритет сообщений. Это напрямую вытекает из того факта, что сообщения в партициях хранятся и читаются строго в порядке их добавления. Решение: создать нескольких топиков под сообщения с разным приоритетом (отличаться топики будут только названием), например, events_low, events_medium, events_high, а затем реализовать логику приоритетного чтения перечисленных топиков на стороне приложения-консьюмера.

В отличие от классических брокеров, битые сообщения (которые не удается обработать с учетом существующей логики получателя или из-за проблем с десериализацей) нельзя бесконечно перезакидывать в очередь, пока получатель не научится их корректно обрабатывать. В Кафке по умолчанию вычитывание сообщений из партиции останавливается, когда получатель доходит до битого сообщения, и до тех пор, пока оно не будет пропущено и закинуто в “карантинную” очередь (также именуемой “dead letter queue”) для последующей обработки, чтение партиции продолжить не получится.
👍3🤔2
Монолит VS микросервисы
🤔1
Почему микросервисная архитектура
1. Крупный масштаб (в монолите чёрт ногу сломит)
2. Больше гибкость (обновлять можно только 1 сервис, ошибки тоже только там)
Разработчики начали создавать API, чтобы сторонние ИТ-сервисы могли подключиться к инфраструктуре. Недостаток этой технологии в том, что она предлагает всем один и тот же набор возможностей. Если вам нужно ограничить объём трафика на смартфонах, а пользователям планшетов предложить собственный метод ввода данных, могут начаться трудности.

Ещё сложнее была задача SoundCloud – компании нужно было интегрироваться со сторонними разработчикам, чтобы те могли встраивать плеер в свои площадки. Для этого API из коробки должно взаимодействовать с любыми платформами, а при каждом обновлении команде нужно убедиться, что доработка не сломает все эти интеграции. На практике этого добиться нереально.

Так и родилась концепция Backend-for-Frontend – легковесного сервиса, который лежит ближе к фронтенду, чем к бэку.

Возможности BFF
Ключевое слово – «легковесный», список возможностей у BFF гораздо меньше, чем у API:

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

Форматировать эти данные, чтобы они корректно обрабатывались на фронтенде.

Отправлять данные фронтенду.
👍1🤔1
BFF - технология предоставления API микросервисов во фронт через промежуточный уровень с минимальной логикой. Это позволяет отформатировать и представить сырые данные из бека во фронт в красивом виде
За что отвечают ИТ-архитекторы
Чем отличается пунктирная линия и сплошная на логической диаграмме БД?

1. Сплошная - Идентифицирующая связь: При установлении идентифицирующей связи дочерняя сущность автоматически превращается в зависимую. Атрибуты первичного ключа родительской сущности автоматически мигрируют в зону атрибутов первичного ключа дочерней сущности как внешние ключи (Foreign Key)

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

#бд
👍7🔥2
Статьи про User Stories

1. Как формировать User Stories
2. Подробный гайд по User Stories: критерии INVEST, AC, Job Stories, метод персон, типичные ошибки
3. Декомпозиция User Stories — паттерны, метод гамбургера, SPIDR

#требования
🔥8🤔1
Карл_Вигерс_и_Джой_Битти_Karl_Wiegers_and_Joy_Beatty_Разработка.pdf
3.1 MB
Библия для Системного аналитика, если у кого её ещё нет. Кому нужно на английском, дайте знать в комментах — найдём

#требования
🔥11🤔1