آخرین پست‌های Системный Аналитик (@sys_sa) در تلگرام

پست‌های تلگرام Системный Аналитик

Системный Аналитик
Канал для системных аналитиков и не только: подборки полезных материалов на все случаи жизни.

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

https://gosuslugi.ru/snet/67b0613c6411ff785396754a
16,296 مشترک
85 عکس
4 ویدیو
آخرین به‌روزرسانی 11.03.2025 07:48

آخرین محتوای به اشتراک گذاشته شده توسط Системный Аналитик در تلگرام

Системный Аналитик

04 Mar, 16:15

4,133

Как аналитику больше зарабатывать

Именно об этом Артем, senior системный аналитик в Альфа Банке, рассказывает в своей Академии Аналитиков

🔝Топ постов:
Разбор задачки с собеседований в Альфу 🏦 и Тинькофф 🏦
Разбор задачки в Альфу 🏦
Разбор задачки в Сбер 🏦
Гайд "Как не вылететь с испыталки"
Как писать идеальную доку

Подписывайся, чтобы прокачаться и больше зарабатывать❗️
Системный Аналитик

04 Mar, 08:04

4,281

🔵 Уровни кэширования

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

Уровни кэширования
— места в цепочке передачи данных, где может происходить кэширование


Клиентский кэш

Хранение данных на устройстве пользователя (например, в браузере) для ускорения доступа к часто запрашиваемым ресурсам
 
Тип данных: статические (изображения, CSS, JavaScript)

💙хранит статические данные (изображения, CSS, скрипты)
💙работает с заголовками HTTP (Cache-Control, ETag, Last-Modified)
💙срок жизни данных ограничен временем в заголовках или ручной очисткой

Проблемы и решения

💙 устаревшие данные: использовать версии URL или кэш-бастинг (например, если файл style.css обновился, к URL добавить параметр style.css?v=2.0)
💙 избыточное кэширование: уменьшить объем кэшируемых данных с помощью заголовков (например, Cache-Control: no-cache для динамических данных, ETag, Last-Modified)


Сетевой кэш

Кэш на промежуточных узлах сети (например, CDN)
Используется для уменьшения задержек и нагрузки на сервер

Тип данных: статические (медиафайлы, страницы) и динамические (обработанные данные с учетом TTL)

хранит данные близко к пользователю (PoP-узлы, точки присутствия) 
уменьшает трафик за счет ускорения доставки статических ресурсов
обновление данных через TTL или инвалидацию

Проблемы и решения

несинхронизированные данные: регулярная инвалидация и настройка TTL
Стратегия «push» обновлений помогает предотвратить "протухания"
высокая нагрузка на основной сервер при обновлении: расширение сети PoP или  многоуровневый кэш (узлы обновляют данные между собой)


Серверный кэш 

Кэширование данных на сервере (например, в памяти или на диске) для ускорения обработки запросов

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

💙применяется для часто запрашиваемых данных (например, результаты сложных вычислений)
💙примеры: Redis, Memcached
💙кэширование как статических, так и динамических данных

Проблемы и решения

💙 перезапись кэша и потеря данных: использовать алгоритмы управления кэшем, например, LRU (Least Recently Used). Или механизм TTL для периодической очистки.
💙 конкуренция за память: настроить лимиты на использование памяти и использовать высокоэффективные структур данных (например, Bloom filter) для снижения нагрузки на память


Уровень приложения (кэш приложения) 

Кэширование на уровне бизнес-логики приложения, где данные обрабатываются и сохраняются в памяти / специализированных хранилищах

Тип данных: динамические (сессии, промежуточные результаты)

сохраняет промежуточные данные, которые генерируются во время работы приложения
позволяет минимизировать повторные вычисления или запросы к БД
пример: кэширование запросов в БД с помощью ORM

Проблемы и примеры решения

избыточное кэширование: кэшировать только те данные, которые повышают производительность
неактуальные данные: введение стратегий инвалидации данных с учетом бизнес-логики (например, обновление данных после определенных изменений или событий)


📎 Материалы
1. Что такое кэширование сайта и почему это важно
2. Кэш
3. Чем полезно кэширование сайта и как его настроить
4. Браузерное и серверное кэширование
5. Проектирование эффективной системы кэширования
6. Обзор использования клиентского кэша с распределенным кэшированием
7. Основы клиентского кэширования понятными словами и на примерах. Last-modified, Etag, Expires, Cache-control: max-age и другие заголовки
8. Кеширование. Настроить и проверить параметры кеширования на CDN-серверах
9. Клиентский кэш данных

#архитектура



🧑‍🎓 Больше полезного в базе знаний по системному анализу
Системный Аналитик

27 Feb, 08:04

5,953

✍️ Content Delivery Network (CDN)

CDN (Сеть доставки контента) — сеть серверов, которые
▫️распределены по разным регионам
▫️совместно работают для ускорения доставки контента пользователям
Основная задача: быстро и надёжно доставлять статические и медиа-данные (изображения, видео, стили, скрипты) независимо от местоположения пользователя


Применение

Когда важно быстро и стабильно доставлять контент:
➡️в крупных веб-приложениях
➡️онлайн-магазинах
➡️стриминговых платформах и соц сетях и тд
Примеры: Selectel , CDNCloud, CDN от Яндекса, CloudFront


Основные понятия

*️⃣ Ориджин (Origin): сервер, где хранятся первоначальные файлы или данные, которые распространяются через CDN. При первом запросе контент загружается с него. Может быть несколько

*️⃣ PoP Point of Presence (точка присутствия) или Edge Node (пограничный узел) : кэширующий сервер, размещенный близко к конечным пользователям. Узлы принимают и кэшируют запросы, уменьшают расстояние между пользователем и данными. Это повышает скорость доступа

*️⃣Purge (очистка): удаление контента на пограничных узлах для последующего обновления из ориджинов

*️⃣Restriction (ограничение): кто может /не может получать доступ к содержимому из кэша. Например, разрешение запросов только из определенных доменных зон, регионов или групп IP-адресов

*️⃣Time to Live, TTL (время жизни): период кэширования на пограничном узле (Edge Node, PoP) до нового извлечение данных


Виды контента

🔷динамический: данные изменяются в реальном времени или по запросу пользователя (данные профиля, месторасположение, корзина покупок).
Уникален для каждого пользователя, его нельзя кэшировать. Но CDN позволяет ускорять его передачу за счет:
оптимальных маршрутов к ближайшему PoP-узлу
шифрования / дешифрование SSL на PoP-узлах для сокращения времени обработки
протоколов ускорения: HTTP/2 и QUIC

🔷статический: неизменные в течение указанного TTL (изображения, CSS, JavaScript и тд). Кэшируется и доставляется с PoP


Пример работы CDN


🟣запрос контента (веб-страниц или видео)
🟣браузер проверяет локальный кэш. Если данных нет / устарели, запрос идет к CDN, то есть к ближайшей точке присутствия (PoP) на основе местоположения пользователя и анализа сети (подробнее см ниже)
🟣 PoP проверяет, есть ли запрашиваемый контент в кэше:
если контент уже есть, PoP отправляет его
если нет, запрос передаётся на сервер ориджина (к бэкэнду) для получения контента
🟣PoP кэширует данные для последующих запросов
🟣пользователь получает контент с ближайшего PoP с минимальными задержками


Кэширование в CDN


🟢контент хранится в точках присутствия (PoP) рядом с пользователями
🟢CDN-кэш обновляется через инвалидацию или истечение срока хранения (TTL).
Связь с бэкэнд и фронтенд кэшем:
☀️бэкэнд может отправлять данные в CDN с TTL или правилами инвалидации в заголовке. При обновлении данных на бэке CDN-кэш может очищаться
☀️фронтенд: браузерный кэш использует HTTP-заголовки и часто кэширует содержимое после CDN

Синхронизация: по правилам инвалидации и версиями URL для одновременного обновления всех уровней кэша — от бэка до фронта через CDN


Балансировка нагрузки


Распределяет трафик между PoP-узлами и серверами внутри них

Для направления запросов к ближайшему PoP-узлу используются способы:
♥️GeoDNS, который ориентируется на геолокацию пользователя
♥️Anycast — на сетевое расстояние до ближайшего узла

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


📎 Материалы
1
. CDN
2. CDN: что такое и как работает технология
3. Что такое CDN: смотрим на примерах
4. Что такое CDN и как это работает?
5. 10 интересных фактов про CDN и скорость сайтов
6. Разбираемся в статусах кеша CDN
7. CDN или Кэширование?

#архитектура



🧑‍🎓 Больше полезного в базе знаний по системному анализу
Системный Аналитик

24 Feb, 08:11

6,602

✍️ Транзакции в Apache Kafka

Kafka поддерживает транзакции, чтобы гарантировать выполнение операций по принципу «всё или ничего»
Такая гарантия доставки называется exactly-once

Подробнее о других типах гарантии доставки
тут

Когда применяется

🔘если требуется согласованность между несколькими топиками
🔘в операциях, где частичное изменение данных недопустимо (в финансовых приложениях, логистике, управлении запасами и заказами


Как работают транзакции в Kafka

продюсер начинает транзакцию, присваивает  уникальный transactional.id. Это идентификатор, который отличает записи транзакций
продюсер отправляет сообщения в одну / несколько очередей с пометкой "транзакционные"
продюсер подтверждает данные (коммит) или отменяет (откат)
Коммит фиксирует сообщения, и они становятся видимы потребителям, в противном случае --  откатываются


ACID в Kafka

◾️атомарность (Atomicity): вся группа сообщений фиксируется сразу
◾️согласованность (Consistency): контроль за статусами сообщений в метаданных
◾️изолированность (Isolation): с помощью настройки read_committed (на стороне консьюмера) потребители могут видеть только зафиксированные данные, пока транзакция не завершена
◾️долговечность (Durability): достигается за счёт репликации и журналов с зафиксированными сообщениями


Плюсы и минусы

💚гарантия целостности операций с использованием ACID
💚защита от дублирования и конфликтов через изоляцию транзакций

💚требуют больше ресурсов, что может снизить производительность
💚поддерживаются с 0.11.0 версии Kafka


Пример транзакции в Kafka

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

Есть два топика в Kafka:
— orders: хранит общую информацию о заказе
— inventory: содержит информацию об изменении запасов после заказа

Шаги для транзакции:
🟡создать продюсера с transactional.id 
🟡отправить сообщения в транзакции: записать детали нового заказа в оба топика orders и inventory
если успешно, фиксируется (коммит) транзакция: сообщения видны для потребителей обоих топиков
если ошибка, транзакция откатывается: ни одно сообщение не попадёт в топики

Результат: транзакция гарантирует, что потребители прочтут согласованные данные


📎 Материалы
1. Изоляция транзакций в Apache Kafka при потреблении сообщений
2. Семантика exactly-once в Apache Kafka
3. Транзакции в Apache Kafka: атомарность публикации сообщений
4. Что такое гарантия доставки сообщений или как избавиться от дублей и потерь в Apache Kafka и других Big Data брокерах

📚 Книги
1.
Kafka в действии -- Дилан Скотт, Виктор Гамов и Дейв Клейн
2. Apache Kafka. Потоковая обработка и анализ данных -- Гвен Шапира, Тодд Палино, Раджини Сиварам, Крит Петти
3. Effective Kafka: A Hands-On Guide to Building Robust and Scalable Event-Driven Applications with Code Examples in Java -- Emil Koutanov (англ)

#интеграции



🧑‍🎓 Больше полезного в базе знаний по системному анализу
Системный Аналитик

20 Feb, 18:25


Системный Аналитик pinned «🔹 БАЗА ЗНАНИЙ ПО СИСТЕМНОМУ АНАЛИЗУ 🚀 Все посты из канала за всё время разложены по полочкам в едином месте — базе знаний 🤓 Наша цель — сделать кладезь знаний системного аналитика 🧠 Какие плюшки вас ждут: 🗂 Все знания в едином месте: кратко, ёмко, без…»
Системный Аналитик

20 Feb, 08:04

8,373

🙂 Архитектурные паттерны (MV(X)

Архитектурные
паттерны — шаблоны для высокоуровневой организации системы.
Определяют основные компоненты системы, их взаимосвязи и взаимодействия

Паттерны MV(X) используются в
🟡мобильных и веб приложениях
🟡банкинге и финансовых системах, где важны четкая структура и гибкость
🟡в играх и графических интерфейсах (для отделения логики от UI и управления сложными связями)

MV(X) — семейство паттернов со схожей структурой
Разделяют приложения на основные компоненты:
Model — отвечает за данные, бизнес-логику, сервисы для работы с БД и сетью (например, класс в ООП, API, библиотека, микросервис и тд)
View — визуальное представление для пользователя, отображение данных из Model
эти компоненты выполняют одни и те же роли во всех паттернах MV(X)
Presenter / Controller / ViewModel - меняются в зависимости от паттерна

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


Рассмотрим некоторые из них:

MVC (Model-View-Controller)

Controller: логика, которая связывает model и view
направляет данные от пользователя к системе и наоборот
напрямую обновляет view

Подходит для небольших / средних приложений
Чем проще Controller, тем лучше

Пример

В веб-приложении для управления библиотекой:
🟡Model: класс Book с полями title, author и методами для работы с книгами
🟡View: HTML-страница с формой для добавления книг и списком всех книг
🟡Controller: обработчик, который принимает POST-запросы на добавление книг и обновляет Model и View

Недостатки

в больших приложениях Controller объемный сложнее поддержка кода
View и Model разделены, но View и Controller тесно связаны тяжелее масштабировать каждый из этих компонентов
View и Controller тестировать сложно из-за тесной связи тестируется в основном Model


MVP (Model-View-Presenter)

Presenter: полностью управляет логикой view
обрабатывает ввод
взаимодействует с моделью
обновляет view через интерфейс, не зависит от конкретной реализации view (как у controller)

Отличие от MVC: связь view и model идет через presenter, а не напрямую

Эффективен в приложениях с высокой нагрузкой на UI,
и где необходимы модульные тесты, т.к. Presenter можно тестировать

Пример

В Android-приложении для управления задачами:
🟡Model: класс task, представляет задачу с полями title, description и методами для изменения состояния
🟡View: UI для отображения списка задач и формы для добавления новой задачи
🟡Presenter: объект, который запрашивает список задач из Model и обновляет View при изменениях

Недостатки
требует создания доп классов и интерфейсов может перегружать простые приложения


MVVM (Model-View-ViewModel)

View взаимодействует с ViewModel через привязку данных

ViewModel
🟡содержит свойства и команды, к которым привязывается View
🟡взаимодействует с Model для извлечения или обновления данных

Эффективен для приложений со сложными структурой данных и интерфейсом

Пример

В WPF-приложении для управления контактами:
Model: класс Contact содержит информацию о контакте
View: UI, показывает список контактов и формы для добавления/редактирования
ViewModel: объект, который загружает данные из Model и обновляет View, а также обрабатывает команды от View

Недостатки
сложно настроить привязку данных
ViewModel может перегружаться лишней логикой


📎 Материалы
1. MVC
2. Достоинства использования MVC архитектуры в разработке клиент-серверного интернет-магазина
3. Что такое MVP архитектура
4. Реализация MVC паттерна на примере создания сайта-визитки на PHP
4. MVC против MVVM — разница между ними
5. Понимание различий: MVC и MVVM
6. Шпаргалка по MV-паттернам для проектирования веб-приложений
7. Архитектурные шаблоны: объяснение MVC, MVP и MVVM
8. Паттерны для новичков: MVC vs MVP vs MVVM


#архитектура #проектирование



🧑‍🎓 Больше полезного в базе знаний по системному анализу
Системный Аналитик

17 Feb, 14:41

8,087

🔹 БАЗА ЗНАНИЙ ПО СИСТЕМНОМУ АНАЛИЗУ 🚀

Все посты из канала за всё время разложены по полочкам в едином месте — базе знаний 🤓

Наша цель — сделать кладезь знаний системного аналитика 🧠

Какие плюшки вас ждут:

🗂 Все знания в едином месте: кратко, ёмко, без воды и с подборками полезных материалов 🔥

🔎 Удобный поиск и навигация: все наши конспекты структурированы по группам навыков СА и есть поиск по тексту — вы не утоните в тоннах воды и часах гуглинга

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

📝 Контент на заказ бесплатно: хотите материал на конкретную тему? Любой покупатель может оставить запрос, и мы сделаем обзор с исчерпывающей подборкой материалов абсолютно бесплатно!

➡️ Приобрести вечный доступ к постоянно обновляемой Базе знаний по цене айтишниой книги можно тут — всего 4900 ₽

P.S. Если нет карты РФ и по любым другим вопросам можно писать сюда: @radale
Системный Аналитик

17 Feb, 08:04

7,014

✍️ ESB / MOM / MQ

🟣ESB (Enterprise Service Bus, шина данных) — посредник для обмена данными между системами. Объединяет системы и приложения в единую интеграционную архитектуру. Управляет бизнес-логикой и маршрутизацией данных

🟡MOM (Message-Oriented Middleware) — промежуточное ПО для асинхронной передачи сообщений между приложениями

🟣MQ (Message Queue) — реализация системы очередей, частный случай MOM

MOM/MQ — не шины данных, но могут быть частью решения, основанного на шине


ESB (Enterprise Service Bus)

🟣управление данными идет через одну точку позволяет контролировать потоки данных
🟣применяется для большого количество приложений с разными протоколами и форматами данных
🟣обеспечивает маршрутизацию, трансформацию и оркестрацию сообщений между ними
🟣часто используется с легаси-системами для интеграции старых приложений с новыми
🟣может направлять сообщения между системами через MOM или MQ

Как работает

1. приложение отправляет данные на ESB через адаптер (например, для БД или веб-сервиса)
2. ESB преобразует формат данных, если требуется
3. шина маршрутизирует сообщение в нужное приложение
4. получатель получает сообщение и обрабатывает его


Шина данных считается устаревшим видом интеграции:

🟣требует сложной настройки и поддержки, т.к. нужно интегрировать много систем с разными протоколами и форматами данных
🟣труднее масштабировать: централизованная шина может не справляться с нагрузкой, в отличие от микросервисов — легко масштабируются независимо.
🟣центральная точка, сбой может привести к остановке всего обмена данными
🟣альтернативы: микросервисы и очереди сообщений (MQ). Они более гибкие: каждое приложение управляет своими связями без централизованного посредника

Пример: Apache Camel, MuleSoft


MOM (Message-Oriented Middleware)

🟣может поддерживать очереди (MQ), публикацию/подписку (Pub/Sub), маршрутизацию, обработку событий
🟣используется, когда не нужно дожидаться ответа от другой системы
🟣полезен в микросервисной архитектуре, чтобы разгрузить приложение и повысить отказоустойчивость

Как работает

1. приложение отправляет сообщение посреднику (MOM)
2. посредник сохраняет сообщение в буфере до тех пор, пока приложение-получатель не будет готово его принять
3. получатель обрабатывает сообщение, когда готов
4. MOM удаляет сообщение из буфера только после его успешной доставки

Пример: ActiveMQ, RabbitMQ - поддерживают и очереди, и другие модели, такие как Pub/Sub


MQ (Message Queue)

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

Пример: IBM MQ


📎 Материалы
1. От хаоса к порядку: как легко интегрировать сервисы с помощью Enterprise Service Bus
2. Шины данных (ESB): зачем компаниям использовать этот инструмент
3. Почему технари против шин данных: middleware, ESB, брокеров сообщений?
4. Как я 10 лет строю интеграцию в банке: от ESB-монолита к целой линейке систем
5. Уже поменяли шину? Наш опыт «переобувания» и разработки интеграционной платформы
6. ESB интеграция: объяснение и цель
7. Что такое MQ? Основные понятия
8. Интеграция на основе сообщений. Преимущества и отличия от других подходов
9. Кафка это шина? API, MQ, шины/ESB. Неочевидные минусы подходов и их плюсы

#проектирование #архитектура



🧑‍🎓 Больше полезного в базе знаний по системному анализу
Системный Аналитик

15 Feb, 15:01

2,345

Для чего современным компаниям на самом деле нужен системный аналитик?

В новом выпуске Sravni Podcast поговорили со Светланой Амелькиной, системным аналитиком Сравни. О том, что SA представляет собой в 2025 году — глазами самого специалиста, разработки и бизнеса.

Внутри видео:

- О скиллах: что важно знать и уметь SA для успешной карьеры
- Взаимоотношения SA с другими командами (разработкой, QA, продактами)
- Мифы о системных аналитиках, в которые пора перестать верить
- Трудоустройство SA: как и зачем интервьюировать работодателя

Посмотреть или послушать выпуск можно здесь:

YouTube
RUTUBE
VK
Яндекс Музыка
Системный Аналитик

14 Feb, 11:08

8,188

Сравнение способов асинхронного взаимодействия API

🧑‍🎓 Описание каждого метода и материалы можно найти в базе знаний по системному анализу

#интеграции #async