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

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

@sys_sa

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

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

https://gosuslugi.ru/snet/67b0613c6411ff785396754a
Subscribers
19.1K
Photos
95
Videos
4
Links
276

Showing posts older than #475 · Back to latest

Older Posts 20 shown
Post #474 10.1K
Camunda

Camunda — платформа для моделирования и автоматизации бизнес-процессов
Основана на открытых стандартах, предоставляет инструменты для создания, исполнения, мониторинга бизнес-процессов

Для чего нужна

🤤 для моделирования и автоматизации бизнес-процессов. Сначала создаются модели процессов в  BPMN 2.0, а затем Camunda исполняет эти модели, управляет порядком выполнения задач и взаимодействует с другими системами
🤤для поддержки гибких процессов, которые изменяются в зависимости от ситуации, с помощью CMMN
🤤для создания и выполнения моделей принятия решений с использованием DMN
🤤для отслеживания процессов в реальном времени, анализа производительности

*DMN (Decision Model and Notation): используется для описания бизнес-правил и логики принятия решений
*CMMN (Case Management Model and Notation): для моделирования и управления неструктурированными, гибкими процессами, которые зависят от событий и контекста


Компоненты

🍃Camunda BPM Engine: ядро платформы, исполняет процессы, смоделированные в BPMN, CMMN, и DMN
🍃Camunda Modeler: десктопное приложение для создания / редактирования моделей
🍃Tasklist: веб-интерфейс для управления и выполнения пользовательских задач, назначенных в рамках процесса
🍃Cockpit: веб-интерфейс для мониторинга и управления запущенными процессами, анализа их выполнения, и устранения проблем
🍃Admin: веб-интерфейс для администрирования платформы, управления пользователями, авторизациями и развертыванием процессов


Примеры применения

Сценарий: Оркестрация процесса обработки заказа
🍃клиент отправляет заказ через веб-приложение
он поступает в Camunda, которая запускает процесс обработки
🍃Camunda вызывает микросервис для валидации данных заказа  (например, проверка наличия товаров на складе)
🍃расчет стоимости: Camunda вызывает другой микросервис для расчета итоговой стоимости
🍃платеж и подтверждение: Camunda направляет запрос на внешний платежный сервис для списания средств.
🍃оповещение склада: Camunda отправляет уведомление на склад для сборки заказа.
🍃Camunda отправляет уведомление клиенту о статусе заказа


Способы интеграции с платформой

😮‍💨 REST API: передача данные о клиентах из CRM-системы в процесс Camunda для авоматического выполнения задач
😮‍💨 Java API: интеграция Camunda в Java-приложение для управления внутренними процессами компании
😮‍💨 Message Queues: обработка событий онлайн и передача их в процессы Camunda
😮‍💨 Connector Framework: для быстрой интеграции с облачными сервисами


Материалы
👇

➿➿➿➿➿➿➿➿
🧑‍🎓 Больше полезного в базе знаний по системному анализу
  • 👍 23
  • 🔥 13
  • ❤ 4
Post #470 13.3K
Паттерны асинхрона: Request-Reply, Publish-Subscribe, Point-to-Point

Архитектурные паттерны Request-Reply, Publish-Subscribe, Point-to-Point используются для взаимодействия между компонентами системы.
Например, в распределенных системах и микросервисных архитектурах

🔘 Request-Reply

Request-Reply — паттерн, в котором клиент отправляет запрос и получает ответ от сервера через очереди сообщений.

Как работает

🔘клиент отправляет запрос в очередь сообщений
🔘сервер извлекает запрос из очереди и обрабатывает его
🔘cервер отправляет промежуточный ответ клиенту (опционально)
🔘сервер помещает ответ в очередь ответов
🔘клиент извлекает ответ

Зачем нужно

Для реализации асинхронного взаимодействия, когда требуется ответ на запрос.
➖подходит для микросервисов и систем, где требуется подтверждение выполнения задач
➖архитектурно можно реализовать через REST API

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


➕уменьшает нагрузку на клиентские и серверные ресурсы за счет асинхронной обработки
➕обеспечивает четкую последовательность действий благодаря использованию очередей

♥️задержка при больших объемах данных
♥️сложность реализации для управления состоянием запросов и ответов

👍 Пример: асинхронные веб-сервисы, обработка задач в распределенных системах., запросы к БД


💙Publish-Subscribe

Publish-Subscribe -- паттерн, в котором публикатор отправляет сообщения множеству подписчиков через брокера сообщений (например, Kafka, RabbitMQ)

Как работает

💙публикатор отправляет сообщение в канал (топик)
💙подписчики этого канала получают сообщение

Зачем нужно

Для рассылки сообщений множеству получателей одновременно.
К примеру, уведомлений или обновлений
API паттерны: подписка на события через WebSockets или другие механизмы push-уведомлений

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

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

♥️нужно управлять подписками и качеством обслуживания
♥️непредсказуемая задержка доставки из-за обработки сообщений подписчиками

💙 Примеры: системы уведомлений, новостные рассылки, обновления в реальном времени, интернет вещей (IoT)


🟣Point-to-Point

Point-to-Point -- паттерн, в котором один отправитель передает сообщение одному получателю через очередь сообщений.

Работает также как Publish-Subscribe, только тут 1 получатель

Зачем нужно

Для гарантированной доставки сообщений одному получателю. Обеспечивает строгую очередность и порядок обработки.
⏩ может быть реализовано с помощью систем управления очередями (например, JMS, RabbitMQ)
⏩API паттерны: с помощью REST API, работающих с брокерами сообщений

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

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

♥️ограничение на одного получателя
♥️потенциальная задержка из-за обработки очереди

➡️ Пример: очереди задач, системы обработки заказов, логирование, финансовые транзакции


#проектирование #архитектура
  • 🔥 26
  • ❤ 12
  • 👍 11
Post #469 10.4K

Forwarded from Библиотека Системного Аналитика

Архитектура_программного_обеспечения_на_практике.pdf9.7 MB
Архитектура программного обеспечения на практике

✍️ Авторы: Л. Басс, П. Клементс, Р. Кацман
🗓 Год издания: 2006 (2-е издание)
🔤 Язык: русский
📚 Объём: 575 стр.

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

Что внутри:
💩 Основы архитектуры ПО и ключевые атрибуты качества (готовность, производительность, модифицируемость).
💩 Безопасность: подходы к защите данных и инфраструктуры.
💩 Тестирование и расширяемость архитектурных решений.
💩 Приёмы документирования архитектуры, полезные всем участникам проекта.
💩 Методика ATAM (анализ компромиссных архитектурных решений) для выбора оптимальных решений.
💩 Реальные примеры успешных архитектур, включая организационные и технические аспекты.

Почему стоит читать системным аналитикам:
✔️ Помогает глубже понять архитектуру ПО и её влияние на бизнес-требования.
✔️ Даёт инструменты для оценки и документирования архитектурных решений, что делает работу с разработчиками эффективнее.
✔️ Учит учитывать не только технические, но и коммерческие аспекты проектирования систем.

Отзыв на книгу от системного аналитика

#архитектура
  • 🔥 34
  • 👍 12
  • ❤ 6
  • 😱 1
Post #461 14.5K
Post #460 11.7K
🌎 Веб-приложения: SPA , MPA, PWA

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

SPA (Single Page Application)

SPA — одностраничное веб-приложение, где основное взаимодействие с пользователем происходит на одной странице.
Контент обновляется динамически, без полной перезагрузки страницы
🔵Применение: при высоком уровнем взаимодействия (соц сети, почтовые клиенты, административные панели)

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

🔵Из чего состоит
💙клиентская часть (HTML, CSS, JavaScript)
💙фреймворки и библиотеки (React, Angular, Vue.js)
💙API для взаимодействия с сервером

🔖Как работает
1. загрузка начальной HTML-страницы
2. загрузка CSS и JavaScript файлов
3. инициализация фреймворка/библиотеки
4. запросы к API для получения данных
5. динамическое обновление DOM с использованием данных из API
6. обновление URL и состояния приложения без перезагрузки страницы
🔵Плюсы и минусы
💛 быстрая загрузка после первого запроса  (кэширование ресурсов и данных на клиенте)
💛 плавные и мгновенные переходы между разделами (виртуальный DOM и клиентская маршрутизации)
💛 меньше нагрузка на сервер (меньше количество запросов к серверу)

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

➡️ Примеры: Яндекс.Почта, ВКонтакте

✳️ Интеграция
⭕REST API, GraphQL для взаимодействия с сервером
⭕Веб-сокеты для реального времени


MPA (Multi Page Application)

MPA — многосерийное веб-приложение, где каждая страница загружается отдельно с сервера

🟢Применение: сайты с большим количеством контента, новостные сайты, интернет-магазины

🟢Зачем нужно: легче интегрировать SEO (оптимизацию сайтов для поисковых систем), т.к. у каждой страницы свой уникальный URL

🟢Из чего состоит
🟢серверная часть (бэкэнд: на PHP, Python, Java и тд)
🟢клиентская часть (HTML, CSS, JavaScript)
🟢система маршрутизации

🔖Как работает
1. пользователь переходит по URL
2. сервер обрабатывает запрос и возвращает HTML-страницу
3. браузер загружает ее отображает
4. при переходе на другую страницу процесс повторяется
5. доп. данные могут загружаться через AJAX-запросы

🟢Плюсы и минусы
➕простота SEO-оптимизации (каждая страница имеет свой статический контент)
➕четкая структура и маршрутизация (страницы обрабатываются отдельно)
➕простая архитектура

➖более длительное время загрузки при переходе между страницами (каждый переход — полный запрос к серверу)
➖высокая нагрузка на сервер из-за частых запросов

➡️ Примеры: Озон, сайт РБК

✳️ Интеграция
🟢REST API для взаимодействия с сервером
🟢встраивание iframe для отдельных модулей


PWA (Progressive Web Application)

PWA — сочетает возможности веб-приложений и нативных мобильных приложений.
Работает офлайн, отправляет push-уведомления и может устанавливаться на устройствах.

⚪Применение: веб-приложения, требующие офлайн-доступа и уведомлений, мобильные версии веб-сайтов

⚪Зачем нужно: обеспечивает нативный пользовательский опыт в веб-приложении, увеличивает вовлеченность пользователей

⚪Из чего состоит
⭕ клиентская часть (HTML, CSS, JavaScript)
⭕ Service Workers для работы офлайн
⭕ Web App Manifest для установки на устройства

🔖Как работает
1. пользователь открывает PWA в браузере
2. устанавливаются Service Workers
3. контент кэшируется для офлайн-доступа
4. пользователь может установить PWA на устройство

⚪Плюсы и минусы
➕офлайн-доступ и кэширование
➕push-уведомления
➕можно установить на устройства

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

➡️ Примеры: Лента.ру, КиноПоиск

✳️ Интеграция
🟡Service Workers для кэширования и работы офлайн
🟡Push API для уведомлений
🟡Web App Manifest для
установки на устройства


#развитие #веб


➿➿➿➿➿➿➿➿
🧑‍🎓 Больше полезного в базе знаний по системному анализу
  • 👍 15
  • 🔥 10
  • ❤ 9
Post #459 12.1K
✍️ Кибератаки и их виды

Виды 

✖️  Межсайтовый скриптинг (XSS , Cross-Site Scripting)

Внедрение вредоносного скрипта на веб-страницу, для браузера пользователя

Атака через ввод данных в формы на сайте или URL-адреса.
Скрипт выполняется в контексте сайта.
Может красть данные, перенаправлять пользователя или выполнять другие вредоносные действия

✅ меры: валидация и экранирование вводимых данных, использование Content Security Policy (CSP)

💙CSP — заголовок HTTP. Ограничивает источники из которых браузер может загружать ресурсы (скрипты, стили, изображения и т.д.).


✖️  Кликджекинг (Clickjacking)

Обман пользователя, чтобы он кликнул на что-то отличное от того, что он видит

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

✅  меры: использование  X-Frame-Options, CSP, фильтров спама,

💙X-Frame-Options — заголовок HTTP. Предотвращает загрузку веб-сайтов в iframe (HTML-элемент для встраивания одной веб-страницы в другую)


✖️  SQL-инъекции

Внедрение вредоносного SQL-кода в запросы к БД

Атака через формы ввода данных, URL-адреса или параметры HTTP-запросов.
Вредоносный SQL-код может извлекать, изменять или удалять данные в БД

✅  меры: использование подготовленных выражений (prepared statements), валидация и экранирование входных данных


✖️ Фишинг (Phishing)

Для получения конфиденциальной информации

Атака через поддельные веб-сайты, электронные письма или сообщения

✅  меры: обучение пользователей, фильтры электронной почты, двухфакторная аутентификация (2FA)


✖️ DDoS атаки (Distributed Denial of Service)

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

Атака происходит через множество скоординированных запросов с различных устройств, часто зараженных вредоносным ПО.

✅  меры: сетевые фильтры, распределенные сетей доставки контента (CDN), системы предотвращения DDoS-атак (Cloudflare, Akamai Kona Site Defender, Imperva Incapsula)


✖️ Атака посредника (MitM, Man-in-the-Middle)

Перехват коммуникаций между двумя сторонами с целью кражи или изменения данных.

✅ меры: использование HTTPS, VPN, шифрование


✖️ Атака «грубой силой» (Brute Force Attack)

Подбор паролей методом перебора возможных комбинаций

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


Способы защиты от кибератак


⏩ Обучение о методах кибератак
⏩ Регулярное обновление антивирусов
⏩ Брандмауэры и IDS/IPS:
  🟡брандмауэры (межсетевые экраны) фильтруют трафик
  🟡IDS (Intrusion Detection System) анализирует сетевой трафик и уведомляет о возможных угрозах
  🟡IPS (Intrusion Prevention System) обнаруживает угрозы и автоматически принимает меры для их предотвращения (например, блокируя подозрительный трафик)
⏩ Шифрование данных
⏩ Многофакторная аутентификация
⏩ Регулярное обновление ПО
⏩ Разделение сети на сегменты для ограничения распространения атак.
⏩ VPN: безопасный удаленный доступ


Для чего знать аналитику?

◾️чтобы идентифицировать и минимизировать риски
◾️включать меры безопасности в архитектуру систем
◾️анализировать инциденты
◾️внедрять защитные механизмы


#безопасность
  • 👍 30
  • 🔥 16
  • ❤ 7
Post #456 13.8K
Системный Аналитик Типы интеграции систем. Преимущества и недостатки Выделяют 4 основных типа интеграции: 1. Файловая интеграция 2. Общая база данных 3. Удалённый вызов процедур 4. Обмен сообщениями 1️⃣ Файловая интеграция. Cистема А передает файл системе Б в определенном…
✉️ Интеграция через файловый обмен

Интеграция через файловый обмен
— один из 4-х главных методов интеграции систем. Системы обмениваются между собой обычными файликами в стандартных форматах, например, CSV, XML или JSON.

Особенности

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

Где используется?

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

Способы

1⃣ Протоколы

🟡FTP (File Transfer Protocol) — простой протокол для передачи файлов, но без встроенной защиты
🟡FTPS (FTP Secure) -- расширение FTP с использованием SSL/TLS для шифрования
🟡SFTP (SSH File Transfer Protocol) — расширение FTP, обеспечивает защищенную передачу данных с использованием SSH (Secure Shell).

✨SSH — сетевой протокол прикладного уровня для защищенного соединения между клиентом и сервером

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

3⃣ Облачные сервисы: удаленные серверы для хранения файлов с доступом через интернет (например, AWS S3, Google Drive)

4⃣ Отправка файлов как вложения по электронной почте
🧑‍🏫есть ограничения на размер файлов и проблемы с безопасностью и конфиденциальностью данных
🧑‍🏫актуально для небольших файлов и нечастых обменов


Принцип работы FTP, FTPS, SFTP

FTP
➡️клиент подключается к серверу
➡️вводит логин, пароль
➡️файлы передаются в нешифрованном виде через отдельный порт
➡️отключение клиента от сервера

FTPS
➡️подключается с использованием SSL/TLS для шифрования
➡️вводит логин, пароль. Передаются по защищенному каналу
➡️файлы передаются в зашифрованном виде через защищенный канал
➡️отключение

SFTP
➡️подключается с соединением через SSH
➡️вводит логин, пароль / использует SSH-ключи
➡️файлы передаются в зашифрованном виде через SSH-соединение
➡️отключение


Пример использования

В
ETL процессе:
➡ извлечение: использование SFTP для загрузки CSV файлов с данными
➡ преобразование: чтение файлов с данными, удаление дубликатов, приведение дат к единому формату, агрегация данных.
➡ загрузка: передача обработанных данных через FTPS на сервер БД для дальнейшего анализа

Обмен данными между отделом логистики и складом
➡ отдел логистики создает файлы с информацией о грузах в формате XML
➡ логистика загружает файлы на защищенный SFTP-сервер
➡ склад скриптом скачивает их и импортирует


Как обеспечить безопасность

🟧 SFTP: использование SSH для шифрования данных и аутентификации пользователей обеспечивает безопасную передачу данных.
🟧 Шифрование данных: При использовании облачных хранилищ или общих сетевых дисков рекомендуется шифровать файлы перед передачей.
🟧 Контроль доступа: Настройка прав доступа и использования аутентификации для ограничения доступа к файлам.
🟧 Антивирусная защита: Проверка файлов на вирусы и вредоносные программы перед и после передачи.
🟧 Логирование и мониторинг: Ведение журналов передачи файлов и мониторинг активности для обнаружения и предотвращения несанкционированного доступа.


Сервисы и приложения

➡️ FTP-клиенты: FileZilla, Cyberduck, CuteFTP
➡️ Интеграционные платформы: Mulesoft, Boomi, Talend для автоматизации обмена файлами
➡️ Сетевые файлообменники: NAS (Network Attached Storage), SAN (Storage Area Network)


#интеграции
  • 🔥 31
  • 👍 15
  • ❤ 12
  • 🤡 1
Post #448 17.7K
Системный Аналитик Основы Kafka – что нужно знать аналитику Неделей ранее мы рассматривали основные понятия очередей сообщений. Пришло время копнуть чуть глубже и познакомиться с Кафкой. Apache Kafka – популярный брокер сообщений с открытым исходным кодом. Применяется в …
Apache Kafka

Apache Kafka – распределённая система для обработки данных в режиме реального времени.
Работает как почта — одни сервисы передают туда сообщения, а другие — получают.
Называют брокером сообщений, так как выступает в качестве посредника


Компоненты

🟣Продюсеры — приложения, которые публикуют данные
🟣Консьюмеры — приложения, которые читают

⚪️Топики – каналы, куда продюсеры публикуют сообщения. Могут иметь множество подписчиков (консьюмеров)
⚪️Партиции – части топиков для параллельной обработки данных.
Сообщения в партиции хранятся в строгом порядке

🟣Брокеры — серверы, которые принимают, хранят и передают сообщения.
В кластере их может быть несколько для отказоустойчивости и масштабируемости
🟣Зукипер — сервис для координации. Управляет конфигурацией кластера, отслеживает состояние брокеров, топиков и партиций

Принцип работы


*️⃣Публикация: продюсер отправляет данные в топик, выбирает партицию для записи (с помощью ключа сообщения, по алгоритму round-robin)

*️⃣Хранение: сообщение записывается в выбранную партицию на одном из брокеров.
Происходит репликация (об этом далее)

*️⃣Чтение: консьюмер запрашивает данные из топика, Kafka направляет консьюмера к соответствующей партиции.
Читает, начиная с последнего прочитанного сообщения (офсета).

*️⃣Обновление офсетов: консьюмер периодически обновляет свой текущий офсет (в Zookeeper / в самом Kafka, зависит от настройки)
Это позволяет возобновить чтение с правильного места в случае сбоя.


Репликация данных

✨Реплика в Kafka – копия партиции топика, хранится на другом брокере для обеспечения надежности и отказоустойчивости.

✨Лидер — основная копия партиции, которая обрабатывает все операции записи и чтения.
Фолловеры — дополнительные копии, которые синхронизируются с лидером.

Как работает?


➖Сообщения записываются в лидера и затем копируются на фолловеров
➖Фолловеры следят за лидером и обновляются в реальном времени
➖Если лидер выходит из строя, один из фолловеров становится новым лидером для непрерывности работы

✨Replication factor — количество реплик для каждой партиции. Например, фактор репликации 3 означает 1 основную копию и 2 резервные.


Типы доставки сообщений

🟠At most once: сообщение может быть доставлено максимум один раз, возможны потери
🟠At least once — как минимум один раз, возможны дублирования
🟠Exactly once — ровно один раз, без потерь и дублирования

Надежность доставки


Продюсеры могут настроить количество подтверждений (acks) от брокеров
😀acks=0: Без подтверждений, низкая надежность.
😀acks=1: Подтверждение от лидера, средняя надежность.
😀acks=all: Подтверждение от всех реплик, высокая надежность.


Способы Интеграции с Kafka


*️⃣Прямое подключение: через стандартные клиенты (Java, Python, Go и др.)
*️⃣Коннекторы Kafka Connect: для интеграции с БД, хранилищами и др.
*️⃣Потоковые платформы: Apache Flink, Apache Spark и др


Примеры

Синхронная работа


⏺Синхронная передача: приложения отправляют данные и ожидают подтверждения от Kafka
☺️ параметр acks=all у продюсера, чтобы дождаться подтверждения от всех реплик перед продолжением

⏺Запрос-ответ: консьюмер отправляет запрос и ожидает ответа в другом топике.
☺️ уникальные ключи для корреляции запросов и ответов

Асинхронная

⏺Логирование и мониторинг: отправка логов без ожидания подтверждения
☺️ параметр acks=1 или acks=0 для продюсеров, чтобы минимизировать задержку

⏺Обработка событий
☺️ группа консьюмеров параллельно обрабатывает события

⏺ETL-процессы: загрузка в хранилища через Kafka
☺️ Kafka Connect для интеграции с источниками и приемниками


Kafka как хранилище данных

😀Можно настраивать время хранения сообщений от минут до нескольких лет
😀Сообщения хранятся в сегментах и индексируются ✨ эффективное управление большими объемами данных
😀Высокая скорость записи и чтения данных

Ограничения
😀Нет сложных запросов и транзакционной поддержки
😀Старые данные автоматически удаляются по истечению срока
😀Иногда нужна интеграция с др системами (HDFS, S3, реляционные БД)


📎
Подборка материалов в этом посте

#интеграции
  • 👍 68
  • ❤ 27
  • 🔥 9
  • ⚡ 2
  • 👎 1
Post #446 15K
🔵 Уровни изоляции транзакций в базах данных

Уровни изоляции в БД управляют тем, как изменения одной транзакции видны другим транзакциям
💙помогают избежать конфликтов и ошибок, когда много пользователей работают с БД одновременно
💙позволяют балансировать между производительностью системы и целостностью данных

Изоляция является одним из ключевых компонентов ACID

Напомним, транзакция в БД — последовательность операций, выполняемых как единое целое.
Должны быть либо полностью выполнены, либо полностью отменены.
Это обеспечивает целостность данных.

Где применяются уровни изоляции

💙в реляционных базах данных (MySQL, PostgreSQL, Oracle и SQL Server)
💙в системах с высоким количеством параллельных транзакций (финансовые, интернет-магазины, системы бронирования)


Основные механизмы

В основном реализуется через механизмы СУБД:
➖Блокировки: предотвращают одновременное чтение и запись одних и тех же данных
➖MVCC: версионирование данных для каждой транзакции

Иные:
➖Паттерны проектирования: например, очереди задач
➖Транзакционные менеджеры: внешние компоненты в распределенных системах


Аномалии при параллельной обработке транзакций

🔘Потерянное обновление: две транзакции одновременно изменяют одни и те же данные, и одно из изменений теряется

0️⃣«Грязное» чтение: транзакция читает данные, которые были изменены другой транзакцией, но еще не зафиксированы

0️⃣Неповторяемое чтение: транзакция повторно читает данные и видит разные значения из-за изменений, внесенных другой транзакцией

0️⃣Фантомная запись: транзакция повторно выполняет запрос и видит новые строки, добавленные другой транзакцией


Уровни изоляции



💙 Read Uncommitted (Чтение неподтвержденных данных)

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

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

➖Возможны все проблемы: "грязное" чтение, повторное обновление, неповторяемое чтение, фантомные записи


💙 Read Committed (Чтение подтвержденных данных)

Транзакции могут читать только те изменения, которые были зафиксированы
Механизм: блокировка строк на запись до завершения транзакции

💙Когда важна балансировка между целостностью данных и производительностью
💙 Система интернет-магазина: заказы читаются только после их подтверждения
💙 Большинство OLTP систем

➕избегается "грязное" чтение и повторное обновление
➖неповторяемое чтение и фантомные записи


💙 Repeatable Read (Повторяемое чтение)

Транзакция A читает данные, они блокируются для изменения другими транзакциями.
Транзакция B не может изменять эти данные, пока транзакция A не завершится, но может добавлять новые строки.
Транзакция A повторно читает те же данные, но не видит новых строк.
Механизм: блокировка всех прочитанных строк до завершения транзакции

💙Когда критично избегать несогласованность данных
💙 Финансовая система: состояние счета должно быть неизменным на протяжении всей транзакции

➕избегаются "грязное" чтение, неповторяемое чтение, повторное обновление
➖фантомные записи


💙 Serializable (Сериализуемость)

Обеспечивает полную изоляцию транзакций, делая их последовательными, как если бы они выполнялись по очереди.
Механизм: блокировка на чтение и запись

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

➕ Избегаются все аномалии


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

➖Требования: какие аномалии допустимы
➖Регулирование: законодательные и отраслевые стандарты
➖Тестирование: для оценки консистентности данных и нагрузки на систему

Чем выше уровень изоляции, тем:
💙больше шансов блокировки транзакций
💙выше целостность данных

💙меньше ошибок из-за параллельных транзакций
💙меньше производительность системы

#бд
  • 👍 38
  • 🔥 11
  • ❤ 8
  • 💩 1
Post #443 12.3K
🌎 Синхронизация времени по NTP

NTP (Network Time Protocol)
— протокол для синхронизации времени между компьютерами в сети.
Позволяет устанавливать точное время на устройствах, синхронизируя их часы с часами специальных серверов времени (NTP-серверами)

Как работает по шагам

1⃣Запрос времени: клиент отправляет запрос на сервер NTP с собственной меткой времени
отправления (T1)
2⃣ Ответ от сервера: сервер NTP записывает время получения запроса (T2), отправляет ответ с
временем отправления (T3) и временем получения (T2)
3⃣ Получение ответа: клиент сохраняет время получения ответа (T4) и рассчитывает сетевую
задержку и смещение во времени своих часов для их корректировки.


Для чего нужен


Согласованность временных меток
➡ обеспечивает, чтобы все устройства в распределённых системах и сетях имели одинаковое время. Это позволяет точно фиксировать время событий и транзакций.
* Распределённая система —группа независимых компьютеров, которые работают вместе и обмениваются данными по сети для выполнения общих задач.

Обеспечение безопасности

➡ для своевременного мониторинга и реагирования, для проверки подлинности транзакций или предотвращения повторных атак

Координация действий между системами
➡помогает координировать действия между серверами и другими устройствами.

Работа распределённых БД
➡для правильного применения изменений и согласования данных между различными узлами.

Для правильного воспроизведения мультимедиа
➡ поток контента идёт пакетами данных, сбой времени в одном пакете приведет к изменению его места в потоке, и последовательность видео нарушится


За счет чего достигается высокая точность


😀 Высокоточные источники времени: использует атомные часы и GPS-синхронизированные серверы времени UTC.
UTC (всемирное координированное время) обеспечивает единый стандарт времени для всего мира.
Время с атомных часов и серверов UTC распространяется через сеть
😀 Алгоритмы коррекции задержек: используются ы для оценки и коррекции задержек в сети между клиентами и серверами времени. Это позволяет компенсировать задержки и улучшать точность синхронизации


Где применяется

😀Сетевые инфраструктуры: для согласования времени на маршрутизаторах и серверах
😀Финансовые системы: для точной фиксации времени транзакций
😀Системы безопасности: для точного ведения логов событий
😀Облачные сервисы и дата-центры: для координации операций между серверами


Кейсы использования

У пользователя украли данные карты и хотят снять деньги
💠Пользователь в ту же секунду блокирует карту
💠Банковская система отсортирует по времени входящие сообщения о снятии денег и о блокировке карты
💠Если часы пользователя, отстают, мошеннику удастся снять деньги
✅ Если обмен сообщениями проходит с использованием NTP, клиент успеет спасти деньги

Компилятор при пересборке проверяет время изменения файла
🟡Если исходный файл имеет большее время, чем его объектный файл, значит, исходный файл был изменен, и его нужно перекомпилировать
🟡При отставании часов распределённой системы даже на миллисекунду результат компиляции будет состоять из старых и новых файлов. Это делает отладку невозможной
✅ Если исходные файлы из разных частей системы передаются через NTP, то с отладкой кода проблем нет


Классы точности NTP-серверов


Цифра - уровень по отношению к UTC
🟡 Stratum 0 — референсные часы (атомные, GPS), обеспечивают наиболее точное время.
Это устройства не подключены напрямую к сети, служат основным источником
времени для серверов Stratum 1
🟡 Stratum 1 — серверы, напрямую подключенны к Stratum 0.
Самые точные серверы, могут учитывать время с точностью в одну триллионную долю секунды.
Они используют сложное и дорогое оборудование и обычно
не отвечают на запросы конечных пользователей, обслуживают только серверы более
низкого уровня.
🟡 Stratum 2 и выше — получают данные от Stratum 1 и работают с погрешностью примерно 0,001 секунды.
🟡Stratum 3 — получают данные от stratum 2, с точностью до 0,05 секунды. Дальше идут уровни 4, 5 и т.д.


#инфраструктура
  • 👍 30
  • 🔥 9
  • ❤ 4
Post #439 13.8K
⏺Grafana: Обзор и возможности

Grafana — инструмент для визуализации и анализа данных.
Позволяет создавать интерактивные графики, диаграммы и дашборды на основе различных источников данных.

Возможности

Подключение к различным источникам данных
〰️поддерживает широкий спектр источников данных: Prometheus, InfluxDB, Graphite, Elasticsearch, MySQL, PostgreSQL и другие
〰️возможность работы с несколькими источниками данных одновременно.

Создание интерактивных дашбордов
〰️интуитивный интерфейс для создания и настройки дашбордов
〰️поддержка множества типов графиков и визуализаций: линии, гистограммы, тепловые карты и др.
〰️добавление пользовательских панелей с метриками и виджетами

Алертинг
〰️настройка оповещений на основе заданных условий и метрик
〰️поддержка различных каналов уведомлений: Email, Slack, PagerDuty и др.
〰️создание сложных правил для оповещений с использованием логических выражений

Управление пользователями и ролями
〰️поддержка многопользовательского режима с разграничением прав доступа
〰️интеграция с системами аутентификации: LDAP, OAuth и др.
〰️настройка ролей и разрешений для управления доступом к данным

Плагины и расширения
〰️установка и использование плагинов для расширения функциональности
〰️плагины для дополнительных источников данных, новых типов визуализаций и интеграции с внешними системами

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


Примеры применения
🔘мониторинг серверов и приложений: визуализация и анализ метрик производительности серверов, сетевых устройств и облачных ресурсов
🔘DevOps и CI/CD: отслеживание и анализ процессов CI/CD, включая скорость сборки, качество кода, успешность и время выполнения тестов.
🔘мониторинг производительности приложений, включая задержки, количество запросов, использование ресурсов и другие метрики.
🔘 бизнес-анализ: создание дашбордов с отчетами по ключевым бизнес-метрикам (продажи, конверсия, пользовательская активность)
🔘 интернет вещей (IoT): визуализация и мониторинг данных с IoT-устройств (температура, влажность, уровень заполнения и другие показатели)

Недостатки
🟣Некоторые расширенные возможности доступны только в платных версиях (Grafana Cloud или Grafana Enterprise)
🟣Эффективность работы зависит от качества и производительности источников данных
🟣Для максимальной эффективности требуется правильная настройка и регулярное обновление

Экосистема Grafana
😥Grafana Loki: система для управления логами
😥Grafana Tempo: для распределенного трейсинга
😥Grafana Cloud: услуга для облачного хостинга и управления всей экосистемой Grafana
😥Grafana Agent: агент для сбора метрик и логов

#инструменты
  • 👍 25
  • ❤ 9
  • 🔥 8
Post #435 15.3K
🛡 Изолированность транзакций в БД: MVCC, блокировки

Изолированность транзакций в БД гарантирует, что параллельные транзакции не влияют друг на друга. Предотвращает видимость промежуточных результатов транзакции для других до её завершения, сохраняя целостность данных
Это одно из свойств ACID

Как обеспечить изолированность

🟣 MVCC (multiversion concurrency control) — создание отдельной версии данных для каждой транзакции
🟠 Блокировка — ограничение доступа к данным


MVCC

Принцип работы


Во время транзакции создается копия данных, в которой происходят изменения
➖Если транзакция завершилась успешно, копия становится основным источником, старая версия — удаляется
➖Если во время транзакции произошла ошибка, старая версия остается основной, а копия удаляется

Пример

Два пользователя одновременно меняют карточку товара
⚪️ Они открывают карточку товара, создается две копии записи о товаре
⚪️ Одновременно меняют поля товара. Обе копии могут стать основной записью
⚪️ Перед сохранением БД пытается слить две записи в одну
▫️ Если конфликтов нет (менялись разные поля), транзакции завершаются успешно
▫️ Если появились конфликты, обе транзакции откатываются


Блокировки

Примеры видов блокировок


*️⃣ Централизованная
*️⃣ Распределенная
*️⃣ Независимая


😀 Централизованная
Приложение-координатор дает доступ к БД или отклоняет запрос, если БД занята.

Алгоритмы выбора координатора

⏩ Забияка
🟡 рассылается сообщение о выборе координатора
🟡 отвечают все неупавшие приложения
🟡 инициатор выбирает приложение с наибольшим ID

⏩ Выбор в кольце
🟡процессы образуют кольцо, передавая сообщение о выборе координатора, пропуская неотвечающие узлы
🟡по завершению инициатору приходит список "живых" приложений
🟡инициатор выбирает приложение с наибольшим ID

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


😀 Распределенная
Каждый процесс отправляет запросы на доступ к ресурсу всем другим (и себе)

Действия получателя:
🟠ОК: если другое приложение не имеет доступа и не запрашивает его
🟠В очередь: если получатель уже использует ресурс
🟠Сравнение времени: если получатель планирует использовать ресурс, он
сравнивает время запроса со времени своего запроса
— ОК: если у входящего сообщения время меньше
— В очередь: если время больше
После отправки запросов приложение останавливается, ждет подтверждения от остальных.
Далее отправляет OK всем в своей очереди и чистит ее

📍Проблемы: при сбое одного из процессов могут возникнуть задержки, блокирующие
доступ к ресурсу

😀  Независимая
Минимизация блокировок за счет работы с копиями данных.

*️⃣Каждая транзакция работает изолированно со своей копией данных
*️⃣Перед фиксацией изменений, проводится проверка на наличие конфликтов.
  — если не обнаружено, изменения транзакции применяются к основной БД
  — если обнаружено (например, другой транзакцией изменены те же данные), текущая транзакция откатывается и, возможно, повторяется

📍Проблемы: частые откаты при высокой конкуренции, сложность управления копиями данных


Пример блокировки в БД


Две транзакции (T1 и T2) работают с таблицей accounts (информация о балансах пользователей)

🟡T1: Начинает транзакцию, читает баланс аккаунта
🟡T1: Запрашивает блокировку на аккаунт для обновления баланса
🟡T2: Начинает транзакцию и пытается прочитать баланс аккаунта
⏩ Блокировка: т.к.T1 удерживает блокировку, T2 ждет, пока T1 завершит свою транзакцию
🟡T1: обновляет баланс и фиксирует транзакцию, освобождая блокировку
🟡T2: читает обновленный баланс


Что выбрать для обеспечения изолированности?

🟣 MVCC
    ▫️если важен параллельный доступ
    ▫️скорость обработки транзакции
    ▫️когда важно, чтобы чтения не блокировали записи
🟠Блокировки
    🟡если нельзя допустить любую рассогласованность данных
    🟡важна строгая последовательность данных
    🟡недостаточно памяти для хранения копий


#бд
  • 🔥 18
  • ❤ 9
  • 👍 9
  • ⚡ 4
Post #433 15.3K
✔️SQA: обеспечение качества ПО

SQA (Software Quality Assurance) — процесс для обеспечения соответствия ПО установленным стандартам и требованиям.
Это система подходов, которая интегрирована в процесс разработки, чтобы гарантировать качество на всех этапах.

Почему важно SQA?

💛 Обеспечение соответствия ПО требованиям и ожиданиям пользователей
💛 Раннее выявление и устранение дефектов
💛 Снижение затрат на исправление ошибок на поздних стадиях разработки
💛 Повышение доверия и лояльности пользователей

Основные аспекты SQA

🟢Планирование и анализ требований: определение требований к качеству и разработка плана его обеспечения

🟢 Процессы и методологии разработки: внедрение практик разработки (Agile, Scrum, DevOps)

🟢 Документирование и стандарты: создание и поддержка документации, стандартизация процессов и методов тестирования.

🟢 Тестирование ПО: проверка соответствия ПО требованиям, поиск и устранение дефектов.
  
🟢Контроль качества (QC): мониторинг и проверка соответствия результатов требованиям и стандартам.

🟢Анализ и улучшение процессов


Примеры применения

➡️ внедрение методологии Agile для улучшения взаимодействия между командами разработки и тестирования
➡️ создание стандартов кодирования и тестирования для поддержания качества на всех этапах разработки
➡️ проведение аудитов процессов разработки и тестирования, автоматизация тестирования

Примеры атрибутов качества

Внешние
⏪ Удобство установки / удаления
⏪ Целостность (насколько хорошо система защищает от неточности)
⏪ Совместимость (взаимодействие и обмен данными с другими системами и компонентами)
⏪ Производительность
⏪ Надежность
⏪ Устойчивость
⏪ Безопасность
⏪ Удобство использования

Внутренние
⏩ Эффективность использования ресурсов системой
⏩ Возможность модификации
⏩ Переносимость (насколько легко заставить систему работать в другой
операционной среде)
⏩ Возможность повторного использования
⏩ Масштабируемость
⏩ Проверяемость и тестируемость (как быстро можно протестировать систему

Инструменты и методы

🟢для управления тестированием: Jira, TestRail
🟢для авто-тестирования: Selenium, TestComplete
🟢системы контроля версий и CI/CD: Git, Jenkins
🟢для статического анализа кода: SonarQube


Отличие от нефункциональных требований


🔵QA охватывает весь процесс разработки и контроля качества ПО, обеспечивая соответствие всем требованиям (функциональным и нефункциональным).
🟢 Нефункциональные требования определяют конкретные критерии, которым должна соответствовать система для обеспечения качественного функционирования, не затрагивая процесс их обеспечения  (производительность, безопасность, масштабируемость, надежность и удобство использования)


#требования
  • ❤ 12
  • ⚡ 8
  • 👍 4
  • 🔥 4
Post #430 13.4K
🎙 Бесплатные выпуски подкаста «Аналитики у микрофона» для и про аналитиков

Ссылки на выпуски собрали в один пост:

1 сезон

👉 Удаленка
Делимся своим опытом, с чем столкнулись, какие трудности нас ждали в таком формате работы и как мы с ними справляемся или не справляемся.

👉 Дарья Перминова. Legal Tech, вопрос «зачем?» и динозаврики
Обсудили с гостем ее работу в продуктовой компании и историю ее карьерного пути. Даша также поделилась с нами своими методами найма аналитиков и размышлениями о смене работы. В выпуске поговорили о продуктовой разработке, о том, какие бывают аналитики в этой сфере, как важно уметь учиться, о материнстве и о многом другом! 

👉 Алёна Ельцова. Из бухгалтера в аналитики 1С или В переговорку с самоваром
Алёна рассказала о своем карьерном пути, о том, как она пришла к ведению профессионального блога и к созданию авторского курса "Супер-ЗУПер", и о своих планах на будущее.
Поговорили о том, что ждёт бухгалтеров и кадровиков при переходе в новую профессию Аналитик 1С и нужно ли им это.

👉 Татьяна Паваляева. Коммуникации на удаленке: свет, камера, микрофон или как налаживать отношения
В выпуске поговорили про команду, про камеры, про то как НЕ читать между строк. Подняли тему семьи, детей и переработок. Обсудили даже здоровье.

Бонусные выпуски 1 сезон, интервью с теми, кто стоит рука об руку с аналитиками

👉 Евгений Жильцов про тестировщиков
Тестировщик- кто это? Чем занимается? Как может помочь аналитику?

👉 Марина Трушникова про руководителей проектов
Обсудили, чем занимается РП, как обучиться и попасть в эту сферу, где граница работы РП и аналитика, а также затронули тему коммуникаций и пофантазировали о том, что ждет эту роль с развитием технологий.

👉 Евгений Руднев про бизнес-аналитиков
Кто такой бизнес-аналитик и для чего он нужен бизнесу?
Что общего у бизнес-аналитика и следователя?
Какими качествами должен обладать бизнес-аналитик?
Почему коммуникации намного важнее знания нотаций?
Где учиться на бизнес-аналитика и как развиваться в профессиональном плане?

2 сезон

👉 Подкаст в подкасте
Зачем мы делаем подкасты? Зачем мы слушаем подкасты? Зачем мы участвуем в других подкастах? Вопрос «зачем?» прозвучал в выпуске очень много раз, как мы любим, постарались поделиться нашим мнением.

👉 Татьяна Макарова. В поисках идеальной работы
Обсудили важные моменты, на которые стоит обратить внимание на собеседовании, чтобы избежать неприятных ситуаций и не жалеть потом о своем выборе. 

#подкасты
  • 👍 14
  • 🔥 9
  • ❤ 4
Post #429 34K
С праздником!
  • 🎉 131
  • 🤣 46
  • ❤ 19
  • 😁 10
  • 🔥 4
  • ⚡ 3
  • 👎 1
Post #428 16.9K
✨ ETL и ELT

Это способы доставки данных из источников в централизованную систему (хранилище)

Ключевое отличие: ГДЕ и КОГДА выполняются преобразование и загрузка данных:
🟠в ETL данные трансформируются перед загрузкой в целевую систему
🟢в ELT данные загружаются сначала, а трансформируются уже в целевой системе


⏺ ETL (Extract, Transform, Load)

Как работает по шагам:
1⃣Извлечение "сырых" данных из различных источников (БД, файлов, API)
2⃣Трансформация их в нужный формат или структуру, включая очистку, нормализацию, объединение
3⃣Загрузка в целевую систему (например, хранилище данных)

Когда эффективны

✨Когда данные поступают из разнородных источников и требуют преобразований перед загрузкой в целевую систему
➡ данные более точные, качественные и совместимы с аналитическими инструментами
➡ удобнее проводить дальнейший анализ
✨При работе с хранилищами данных OLAP, легаси-системами и реляционными БД. Не имеет поддержки озёр данных

Примеры применения

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

➡️объединение данных о продажах, клиентах и товарах из различных источников в аналитическое хранилище для прогнозирования спроса и анализа покупательского поведения

Минусы

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


⭕️ ELT (Extract, Load, Transform)

Как работает по шагам:
❤️Извлечение данных из источников
🩷Загрузка в целевую систему без предварительной обработки (промежуточной БД нет)
🩷Трансформация в целевой системе (например, с помощью SQL-запросов в хранилище данных)

Когда эффективны

Для быстрой загрузки и обработки больших объемов данных, т.к. извлекает и загружает в целевую систему (например, облачное ХД) сырые данные.
А трансформация происходит после загрузки
➡️ это позволяет при преобразовании данных использовать мощности целевой системы

Когда использовать

✨для больших объемов данных, где важна быстрая загрузка
✨когда целевая система обладает достаточными ресурсами для выполнения преобразований данных
✨можно использовать с облачными хранилищами и озёрами данных

Примеры применения


➡️ загрузка логов серверов, данных из соц сетей или IoT-устройств в хранилище данных, а затем их трансформация для аналитики

➡️ загрузка сырых данных из различных бирж в облачное хранилище, где выполняется очистка, агрегация и анализ данных для создания инвестиционных стратегий

Минусы

— целевая система должна быть достаточно мощной для выполнения трансформаций
— могут появится неконсистентные данные в целевой системе до выполнения всех трансформаций


⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу

#архитектура #проектирование
  • 👍 41
  • ❤ 10
  • 🔥 6
Post #401 16.8K
Производительность API: краткий обзор способов

1⃣ Кэширование

Временное хранение часто используемых ответов
💛 снижение время отклика, уменьшение нагрузки на сервер за счет повторного использования данных
💛 риск устаревания данных, сложность управления сроками жизни кеша
➡️ Применяется при частых запросах к неизменяемым или редко изменяемым данным

2⃣ Batch-запросы

Объединение нескольких запросов в один для сокращения количества обращений к серверу
💛 снижение количества сетевых вызовов;
💛 повышение производительности за счет групповой обработки запросов
💛 увеличение сложности обработки на сервере, что может вызвать задержки;
💛может усложнится обработка ошибок, т.к. все запросы обрабатываются вместе
➡️ Когда клиенту нужно выполнить несколько связанных запросов одновременно.

3⃣ Chunked-запросы

Разделение большого запроса или ответа на более мелкие части (чанки), которые отправляются последовательно
💛 улучшение обработки больших объемов данных за счет поэтапной передачи
💛 снижение вероятности тайм-аутов при передаче больших файлов
💛 сложнее реализация и координация частей запроса, возможны задержки между частями
➡️ При работе с большими объемами данных, например, загрузка файлов

4⃣ Rate Limiting

Ограничение количества запросов за определенный промежуток времени
💛 защита сервера от перегрузок за счет контроля нагрузки
💛 исключение злоупотребления API
💛 может вызвать неудобства у пользователей при жестких ограничениях
требует мониторинга и настройки
➡️ Для защиты от DDoS-атак и управления ресурсами сервера

5⃣ Retry

Повторение неудавшихся запросов
💛 повышает надежность взаимодействия, снижает влияние временных ошибок
💛 увеличение нагрузки на сервер, риск дублирования операций
➡️ При временных сбоях в сети или сервере, для критичных операций, требующих гарантированной доставки

6⃣ Timeout

Установка максимального времени ожидания ответа
💛 предотвращение долгих ожиданий
💛 освобождение ресурсов
💛 обнаружение проблем с задержками
💛 возможны сбои при медленной работе сервера, требует точной настройки
💛 неправильно настроенные тайм-ауты могут привести к преждевременным отказам
➡️ Для предотвращения зависания запросов и оптимизации ресурсов

7⃣ Pagination

Разделение результатов на страницы
💛 снижение нагрузки на сервер за счет обработки небольших частей данных
💛 улучшение скорости обработки
💛 увеличение сложности навигации по данным
💛 усложнение реализации API
➡️ Для работы с большими объемами данных (списки, поисковые результаты)

8⃣ Compression

Сжатие данных перед передачей
💛 снижение объема данных, повышение скорости передачи
💛 требует дополнительноых и ресурсов на сжатие и разжатие данных
➡️ Для уменьшения трафика


Верхнеуровневые (архитектурные) способы

😈 Load Balancing

Распределение нагрузки между серверами
➕улучшение масштабируемости и устойчивости за счет равномерного распределения запросов
➕повышение доступности системы
➖увеличение сложности настройки и управления
➖требуется мониторинг и управление балансировщиками нагрузки
➡️ Для высоконагруженных систем

😈 CDN (Content Delivery Network)

Использование сети серверов для кэширования и доставки контента
➕снижение времени отклика за счет храненич контента на серверах, расположенных ближе к пользователям
➕снижение нагрузки на основной сервер за счет распределения на несколько серверов
➖стоимость использования и сложность настройки
➖зависимость от стороннего провайдера
➡️ Для ускорения доставки статического контента (изображения, видео и файлы)

😈 Асинхронное взаимодействие

Выполнение операций без ожидания завершения, позволяя другим процессам продолжать работу
➕производительность за счет параллельной обработки задач
масштабируемость, т.к ресурсы не блокируются ожиданием завершения операций
➖сложность разработки и отладки из-за необходимости обработки асинхронных событий
➖сложность сложность управления состоянием и синхронизации данных
➡️ Для долгих операций (сетевые запросы, обработка больших объемов), без блокировки основного потока выполнения


⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу

#api
  • 👍 59
  • 🔥 17
  • ❤ 12
Post #398 17.1K
🔵 Колоночные БД, Cassandra vs PostreSQL

В колоночной БД данные хранятся и обрабатываются по столбцам, а не по строкам.

Все значения одного столбца хранятся вместе, отдельно от значений других столбцов.

В строковой БД данные хранятся построчно:
🟡[1, 2024-01-01, Телефон, 500]
🟡[2, 2024-01-02, Ноутбук, 1000]
🟡[3, 2024-01-03, Планшет, 300]

В колоночной — по столбцам:
▫️ID: [1, 2, 3]
▫️Дата: [2024-01-01, 2024-01-02, 2024-01-03]
▫️Продукт: [Телефон, Ноутбук, Планшет]
▫️Цена: [500, 1000, 300]

Чтение: если нужно найти все цены, БД сразу читает столбец "Цена", не проходя по каждой строке.


Особенности

*️⃣Данные одной колонки сохраняются вместе на диске. Каждая колонка хранится отдельно (в строковых — вместе)
*️⃣Хранят все ячейки, которые относятся к колонке, в виде непрерывной записи — это и делает выполнение операций по поиску и доступу быстрее
*️⃣Агрегированные операции выполняются быстрее, так как считывается меньше данных и не нужно обрабатывать лишние колонки
*️⃣Оптимизированы для операций агрегации, таких как SUM, AVG, COUNT
*️⃣Каждая запись в семействе колонок идентифицируется уникальным ключом строки (Row Key)

Когда лучше выбрать?

⏩ Когда нужно быстро читать большие объемы данных по конкретным столбцам
⏩ Когда важна быстрая агрегация данных
⏩ Для данных, собранных по времени или другим параметрам, т.к. информация часто анализируются по определенным метрикам (столбцам)
⏩ Для распределенной обработки данных и масштабируемости
Некоторые БД (Apache Cassandra и HBase) спроектированы для работы в распределенной среде. Они легко масштабируются горизонтально, добавляя новые узлы в кластер
Это позволяет обрабатывать большие объемы и распределять нагрузку между серверами
⏩ Для OLAP систем при анализе больших объемов данных

Когда неэффективны

*️⃣Если данные часто обновляются, то колоночные БД могут быть неэффективными, т.к. нужно обновлять каждый столбец отдельно
*️⃣Могут иметь ограничения при выполнении транзакций, что может усложнять согласование данных в случае ошибок
*️⃣При выполнении транзакций с большим объемом данных может возникнуть задержка из-за сканирования множества столбцов

Примеры использования


🟠Анализ данных продаж для определения трендов и прогнозов
🟠Хранилище данных для аналитики финансовых транзакций
🟠Мониторинг производительности серверов и сетевого трафика

Отличия колоночных SQL от NoSQL

SQL:
*️⃣Имеет более строгую схему, таблицы и типы данных фиксированы
*️⃣Стандартный язык SQL для запросов
*️⃣Для вертикального масштабирования (увеличение мощности одного сервера)
*️⃣Для аналитических запросов

NoSQL:
*️⃣Более гибкая схема, можно легко добавлять новые столбцы
*️⃣Часто собственные языки или API
*️⃣Легче масштабируется горизонтально (добавление новых серверов)
*️⃣Для больших распределенных систем

Примеры БД


*️⃣SQL: Clickhouse, Google BigQuery
*️⃣NoSQL: Apache Cassandra, Apache HBase


Когда лучше выбирать строковые БД

🟠Для транзакционных систем (OLTP): БД, такие как PostgreSQL и MySQL, оптимизированы для быстрого выполнения транзакций, включая вставку, обновление и удаление строк. Подходят для банковских систем или системы обработки заказов.
🟠Когда структура данных может часто меняться: в строковых БД каждая запись хранится в виде строки, операции обновления данных более эффективные
🟠Для частого соединения данных из разных таблиц и реляционных операций между таблицами


Сравнение Cassandra vs PostgreSQL на картинке поста 👇

⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу

#бд
  • 🔥 30
  • 👍 21
  • ❤ 8
  • 🤔 1
Post #397 16.6K
😌 Знакомство со Swagger

Swagger — набор инструментов для создания, документирования и тестирования RESTful API. Основой Swagger является формат OpenAPI, который позволяет описывать API на уровне спецификаций

Зачем нужен?

➖автоматическая генерация интерактивной документации
➖тестирование API в реальном времени
➖единый стандарт (OpenAPI) для совместимости между различными системами и командами
➖автоматизация создания клиентских SDK и серверных частей

Возможности

💙 Интеграция с инструментами для авто-тестирования (Postman и др.), создание тестов на основе спецификаций API
💙 Поддержка версионирования спецификаций API
💙 Широкая экосистема: множество плагинов, инструментов и расширений для различных нужд
💙 Добавление информации о безопасности API, включая поддержку OAuth2, JWT и др. механизмов аутентификации и авторизации


Из чего состоит?

✨Swagger Core — ядро Swagger, программная реализация спецификации OpenAPI 3.0.

✨Swagger Editor: Веб-инструмент для создания и редактирования спецификаций OpenAPI
⏺подсветка синтаксиса и автодополнение
⏺встроенная валидация спецификаций
⏺работа с YAML и JSON форматами
⏺экспорт / импорт спецификаций

✨ Swagger UI: Интерактивная документация, которая генерируется на основе спецификаций API
⏺тестирование API вызовов
⏺поддержка авторизации (Bearer, Basic Auth, API Key)
⏺визуальное отображение структуры API
⏺встроенная поддержка для описания моделей данных

✨Swagger Codegen: инструмент для автоматической генерации клиентских SDK и серверных частей на основе спецификаций OpenAPI
⏺поддержка разных языков программирования и фреймворков (Java, Python, C#, Ruby и др.).
⏺генерация клиентских библиотек, серверных стубов и документации
⏺настраиваемые шаблоны для генерации кода
⏺интеграция с CI/CD процессами

С чего начать работу со Swagger?

➡ Создать спецификацию API в Swagger Editor
➡ Сохранить в формате JSON или YAML
➡ Открыть в Swagger UI, чтобы визуализировать и тестировать API
➡ Использовать Swagger Codegen для генерации кода клиента или сервера


Подходы к созданию API

💙 Code First
Спецификации API генерируются на основе кода
Используется:
💙когда необходимо быстро создать API
💙для создания прототипов и экспериментальных проектов
💙когда добавляются API к уже существующим кодовым базам

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

😌 Пример реализации
💙 Swagger annotations (Java) / атрибуты (C#): добавление документации в код
💙 Swagger-Core (Java)/ Swashbuckle (C#): генерация спецификаций

💙 Contract First (API First)
Спецификации создаются до написания кода
Используется:
💙для обеспечения согласованности и стандартизации
💙когда несколько команд работают над разными частями системы
💙для детальной проработки API до начала разработки

➕ высокая согласованность и понятность, легче поддерживать
➖требует больше усилий на этапе проектирования

😌 Пример реализации
💙 Editor: создание спецификаций API в формате OpenAPI
💙 Codegen: генерация серверных шаблонов и клиентских библиотек по спецификациям


Примеры расширений и плагинов

💙 SwaggerHub: Платформа для совместной работы над спецификациями API в реальном времени
💙 SwaggerHub Explorer: Инструмент для тестирования API без необходимости писать код
💙 Swagger Validator: Проверка спецификации на наличие ошибок и соответствие стандартам


Отличие от Postman


✨Цель
Swagger ориентирован на проектирование и документирование API
Postman — на тестирование и отладку
✨Функции
Swagger позволяет создавать спецификации и генерировать код
Postman фокусируется на тестировании, хранении запросов и автоматизации тестов


⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу

#api #инструменты
  • 🔥 45
  • 👍 18
  • ❤ 15
  • ⚡ 1
Post #395 14.6K
🗺 Customer Journey Map (CJM)

CJM (Карта пути клиента) — инструмент визуализации пути клиента, включая все этапы взаимодействия с продуктом или сервисом.
⭕ CJM помогает понять опыт пользователя, выявить проблемы и улучшить взаимодействие пользователя c продуктом

Зачем нужна

⭕Новая фича ➡ Довести клиента до цели
⭕Текущая фича ➡ Найти и решить проблемы клиента при достижении цели

Примеры использования

🟡Аналитика: визуализация помогает выявить требования, проблемные ситуации, спроектировать пользовательский интерфейс
🟡Разработка продуктов: для анализа процессов, создания пользовательских и тестовых сценариев
🟡UX/UI дизайн: для улучшения пользовательского интерфейса и опыта, основываясь на реальных данных о взаимодействии пользователей с продуктом
🟡Маркетинг: для анализа как клиенты реагируют на маркетинговые кампании, поиска эффективных каналов продвижения


Основные элементы

CJM может выглядеть по-разному в зависимости от целей
Основные элементы:

🟡Действующее лицо ― клиент (образ из ядра основных групп клиентов или несколько конкретных покупателей (персонажей)
🟡Цели и ожидания пользователя
🟡Этапы пользовательского пути
🟡Точки контакта (места, ситуации и интерфейсы, когда клиент сталкивается с продуктом)
🟡Эмоции и действия пользователя
🟡Барьеры, которые мешают перейти на дальнейший этап
🟡Способы улучшения продукта и преодоления барьеров

Как построить CJM


✨ Собрать данные: исследование клиентов, опросы, интервью, анализ данных CRM
✨ Определить этапы пути пути клиента
✨ Определить точки взаимодействия клиента с продуктом
✨ Проанализировать эмоции и болевые точки на каждом этапе
✨ Сделать визуализацию карты

Пример построения CJM по шагам

🟡 Определение целей: почему клиенты интернет-магазина часто покидают корзину, не завершив покупку
🟡Создание персонажей: составляются профили ключевых клиентов (молодые профессионалы, пожилые покупатели, с их характеристиками и поведение)
🟡 Сбор данных: анализ веб-аналитики, опросов, отзывов и интервью с клиентами для выявления ключевых точек взаимодействия и проблем
🟡 Определение этапов пути клиента: поиск товара, добавление в корзину, процесс оформления заказа, оплата и доставка
🟡 Идентификация точек взаимодействия: на сайте, через email-рассылки и службу поддержки
🟡 Анализ эмоционального состояния клиента: определяются моменты, когда клиент испытывает радость (быстрая доставка) или раздражение (сложный процесс оплаты)
🟡 Выявление болевых точек и возможностей для улучшений: проблемы на этапе оплаты и доставки. Упрощение процесса оплаты и более точное отслеживание доставки
🟡 Визуализация карты пути клиента: создается графическая карта всех этапов и точки взаимодействия с болевыми моментами и предложениями по улучшению
🟡Внедрение изменений и мониторинг результатов


Программы для построения CJM


⏩ Онлайн-доски и специальные сервисы: UXPressia, Miro, Canvanizer
⏩ Дизайнерские программы и редакторы: если создание CJM требует визуализации (Figma, Adobe Illustrator или Photoshop)

Похожие инструменты


📍Service Blueprint: более детализированная карта, описывает внутренние процессы и ресурсы, необходимые для предоставления услуг
📍Experience Map: общий контекст и опыт клиента с брендом, со всеми точками взаимодействия и эмоциями
📍Empathy Map: инструмент для понимания мыслей, чувств, действий и слов клиента, помогающий создать персонализированный опыт
📍User Story Mapping: инструмент для организации и приоритизации пользовательских историй
📍Touchpoint Map: фокусируется только на точках взаимодействия клиента с продуктом, без детального анализа этапов пути клиента


#требования
  • 👍 22
  • ❤ 9
  • 🔥 4
  • ⚡ 2
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →