GRASP: краткий обзор
Проектирование ПО начинается с определения архитектуры высокого уровня (HLA - High Level Architecture). В HLA надо определить объекты или процессы, для чего создаём приложение. Существуют подходы:
1⃣ Функциональный (структурный)
2⃣ Объектно‑ориентированный
〰 Включает принципы GRASP
〰 Может быть реализован с помощью DDD
🔵 В функциональном подходе выделют компоненты системы, их функции и способы взаимодействия, без привязки к объектам
➡️ Выделяем модули для управления товарами (добавление, удаление), обработки заказов (создание, обработка оплаты). Модуль управления товарами может вызывать функции модуля обработки для оформления заказа
🔵 ОО основан на моделировании системы в виде взаимосвязанных объектов, у которых есть свойства и поведение, а также учитывает принципы объектно-ориентированного программирования
Класс — шаблон, который определяет структуру и поведение объектов. Содержит атрибуты (данные) и методы (функции)
Объект — конкретный экземпляр класса, содержащий значения атрибутов и способный выполнять определённые методы
➡️ Рассматриваем систему как набор объектов (Задача, Пользователь), каждый из которых имеет свои свойства и методы, и взаимодействует через них
✳️ GRASP
GRASP (General Responsibility Assignment Software Patterns) — набор рекомендаций и принципов проектирования ПО для определения архитектуры и отношений между объектами
— сфокусирован не на решении прикладных задач, а на распределении какому объекту назначить то или иное поведение
— GRASP может рассматриваться в рамках объектно-ориентированного проектирования, помогает в реализации его принципов
— применяется в веб-разработке и мобильной разработке, автоматизации процессов и т. д.
— может использоваться в сочетании с различными типами паттернов проектирования
Например, чтобы определить, какие объекты будут создавать методы / определить роли классов в компонентах
✳️ Зачем GRASP аналитику?
⚪ помогает разрабатывать четкие, понятные структуры системы
⚪ определять обязанности каждого объекта и устанавливать связи между ними
✳️ Паттерны GRASP
Используются для:
🔵 создания объектов
🔵 определения ответственностей классов
🔵 управления связями между объектами и др
Сначала определяют бизнес-правила и требования к системе➡️ После выбираются подходящие паттерны для реализации этих требований
Каждый паттерн решает конкретную проблему проектирования и имеет свои рекомендации по применению
Популярные принципы GRASP:
1⃣ Controller (Контроллер): координирует работу между объектами и обрабатывает внешние запросы. Объект, который принимает пользовательский ввод, делегирует его другим объектам для выполнения операций
➡️ контроллер веб-приложения обрабатывает запросы от клиентов и вызывает методы для выполнения бизнес-логики
2⃣ Creator (Создатель): отвечает за создание экземпляров других классов
➡️ если есть класс Order, который создает экземпляры Item, то метод создания объекта Item должен быть внутри класса Order
3⃣ Expert (Эксперт): объект, больше всех знает, как выполнить определенную операцию, должен быть ответственным за её выполнение
➡️ класс управления заказами может быть экспертом по созданию и обработке заказов
4⃣ High Cohesion (Высокая связность): класс выполняет только одну задачу / ответственность. Каждый класс должен быть организован вокруг единой цели
➡️ класс EmailSender должен заниматься только отправкой электронных писем, а класс PaymentProcessor - только обработкой платежей
5⃣ Low Coupling (Низкая связность): классы должны быть слабо связаны друг с другом. Изменения в одном классе не должны приводить к изменениям в другом классе
➡️ если меняется способ оплаты в классе PaymentProcessor, класс Order и Customer не должны быть затронуты
6⃣ Pure Fabrication (Чистая фабрикация): для создания объектов, которые не имеют аналога в предметной области, но служат для снижения связанности и увеличения гибкости системы
➡️ класс Logger для записи логов, не является объектом из реального мира, но играет важную роль в системе для логирования
⭐️ Подборка материалов доступна в базе знаний по системному анализу
#проектирование
Проектирование ПО начинается с определения архитектуры высокого уровня (HLA - High Level Architecture). В HLA надо определить объекты или процессы, для чего создаём приложение. Существуют подходы:
Класс — шаблон, который определяет структуру и поведение объектов. Содержит атрибуты (данные) и методы (функции)
Объект — конкретный экземпляр класса, содержащий значения атрибутов и способный выполнять определённые методы
GRASP (General Responsibility Assignment Software Patterns) — набор рекомендаций и принципов проектирования ПО для определения архитектуры и отношений между объектами
— сфокусирован не на решении прикладных задач, а на распределении какому объекту назначить то или иное поведение
— GRASP может рассматриваться в рамках объектно-ориентированного проектирования, помогает в реализации его принципов
— применяется в веб-разработке и мобильной разработке, автоматизации процессов и т. д.
— может использоваться в сочетании с различными типами паттернов проектирования
Например, чтобы определить, какие объекты будут создавать методы / определить роли классов в компонентах
Используются для:
Сначала определяют бизнес-правила и требования к системе
Каждый паттерн решает конкретную проблему проектирования и имеет свои рекомендации по применению
Популярные принципы GRASP:
#проектирование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤5🔥2🤔2
Forwarded from Библиотека Системного Аналитика
Формализация_требований_на_практике.pdf
780.3 KB
Формализация требований на практике
✍️ Авторы: В. В. Кулямин, Н. В. Пакулин, О. Л. Петренко, А. А. Сортов, А. В. Хорошилов
🗓 Год издания: 2006
🔤 Язык: русский
📚 Объём: 69 стр.
Подробное руководство по методам обеспечения адекватного понимания потребностей пользователей и их отражения в формальных моделях. Авторы рассматривают ключевые аспекты работы с требованиями и предлагают эффективные методы их формализации.
О чём книга
✔️ Улучшение процесса сбора требований: Методы и техники для точного выявления и описания задач, которые должно решать программное обеспечение. Книга поможет лучше понимать потребности пользователей и формализовать их.
🚫 Анализ и сравнение методов работы с требованиями: Обзор и сравнение различных подходов, таких как RUP, DOORS, CORE, SSM, RAISE.
📐 Формальные модели: Примеры использования формальных моделей для представления требований и методов их решения.
✏️ Как использовать формальные модели для улучшения взаимодействия между командами разработчиков и заказчиками.
📝 Процесс формализации требований FOREST: Детальное описание процесса формализации требований, включая этапы и техники.
#требования
✍️ Авторы: В. В. Кулямин, Н. В. Пакулин, О. Л. Петренко, А. А. Сортов, А. В. Хорошилов
🗓 Год издания: 2006
🔤 Язык: русский
📚 Объём: 69 стр.
Подробное руководство по методам обеспечения адекватного понимания потребностей пользователей и их отражения в формальных моделях. Авторы рассматривают ключевые аспекты работы с требованиями и предлагают эффективные методы их формализации.
О чём книга
📐 Формальные модели: Примеры использования формальных моделей для представления требований и методов их решения.
#требования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34❤9🔥5🤔3🎉1
Оконные функции
Оконные функции — функции, которые выполняют вычисления внутри заданного набора данных или "окна" в таблице БД
Принцип работы
1⃣ Оконная функция (ОФ) определяет "окно" данных, на которых будет выполняться вычисление (несколько строк или диапазон значений столбца)
2⃣ Если требуется, данные внутри окна упорядочиваются по одному/нескольким столбцам
3⃣ Применяются вычисления, заданные в ОФ (сумма, среднее значение, ранжирование и тд)
5⃣ Если требуется, результаты группируются по столбцам или выражениям
5⃣ Возврат результатов
Упрощенный синтаксис
➡️
где имя функции = имя оконной функции
окно = выражение, описывающее набор строк для обработки и порядок обработки
Характеристики
🟠 в отличие от агрегатных функций, оконные могут вычислять значения для каждой строки в результате запроса. Агрегатные работают над всем набором данных
🟠 это не то же самое, что GROUP BY. ОФ не уменьшают количество строк, а возвращают столько значений, сколько получили на вход
🟠 в отличие от GROUP BY, OVER может обращаться к другим строкам
Как используются?
⭕️ для определения порядка строк и их ранжирования в рамках группы данных
Например, можно выделить наиболее ранний или поздний заказ для каждого клиента
🟢 применение фильтров к результирующему набору данных по условиям внутри функции
🟢 для выполнения вычислений на группах данных. Не нужно создавать временные таблицы или подзапросы
🟢 обращения к данным из других строк в пределах окна. Полезно для сравнения значений или расчета разницы между значениями
Виды
⏺ Агрегатные — вычисляют агрегированные значения по группам строк в окне. Например, среднее значение или сумма всех значений в окне
⏺ Ранжирующие — назначают ранг каждой строке в пределах окна в соответствии с заданными критериями сортировки. Например, можно ранжировать товары по его цене в каждой категории.
Под ключевым словом OVER обязательным идёт условия ORDER BY, по которому будет происходить сортировка ранжирования
➡️ ROW_NUMBER — возвращает номер строки, используется для нумерации;
➡️ RANK — возвращает ранг каждой строки
⏺ Смещения — позволяют перемещаться и обращаться к разным строкам в окне, относительно текущей строки, а также к значениям в начале или в конце окна
➡️ LAG — обращается к данным из предыдущих строк окна
➡️ LEAD — обращается к данным из следующих строк. Аналогично LAG имеет 3 аргумента
Примеры
➡️ Ранжирование данных
➡️ Вычисление среднего значения по группам
Окно vs Партиция в оконных функциях
✨ Окно — набор строк внутри результата запроса, на котором выполняется операция агрегации или аналитическая функция
➡️ Таблица с данными о студентах и их оценках за тесты.
Нужно вычислить средний балл каждого студента по последним трем тестам.
ОФ определит "окно", которое охватывает последние три записи для каждого студента, и вычислит средний балл только в этом окне данных.
✨ Партиция (оператор PARTITION BY) — подмножество строк, выделенное для ОФ по одному/нескольким столбцам в таблице.
Задает условие, по которому эти строки группируются для вычисления функций.
➡️ Есть таблица с данными о продажах,.
ОФ помогут вычислить суммы продаж в каждом регионе отдельно.
Партиция разделит данные на группы по регионам, после чего сумма продаж вычисляется в каждой группе отдельно.
💡 Окно определяет, где выполняется функция,
а партиция - как данные группируются для выполнения этой функции
Недостатки оконных функций
🟢 не все СУБД их поддерживают
🟢 производительность может ухудшаться из-за их влияния на выполнение запроса
🟢 отладка также может быть затруднительна
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#бд #sql
Оконные функции — функции, которые выполняют вычисления внутри заданного набора данных или "окна" в таблице БД
Принцип работы
Упрощенный синтаксис
<имя функции> OVER (<окно>)где имя функции = имя оконной функции
окно = выражение, описывающее набор строк для обработки и порядок обработки
Характеристики
Как используются?
Например, можно выделить наиболее ранний или поздний заказ для каждого клиента
Виды
Под ключевым словом OVER обязательным идёт условия ORDER BY, по которому будет происходить сортировка ранжирования
Примеры
SELECT student_id, test_score,
RANK() OVER (ORDER BY test_score DESC)
AS rank
FROM student_scores;
SELECT region, sales_amount,
AVG(sales_amount) OVER (PARTITION BY region)
AS avg_sales_per_region
FROM sales_data;
Окно vs Партиция в оконных функциях
Нужно вычислить средний балл каждого студента по последним трем тестам.
ОФ определит "окно", которое охватывает последние три записи для каждого студента, и вычислит средний балл только в этом окне данных.
Задает условие, по которому эти строки группируются для вычисления функций.
ОФ помогут вычислить суммы продаж в каждом регионе отдельно.
Партиция разделит данные на группы по регионам, после чего сумма продаж вычисляется в каждой группе отдельно.
а партиция - как данные группируются для выполнения этой функции
Недостатки оконных функций
#бд #sql
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍18❤8⚡2
В результате возникает хеш (hash) — отображение данных в виде уникальной строки
Хэш-функция — алгоритм, который принимает входные данные любого размера и возвращает хэш фиксированного размера
Результат хеш-функции называется «хеш-суммой»\«хеш», а входные данные — «сообщением»
Исходное сообщение -> [Хэш-функция] -> Хэш
Когда хэши совпадают — это коллизия. Это небезопасно, т.к. позволяет подменить данные.
Как работает хеш-функция
По шагам:
Функция должна быть криптостойкой, т.е. ее результат практически невозможно вскрыть
Это делается, чтобы предотвратить атаки по радужным таблицам и сделать каждый хэш уникальным, даже для одинаковых исходных данных
Основные характеристики хэш-функций
Для чего используется хэширование
Примеры хэширования
Популярные алгоритмы хэширования
Шифрование — преобразование данных в вид, который нельзя прочитать без специального ключа
Как работает шифрование
Вводятся данные и используется ключ для шифрования.
Данные преобразуются алгоритмами в зашифрованный формат, который может быть расшифрован только с использованием соответствующего ключа
Основные типы
Для чего используется
Примеры использования
Популярные алгоритмы
#безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥16❤12
Forwarded from Библиотека Системного Аналитика
Please open Telegram to view this post
VIEW IN TELEGRAM
Нужна, чтобы упорядочить данные по определённому критерию
Алгоритм работы
Примеры параметров
GET /products?sort=price&order=desc
сортировка по цене в порядке убыванияGET /products?sort=price&order=desc — сортировка по цене в порядке убыванияsort=field1,field2 sort = field1,field2: указание несколько полей для сортировки
GET /products?sort=price,name — сначала сортировка по цене, затем по имениGET /products?custom_sort=popularity — сортировка по популярности, где popularity — кастомный критерийGET /products?sort=price&nulls=last — значения null идут последнимиПримеры использования
Используется для отбора данных по заданным критериям
Работает по аналогичному алгоритму, как и сортировка
В URL, используются параметры строки запроса для условий фильтрации
Каждый параметр имеет формат field=value, несколько параметров разделяются символом "&"
Методы
GET /api/items?status=active — фильтрует все элементы, у которых статус = activeGET /api/items?price[gte]=10&price[lte]=50 — элементы с ценой в диапазоне от 10 до 50GET /api/items?name[like]=%book% — элементы со словом book в названииGET /api/items?category=in:(books,electronics) — элементы с категорией books или electronicsПримеры использования
Для ускорения запросов — использовать индексы на колонках, которые часто фильтруются
При пагинации происходит разделение данных на страницы для удобства просмотра и ускорения ответов
Алгоритм работы
Методы
GET /items?limit=10&offset=20 — возвращает 10 элементов, начиная с 21-го элемента (т.к. offset=20)GET /items?page=3&page_size=10 — 10 элементов, начиная с третьей страницыGET /items?cursor=abc123&limit=10 — 10 элементов, начиная с позиции, определенной курсором abc123Примеры использования
Для больших наборов данных лучше использовать курсорную пагинацию
Параметры в URL указываются в любом порядке, сервер должен обрабатывать их в логической последовательности:
Фильтрация
#api
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43❤16🔥8
Интернет — это глобальная сеть систем, которые связаны друг с другом для хранения и передачи данных.
Структура интернета
172.217.18.0), которые используются для маршрутизации данных в интернетеИнтернет работает на базе набора протоколов TCP/IP, которые реализовывают 3, 4 и 7 уровни модели OSI:
Подробнее про OSI — в наших постах (ссылки в материалах)
Доменная система имен (DNS). Включает:
Пример: Один из корневых серверов — A.ROOT-SERVERS.NET, управляемый организацией VeriSign.
Пример: Для домена .com существует множество TLD серверов, например, a.gtld-servers.net.
Пример: Если запрос касается домена example.com, авторитетный сервер для google.com может быть ns1.google.com.
Интернет централизован?
Нет. Интернет состоит из множества автономных систем и сетей, которые управляются разными организациями и компаниями по всему миру. Поэтому интернет работает даже при сбоях в отдельных сегментах, так как нет центральной точки отказа.
Однако существует координационный орган — ICANN (Internet Corporation for Assigned Names and Numbers). ICANN отвечает за распределение IP-адресов, управление доменными зонами и поддержание стабильности работы сети.
ICANN координирует распределение IP-адресов и доменных зон верхнего уровня (.com, .org и т.д.), т.е. обеспечивает работу корневых DNS-серверов. ICANN не управляет содержимым сайтов и интернет-провайдерами, а лишь поддерживает техническую инфраструктуру. Хотя ICANN не может физически отключить интернет в стране, но может прекратить обслуживание доменных зон.
Что происходит, когда мы вводим в браузере google.com?
Автор: Виталия Малютина
#сети
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥50👍24❤10
OLTP (Online Transaction Processing) — система, предназначенная для управления и обработки множества транзакций в режиме онлайн
Транзакции обычно включают в себя операции создания, чтения, обновления и удаления (CRUD)
Алгоритм работы
Характеристики
Примеры
OLAP (Online Analytical Processing) — система для выполнения сложных запросов и анализа больших объемов данных.
— Собирает информацию из БД, ERP, CRM и др источников, затем формирует многомерный массив данных для дальнейшего анализа. Эти массивы называют OLAP-кубами
— Кубы объединяют информацию из большого числа таблиц с её предварительной обработкой. Могут иметь разные измерения (в годах, регионах и тд)
Компоненты OLAP
Алгоритм работы
— извлечение данных
— данные очищаются, нормализуются и преобразуются
— загрузка в OLAP хранилище
Характеристики
Примеры систем
Yandex DataLens — визуализация и анализа данных
Microsoft Power BI — инструмент бизнес-анализа
Vertica — БД для OLAP
Дополняют друг друга в процессе управления данными и аналитики:
(анализ покупательского поведения может привести к изменениям в маркетинговых кампаниях или стратегиях продаж)
#проектирование #бд
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍12❤7
Паттерны проектирования (ПП) — проверенные решения для часто встречающихся проблем в ПО. Шаблоны, которые применяются для повышения эффективности и качества кода
Архитектурные паттерны (АП) — шаблоны для высокоуровневой организации системы. Они определяют основные компоненты системы, их взаимосвязи и взаимодействия
Служат для разных уровней проектирования ПО:
Применение
Делятся на три вида:
Для создания экземпляра объекта или группы связанных объектов
В основном связаны с композицией объектов, с тем, как сущности могут использовать друг друга
Связаны с распределением обязанностей между объектами. Отличаются от структурных шаблонов описанием не только структуры, но и способов общения между ними
Применение
Примеры
Более абстрактные:
Более конкретные:
В объектно-ориентированных системах внутри архитектурных паттернов можно использовать паттерны GRASP
Например, паттерны для распределения обязанностей между классами и объектами (Creator, Information Expert)
Они помогут определить, как распределять обязанности
#проектирование #архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍16⚡3
CJM (Карта пути клиента) — инструмент визуализации пути клиента, включая все этапы взаимодействия с продуктом или сервисом.
Зачем нужна
Примеры использования
Основные элементы
CJM может выглядеть по-разному в зависимости от целей
Основные элементы:
Как построить CJM
Пример построения CJM по шагам
Программы для построения CJM
Похожие инструменты
#требования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤9🔥4⚡2
Swagger — набор инструментов для создания, документирования и тестирования RESTful API. Основой Swagger является формат OpenAPI, который позволяет описывать API на уровне спецификаций
Зачем нужен?
Возможности
Из чего состоит?
С чего начать работу со Swagger?
Подходы к созданию API
Спецификации API генерируются на основе кода
Используется:
Спецификации создаются до написания кода
Используется:
Примеры расширений и плагинов
Отличие от Postman
Swagger ориентирован на проектирование и документирование API
Postman — на тестирование и отладку
Swagger позволяет создавать спецификации и генерировать код
Postman фокусируется на тестировании, хранении запросов и автоматизации тестов
#api #инструменты
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥44👍18❤14⚡1
В колоночной БД данные хранятся и обрабатываются по столбцам, а не по строкам.
Все значения одного столбца хранятся вместе, отдельно от значений других столбцов.
В строковой БД данные хранятся построчно:
В колоночной — по столбцам:
Чтение: если нужно найти все цены, БД сразу читает столбец "Цена", не проходя по каждой строке.
Особенности
Когда лучше выбрать?
Некоторые БД (Apache Cassandra и HBase) спроектированы для работы в распределенной среде. Они легко масштабируются горизонтально, добавляя новые узлы в кластер
Это позволяет обрабатывать большие объемы и распределять нагрузку между серверами
Когда неэффективны
Примеры использования
Отличия колоночных SQL от NoSQL
SQL:
NoSQL:
Примеры БД
Когда лучше выбирать строковые БД
Сравнение Cassandra vs PostgreSQL на картинке поста
#бд
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍21❤8🤔1
Производительность 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
Временное хранение часто используемых ответов
Объединение нескольких запросов в один для сокращения количества обращений к серверу
Разделение большого запроса или ответа на более мелкие части (чанки), которые отправляются последовательно
Ограничение количества запросов за определенный промежуток времени
требует мониторинга и настройки
Повторение неудавшихся запросов
Установка максимального времени ожидания ответа
Разделение результатов на страницы
Сжатие данных перед передачей
Верхнеуровневые (архитектурные) способы
Распределение нагрузки между серверами
Использование сети серверов для кэширования и доставки контента
Выполнение операций без ожидания завершения, позволяя другим процессам продолжать работу
масштабируемость, т.к ресурсы не блокируются ожиданием завершения операций
#api
Please open Telegram to view this post
VIEW IN TELEGRAM
👍59🔥17❤12
Это способы доставки данных из источников в централизованную систему (хранилище)
Ключевое отличие: ГДЕ и КОГДА выполняются преобразование и загрузка данных:
Как работает по шагам:
Когда эффективны
Примеры применения
Минусы
— процесс может быть медленным из-за преобразования данных до загрузки
— нужно использовать выделенные ресурсы для трансформации данных
Как работает по шагам:
Когда эффективны
Для быстрой загрузки и обработки больших объемов данных, т.к. извлекает и загружает в целевую систему (например, облачное ХД) сырые данные.
А трансформация происходит после загрузки
Когда использовать
Примеры применения
Минусы
— целевая система должна быть достаточно мощной для выполнения трансформаций
— могут появится неконсистентные данные в целевой системе до выполнения всех трансформаций
#архитектура #проектирование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41❤10🔥6
🎙 Бесплатные выпуски подкаста «Аналитики у микрофона» для и про аналитиков
Ссылки на выпуски собрали в один пост:
1 сезон
👉 Удаленка
Делимся своим опытом, с чем столкнулись, какие трудности нас ждали в таком формате работы и как мы с ними справляемся или не справляемся.
👉 Дарья Перминова. Legal Tech, вопрос «зачем?» и динозаврики
Обсудили с гостем ее работу в продуктовой компании и историю ее карьерного пути. Даша также поделилась с нами своими методами найма аналитиков и размышлениями о смене работы. В выпуске поговорили о продуктовой разработке, о том, какие бывают аналитики в этой сфере, как важно уметь учиться, о материнстве и о многом другом!
👉 Алёна Ельцова. Из бухгалтера в аналитики 1С или В переговорку с самоваром
Алёна рассказала о своем карьерном пути, о том, как она пришла к ведению профессионального блога и к созданию авторского курса "Супер-ЗУПер", и о своих планах на будущее.
Поговорили о том, что ждёт бухгалтеров и кадровиков при переходе в новую профессию Аналитик 1С и нужно ли им это.
👉 Татьяна Паваляева. Коммуникации на удаленке: свет, камера, микрофон или как налаживать отношения
В выпуске поговорили про команду, про камеры, про то как НЕ читать между строк. Подняли тему семьи, детей и переработок. Обсудили даже здоровье.
Бонусные выпуски 1 сезон, интервью с теми, кто стоит рука об руку с аналитиками
👉 Евгений Жильцов про тестировщиков
Тестировщик- кто это? Чем занимается? Как может помочь аналитику?
👉 Марина Трушникова про руководителей проектов
Обсудили, чем занимается РП, как обучиться и попасть в эту сферу, где граница работы РП и аналитика, а также затронули тему коммуникаций и пофантазировали о том, что ждет эту роль с развитием технологий.
👉 Евгений Руднев про бизнес-аналитиков
Кто такой бизнес-аналитик и для чего он нужен бизнесу?
Что общего у бизнес-аналитика и следователя?
Какими качествами должен обладать бизнес-аналитик?
Почему коммуникации намного важнее знания нотаций?
Где учиться на бизнес-аналитика и как развиваться в профессиональном плане?
2 сезон
👉 Подкаст в подкасте
Зачем мы делаем подкасты? Зачем мы слушаем подкасты? Зачем мы участвуем в других подкастах? Вопрос «зачем?» прозвучал в выпуске очень много раз, как мы любим, постарались поделиться нашим мнением.
👉 Татьяна Макарова. В поисках идеальной работы
Обсудили важные моменты, на которые стоит обратить внимание на собеседовании, чтобы избежать неприятных ситуаций и не жалеть потом о своем выборе.
#подкасты
Ссылки на выпуски собрали в один пост:
1 сезон
👉 Удаленка
Делимся своим опытом, с чем столкнулись, какие трудности нас ждали в таком формате работы и как мы с ними справляемся или не справляемся.
👉 Дарья Перминова. Legal Tech, вопрос «зачем?» и динозаврики
Обсудили с гостем ее работу в продуктовой компании и историю ее карьерного пути. Даша также поделилась с нами своими методами найма аналитиков и размышлениями о смене работы. В выпуске поговорили о продуктовой разработке, о том, какие бывают аналитики в этой сфере, как важно уметь учиться, о материнстве и о многом другом!
👉 Алёна Ельцова. Из бухгалтера в аналитики 1С или В переговорку с самоваром
Алёна рассказала о своем карьерном пути, о том, как она пришла к ведению профессионального блога и к созданию авторского курса "Супер-ЗУПер", и о своих планах на будущее.
Поговорили о том, что ждёт бухгалтеров и кадровиков при переходе в новую профессию Аналитик 1С и нужно ли им это.
👉 Татьяна Паваляева. Коммуникации на удаленке: свет, камера, микрофон или как налаживать отношения
В выпуске поговорили про команду, про камеры, про то как НЕ читать между строк. Подняли тему семьи, детей и переработок. Обсудили даже здоровье.
Бонусные выпуски 1 сезон, интервью с теми, кто стоит рука об руку с аналитиками
👉 Евгений Жильцов про тестировщиков
Тестировщик- кто это? Чем занимается? Как может помочь аналитику?
👉 Марина Трушникова про руководителей проектов
Обсудили, чем занимается РП, как обучиться и попасть в эту сферу, где граница работы РП и аналитика, а также затронули тему коммуникаций и пофантазировали о том, что ждет эту роль с развитием технологий.
👉 Евгений Руднев про бизнес-аналитиков
Кто такой бизнес-аналитик и для чего он нужен бизнесу?
Что общего у бизнес-аналитика и следователя?
Какими качествами должен обладать бизнес-аналитик?
Почему коммуникации намного важнее знания нотаций?
Где учиться на бизнес-аналитика и как развиваться в профессиональном плане?
2 сезон
👉 Подкаст в подкасте
Зачем мы делаем подкасты? Зачем мы слушаем подкасты? Зачем мы участвуем в других подкастах? Вопрос «зачем?» прозвучал в выпуске очень много раз, как мы любим, постарались поделиться нашим мнением.
👉 Татьяна Макарова. В поисках идеальной работы
Обсудили важные моменты, на которые стоит обратить внимание на собеседовании, чтобы избежать неприятных ситуаций и не жалеть потом о своем выборе.
#подкасты
👍14🔥9❤4
SQA (Software Quality Assurance) — процесс для обеспечения соответствия ПО установленным стандартам и требованиям.
Это система подходов, которая интегрирована в процесс разработки, чтобы гарантировать качество на всех этапах.
Почему важно SQA?
Основные аспекты SQA
Примеры применения
Примеры атрибутов качества
Внешние
Внутренние
операционной среде)
Инструменты и методы
Отличие от нефункциональных требований
#требования
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12⚡8👍4🔥4
Изолированность транзакций в БД гарантирует, что параллельные транзакции не влияют друг на друга. Предотвращает видимость промежуточных результатов транзакции для других до её завершения, сохраняя целостность данных
Это одно из свойств ACID
Как обеспечить изолированность
MVCC
Принцип работы
Во время транзакции создается копия данных, в которой происходят изменения
Пример
Два пользователя одновременно меняют карточку товара
Блокировки
Примеры видов блокировок
Приложение-координатор дает доступ к БД или отклоняет запрос, если БД занята.
Алгоритмы выбора координатора
Каждый процесс отправляет запросы на доступ к ресурсу всем другим (и себе)
Действия получателя:
сравнивает время запроса со времени своего запроса
— ОК: если у входящего сообщения время меньше
— В очередь: если время больше
После отправки запросов приложение останавливается, ждет подтверждения от остальных.
Далее отправляет OK всем в своей очереди и чистит ее
доступ к ресурсу
Минимизация блокировок за счет работы с копиями данных.
— если не обнаружено, изменения транзакции применяются к основной БД
— если обнаружено (например, другой транзакцией изменены те же данные), текущая транзакция откатывается и, возможно, повторяется
Пример блокировки в БД
Две транзакции (T1 и T2) работают с таблицей accounts (информация о балансах пользователей)
Что выбрать для обеспечения изолированности?
#бд
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤9👍9⚡4
Grafana — инструмент для визуализации и анализа данных.
Позволяет создавать интерактивные графики, диаграммы и дашборды на основе различных источников данных.
Возможности
Подключение к различным источникам данных
Создание интерактивных дашбордов
Алертинг
Управление пользователями и ролями
Плагины и расширения
Основные термины
Может быть написан на языках запросов, поддерживаемых источником данных (SQL для БД)
Примеры применения
Недостатки
Экосистема Grafana
#инструменты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25❤9🔥8
NTP (Network Time Protocol) — протокол для синхронизации времени между компьютерами в сети.
Позволяет устанавливать точное время на устройствах, синхронизируя их часы с часами специальных серверов времени (NTP-серверами)
Как работает по шагам
отправления (T1)
временем отправления (T3) и временем получения (T2)
задержку и смещение во времени своих часов для их корректировки.
Для чего нужен
Согласованность временных меток
* Распределённая система —группа независимых компьютеров, которые работают вместе и обмениваются данными по сети для выполнения общих задач.
Обеспечение безопасности
Координация действий между системами
Работа распределённых БД
Для правильного воспроизведения мультимедиа
За счет чего достигается высокая точность
UTC (всемирное координированное время) обеспечивает единый стандарт времени для всего мира.
Время с атомных часов и серверов UTC распространяется через сеть
Где применяется
Кейсы использования
У пользователя украли данные карты и хотят снять деньги
Компилятор при пересборке проверяет время изменения файла
Классы точности NTP-серверов
Цифра - уровень по отношению к UTC
Это устройства не подключены напрямую к сети, служат основным источником
времени для серверов Stratum 1
Самые точные серверы, могут учитывать время с точностью в одну триллионную долю секунды.
Они используют сложное и дорогое оборудование и обычно
не отвечают на запросы конечных пользователей, обслуживают только серверы более
низкого уровня.
#инфраструктура
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30🔥9❤4
Уровни изоляции в БД управляют тем, как изменения одной транзакции видны другим транзакциям
Изоляция является одним из ключевых компонентов ACID
Напомним, транзакция в БД — последовательность операций, выполняемых как единое целое.
Должны быть либо полностью выполнены, либо полностью отменены.
Это обеспечивает целостность данных.
Где применяются уровни изоляции
Основные механизмы
В основном реализуется через механизмы СУБД:
Иные:
Аномалии при параллельной обработке транзакций
Уровни изоляции
Самый низкий уровень изоляции: транзакции могут читать изменения, которые не были зафиксированы другими транзакциями.
Механизм: отсутствие блокировок на чтение и запись
Транзакции могут читать только те изменения, которые были зафиксированы
Механизм: блокировка строк на запись до завершения транзакции
Транзакция A читает данные, они блокируются для изменения другими транзакциями.
Транзакция B не может изменять эти данные, пока транзакция A не завершится, но может добавлять новые строки.
Транзакция A повторно читает те же данные, но не видит новых строк.
Механизм: блокировка всех прочитанных строк до завершения транзакции
Обеспечивает полную изоляцию транзакций, делая их последовательными, как если бы они выполнялись по очереди.
Механизм: блокировка на чтение и запись
Как выбрать уровень изоляции
Чем выше уровень изоляции, тем:
#бд
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38🔥11❤8💩1