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

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

https://gosuslugi.ru/snet/67b0613c6411ff785396754a
Download Telegram
✍️ Постановка задачи на разработку: этапы, отличие от ТЗ

Понятия постановки задачи на разработку и техническое задание часто путают меду собой, но это разные вещи.

🔸Техническое задание — это документ, который определяет, что должно быть реализовано и как это должно работать (функциональные требования) и насколько это должно быть быстро/безопасно/отказоустойчиво/дружелюбно/отслеживаемо (нефункциональные требования). ТЗ возникает как результат обработки бизнес-требований, и их перевода на системный уровень.

🔹Постановка задачи на разработку — описание конкретных задач, которые должны быть выполнены разработчиками для реализации ТЗ.

Когда постановка задачи должна быть представлена как отдельный артефакт

Постановка задачи на разработку нужна всегда, но не всегда должна быть оформлена как отдельный артефакт. Иногда достаточно ТЗ, если оно содержит нужные детали для разработки.

Случаи, когда необходимо описать постановку задачи отдельно:

💩Когда задача на доработку, а не на разработку с нуля. Есть одна большая спецификация на кусок функционала, и в это ТЗ дописываются требования по доработкам. ПЗ помогает выделить и описать конкретные изменения, которые нужно внести в существующую систему.
💩Когда задача составная и требует декомпозиции. В постановке можно разбить задачу на более простые подзадачи, тогда как ТЗ описывает реализацию функционала в целом без привязки на то, в рамках каких конкретных задач на разработку это будет реализовываться, сколько будет таких задач, кто их будет делать, какова оценка трудозатрат и т.д.

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

💩Введение, цель: Необходимо описать бизнес-контекст, почему задача возникла. Например, компания столкнулась с проблемой неэффективного учета заказов и хочет улучшить этот процесс.
💩Описание решения: способ и границы реализации (ТЗ, Use Case, статусные модели, макеты UX/UI, описание интеграций)
💩Ключевые источники информации: спецификации API, HLD, глоссарий, стандарты и т.д.
💩Диаграммы: например, UML sequence, activity, бизнес-процесс в BPMN, схемы данных
💩Заинтересованные стороны: перечень людей, влияющие на принятие решений
💩 Критерии приемки: критерии, по которым будет оцениваться успешное завершение проекта.
💩НФТ и ограничения решения: производительность, масштабируемость, доступность и т.д.


🆚 Отличие постановки задачи на разработку (ПЗ) от ТЗ

💩(утрируя) ТЗ — это текст в Confluence, ПЗ — описание в Jira
💩ТЗ описывает требования к функциональности в целом, а постановка направлена на реализацию функционала в рамках конкретных задач
💩Одно ТЗ может быть декомпозировано на несколько задач, при этом каждая может иметь свою постановку на разработку
💩Иногда в ТЗ уже содержится и постановка задачи, но лучше понятия не смешивать и всё равно прописывать постановку задачи отдельно


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


#требования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53🔥136👏2
💚 Инфраструктура открытых ключей (PKI) : краткий обзор

Инфраструктура открытых ключей (Public Key Infrastructure, PKI) — набор правил, который использует цифровые сертификаты и ключи для обеспечения безопасности в сети, включая аутентификацию, шифрование и цифровые подписи

🔴 Сферы применения

🔷PKI используется везде, где требуется работа с чувствительными данными (e-commerce, банках, гос. системах и т.д), например:
-- Цифровые подписи в ПО
-- Ограниченный доступ к корпоративным интранетам и VPN
-- Бесплатный доступ к Wi-Fi без пароля в зависимости от владельца устройства
-- Шифрование эл. почты и данных

🔷PKI в HTTPS

В HTTPS PKI используется для обеспечения безопасности соединения между клиентом и сервером. Достигается с помощью SSL/TLS протоколов, использующие сертификаты для аутентификации сервера и шифрования данных.

♥️ Принцип работы PKI

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

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

Сертификат — цифровой документ, связывающий открытый ключ с владельцем. Содержит информацию о владельце, открытом ключе, алгоритмах шифрования, сроке действия и информацию о центре сертификации.


👌 Основные компоненты PKI

🟢Центр сертификации (Certificate Authority, CA): выдает цифровые сертификаты, подтверждающие аутентичность открытых ключей пользователей. Отзывает сертификаты в случае утраты или компрометации
🟢Регистрационный центр (Registration Authority, RA): занимается проверкой личности пользователей и выдачей запросов на сертификаты CA
🟢Серверы доверия (Trust Stores): содержит списки доверенных корневых сертификатов, используемых для проверки цепочек сертификации
🟢Клиентские приложения: ПО, которое использует сертификаты для проверки подлинности удаленных сущностей и шифрования данных
🟢Инструменты управления ключами: для генерации, хранения и управления ключами и сертификатами, включая их резервное копирование и восстановление
🟢Протоколы и стандарты: PKI использует различные протоколы и стандарты, такие как:
— X.509 для формата сертификатов
— SSL/TLS для безопасного обмена информацией, наиболее распространенная реализация PKI
—протоколы OCSP и CRL для проверки отзыва сертификатов

✏️ Пример работы PKI

1️⃣Генерация ключей: Пользователь / устройство генерирует пару ключей.

2️⃣Сертификация ключей: Владелец открытого ключа обращается к доверенному CA с запросом на выдачу сертификата. CA проверяет подлинность запроса и подтверждает ассоциацию "открытый ключ" <-> "сущность" ( пользователем, устройством или веб-сайтом), создавая цифровую подпись для сертификата.

3️⃣Распространение сертификатов: Сертификат, содержащий открытый ключ и цифровую подпись CA, распространяется в сети (публикациЯ на веб-сайте, отправка через эл. почту или др)

4️⃣Проверка подлинности: Пользователь проверяет полученный сертификат, используя публичный ключ CA. Если сертификат и подпись верны, то всё ок

5️⃣Шифрование и подпись: Пользователь использует открытый ключ другой стороны для шифрования данных или проверки подписи. Для шифрования используется открытый ключ получателя, а для проверки подпись отправителя

6️⃣Отзыв сертификатов: Если ключ скомпрометирован, владелец ключа должен отозвать сертификат через CA. Это делается через список отзыва сертификатов (CRL) или протокол проверки статуса сертификата (OCSP)


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

#безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍98
Основы ООП

Объектно-ориентированное программирование (ООП) — методология или стиль программирования, при котором код организуется в логически связанные объекты с четкими интерфейсами и поведением. Это помогает создавать программы, которые легко понять, изменять и масштабировать

⚪️ Когда эффективно?

Когда система содержит схожие объекты, имеет сложную структуру данных и требует модульности и расширяемости. ООП подходит для проектов, где важно переиспользование кода и управление сложностью системы.

За счет чего эффективно?
— облегчения понимания и обслуживания кода благодаря модульной структуре
— улучшения переиспользование кода и уменьшения дублирования
— увеличения гибкости системы и возможности расширения функциональности без изменения существующего кода


▫️Основные принципы ООП

😈Инкапсуляция: скрытие реализации внутри класса.
Позволяет скрыть детали реализации и предоставить интерфейс для взаимодействия с объектом ➡️ обеспечивает безопасность и упрощает использование объекта другими частями программы
⚪️ Класс Animal содержит
— приватную переменную weight
— публичный метод feed()
Переменная weight скрыта от прямого доступа извне класса ➡️ предотвращает непреднамеренное изменение их значений.
Вместо этого доступ к ним осуществляется через методы класса ➡️ есть контроль доступа к данным.

😈Наследование: создание новых классов на основе существующих.
Подклассы наследуют свойства и методы родительского класса ➡️ можно повторно использовать код и упростить разработку.
Подклассы могут расширять функциональность родительского класса, добавляя новые методы или изменяя существующие.
⚪️ Рассмотрим классы Animal и Mammal
Класс Mammal -- подкласс Animal. Т.е. можно наследовать от него его свойства и методы, такие как move() или eat().
Класс Mammal может добавлять собственные методы, например, milkfeeding(), расширяя функциональность базового класса Animal.

😈Полиморфизм: способность объектов разных типов использовать общий интерфейс для выполнения различных действий.
Проявляется в том, что разные объекты могут реагировать на одну и ту же команду по-разному в зависимости от их типа
⚪️ У нас есть классы Dog и Cat, оба имеют метод makesound()
Когда вызывается метод makesound() для объекта класса Dog, он издаёт лай, а для объекта класса Cat - мяукание

😈Абстракция: позволяет отделить концепцию от её реализации.
Уровень абстракции скрывает сложные детали реализации и предоставляет простой интерфейс для использования объекта ➡️ помогает сосредоточиться на важных аспектах объекта, игнорируя незначительные детали.
⚪️ Класс 4legs абстрактный и имеет метод без реализации walk(). Класс является абстракцией (робот или насекомое тоже может иметь 4 ноги). Объект такого класса невозможно создать.
Но можно наследовать потомков.
Dog наследует класс 4legs и реализует метод walk()


💡 Зачем ООП аналитику?

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

⚪️Нужно описать систему управления библиотекой.
Можно представить систему как совокупность объектов, таких как "книга", "автор" и "читатель", каждый из которых имеет свои атрибуты и методы.

*️⃣Также понимание ООП поможет:
— спроектировать архитектуру приложения: используя принципы наследования, инкапсуляции и полиморфизма разделить функционал на компоненты
— в определении общих интерфейсов и абстракций, которые позволят разным частям системы взаимодействовать между собой

*️⃣Существуют объектно-ориентированные методы системного анализа (ООМСА).
Это подход к анализу, проектированию и моделированию систем, основанный на принципах ООП
Основные методы:
— моделирования объектов и классов
— анализа взаимодействия объектов
— проектирования классов и иерархий
— анализа наследования и агрегации


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

#проектирование
Please open Telegram to view this post
VIEW IN TELEGRAM
29👍20🔥13😁21
Apache_Kafka_Потоковая_обработка_и_анализ_данных.pdf
8.2 MB
Apache Kafka. Потоковая обработка и анализ данных

✍️ Авторы: Гвен Шапира, Тодд Палино, Раджини Сиварам, Крит Петти
🗓 Год издания: 2023
🔤 Язык: русский
📚 Объём: 512 стр.

Второе издания бестселлера о Kafka.

При работе любого корпоративного приложения образуются данные: файлы журналов, показатели, информация об активности пользователей, исходящие сообщения и другие. Правильное управление этими данными не менее важно, чем сами данные. Если вы архитектор, разработчик или инженер-технолог, но вы пока не знакомы с Apache Kafka, то из этой обновленной книги вы узнаете, как работать с потоковой платформой Kafka, позволяющей обрабатывать потоки данных в реальном времени. Дополнительные главы посвящены API AdminClient от Kafka, транзакциям, новым функциям безопасности и изменениям в инструментарии.

Инженеры из Confluent и LinkedIn, ответственные за разработку Kafka, объясняют, как с помощью этой платформы развертывать производственные кластеры Kafka, писать надежные управляемые событиями микросервисы и создавать масштабируемые приложения для потоковой обработки данных. На подробных примерах вы изучите принципы проектирования Kafka, гарантии надежности, ключевые API и детали архитектуры.

5 причин добавить эту книгу в свою библиотеку:
1. Авторы — разработчики Kafka.
2. Лучшие практики развертывания и настройки Kafka.
3. Шаблоны и требования для обеспечения надежной доставки данных.
4. Паттерны построения конвейеров данных и приложений с помощью Kafka.
5. Правильные мониторинг, настройка и обслуживание Kafka в рабочей среде.

#интеграции
👍3911🔥6👏32
Хранимые процедуры и пользовательские функции в БД

📌Кратко

Хранимые процедуры предназначены для выполнения действий, а пользовательские функции - для вычислений и возврата значений.


✔️ Хранимые процедуры

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

Как используются?

🔘выполнение сложных операций (сортировка, фильтрация и агрегация), сложной бизнес-логики
🔘могут включать несколько операций, которые выполняются как одна транзакция
🔘последовательное выполнение нескольких SQL-команд
🔘регулярно выполняющихся операций, требующих быстрого повторного исполнения
🔘обеспечивают защиту, выполняясь на стороне сервера БД, а также контролируют доступ и выполнение операций. С помощью процедур можно реализовать логику доступа, проверки прав и аутентификации пользователей

Примеры

процедура принимает ID сотрудника в качестве входного параметра и возвращает его имя из таблицы Employees
процедура принимает данные о новом заказе (например, клиент, товары, количество) и добавляет соответствующую запись в базу данных.
входной параметр -- ID заказа, процедура извлекает информацию о товарах в заказе и вычисляет стоимость всех товаров.


〰️ Минусы
💩 когда сложны, тяжело поддерживаемы, возникают проблемы с рефакторингом
💩могут создавать зависимость от конкретной СУБД — затрудняет масштабирование
💩хранение бизнес-логики в PLSQL ведет к созданию монолита. Его дальнейшее разбиение затрудняется
💩 отладка не всегда удобна, логирование и обработка ошибок выполняется вручную


Пользовательские функции

Это фрагменты кода, предназначенные для выполнения конкретных операций или вычислений над данными
🔵принимают входные параметры, выполняют определенные вычисления и всегда возвращают результат
🔵не предназначены для изменения данных или выполнения транзакций

Как используются?

🔘 для сложных логических или арифметических операций
🔘возвращаемые значения используются в др. запросах / выражениях
🔘для использования операторах SQL (SELECT, WHERE и тд) для вычисления значений
🔘фильтрации данных, поиска определенных значений или обработки данных по заданными условиями
🔘для работы с текстовыми данными (разбиение строк, поиск подстрок, замена символов и тд)

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

〰️ Минусы
💩не эффективны в сложных запросах
💩на больших объемах данных могут привести к низкой производительности
💩отладка может быть трудной из-за изоляции от основного кода
💩могут зависеть от контекста сессии или окружения, что может привести к неожиданным результатам

✔️ Основные различия

Назначение
🟡процедуры -- для выполнения последовательности операций и изменения данных в БД
🔵функции -- для выполнения вычислений и возвращения результата

Возвращаемые значения
🟡процедуры могут возвращать 0 или более значений или изменять состояние БД
🔵функции возвращают только одно значение

Типы вызовов
🟡процедуры -- как отдельными операторами SQL, так и из других процедур и функций.
🔵функции -- вызываются обычно внутри запросов SQL или в выражениях, где нужно вычислить значения


ХП и пользовательские функции могут использоваться не только в БД, а еще в:
🟣приложениях на стороне сервера: могут быть частью серверных приложений, написанных на Java, C#, Python и др. Используются для обработки данных на сервере перед отправкой их клиенту.
🟣интеграциях в веб
🟣интеграциях с внешними системами, такими как API, сервисы и внешние БД, чтобы обрабатывать данные и для взаимодействия между приложениями и платформами.


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

#бд
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3716🔥8👏3🤡3
Денормализация в БД и не только

Ранее мы рассказывали про нормализацию в БД, рассмотрим обратный процесс.

Денормализация — внесение избыточности в БД путём объединения таблиц, чтобы упростить структуру и ускорить чтения данных

Отличие от нормализации

Нормализация нужна для устранения избыточности данных; для разделения информации по отдельным таблицам, чтобы обеспечать целостность и упростить обслуживания БД
😀Увеличивает количество джойнов при выполнении запросов и может замедлять чтение данных

Денормализация
, наоборот, вводит избыточность обратно в БД, объединяя таблицы и дублируя информацию
😀Запросы становятся проще, операции чтения быстрее. Но могут возникнуть трудности с поддержкой и обновлением из-за риска несогласованности


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

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

Методы

😀 Добавление избыточных данных: дублирование данных в нескольких таблицах для сокращения соединений при запросах
😀 Добавление производных или агрегированных столбцов: включение полей с предварительно вычисленными значениями, например, общей суммы заказа.
😀 Объединение таблиц: слияние смежных таблиц в одну для уменьшения операций соединения
😀 Денормализация иерархических структур: дублирование информации о верхних уровнях иерархии на нижних для упрощения запросов
😀 Использование материализованных представлений: хранение результатов сложных запросов в виде отдельной таблицы для быстрого доступа
😀 Введение таблиц сумм и счётчиков: создание отдельных таблиц для хранения суммарной информации, например, общее количество товаров, проданных за день, или общее количество посетителей сайта. Позволяет избежать необходимости агрегации больших объёмов данных при каждом запросе

Примеры

😀Агрегация данных: в таблице заказов хранится не только идентификатор клиента, но и агрегированная информация о клиенте, например, общая сумма покупок. Это избавляет от необходимости соединять таблицы заказов и клиентов для расчета общих покупок клиента
😀Кэширование результатов запросов: в таблице с продуктами может храниться не только информация о продукте, но и предварительно рассчитанное количество продуктов на складе. Это снижает нагрузку на СУБД за счет уменьшения количества вычислений при каждом запросе

Недостатки

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

Совет

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


Денормализация в других областях

😀Data Warehouse: улучшает производительность аналитических запросов через агрегированные структуры данных для быстрого выполнения запросов OLAP
😀NoSQL базы данных: для оптимизации горизонтального масштабирования и ускорения доступа к данным, храня связанные данные вместе
😀Frontend-разработка: при проектировании состояния приложений, например в Redux для React, для упрощения доступа к данным и улучшения производительности
😀Микросервисы: улучшает независимость и отказоустойчивость сервисов, храня данные, необходимые каждому микросервису в его собственной базе


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

#бд
Please open Telegram to view this post
VIEW IN TELEGRAM
👍367🔥6👏2
Нас 10 000
🎉13556👍6🔥5
🔄 CI/CD: Краткий обзор

Continuous Integration/Continuous Delivery (непрерывная интеграция и доставка) — подход к разработке приложений, который обеспечивает автоматизацию процессов сборки, тестирования и доставки кода.

Код интегрируется и доставляется пользователю итерационно, как можно чаще. Ценность CI/CD кроется в автоматизации всех этапов интеграции и развёртывания кода.

💩CI — практика интеграции кода от разных разработчиков в общий репозиторий. Разработчики как можно чаще сливают изменения в основную ветку, используя систему контроля версий (например, Git). При этом, любые изменения проходят через автоматические тесты.
💩CD — автоматизация развёртывания (доставки) кода в "прод" после успешной интеграции и тестирования.


✔️ Этапы CI/CD

1️⃣ Код. Разработка создает код, исправляет ошибки или делает доработки, выполняет тесты, а затем отправляет в ветку master с актуальной сборкой продукта. Несколько команд могут отправить любое количество модулей в master.
2️⃣ Сборка. Старт автоматической сборки и авто-тестов. Критерии запуска системы управления версиями и начала сборки настраиваются заранее.
3️⃣ Тестирование. После авто-тестов выкатываемой версии проекта, можно приступать к ручной проверке.
4️⃣ Релиз. После успешных тестов, разработчики вносят исправления и выпускают новую версию продукта.
5️⃣ Развёртывание. Отправка финальной версия кода на боевой сервер. Взаимодействие пользователя с сервисом
6️⃣ Поддержка и мониторинг. Разработка мониторит работу продукта, отслеживая и анализируя пользовательский опыт.
7️⃣ Планирование. На основе мониторинга и анализа, формулируются идеи новых доработок и улучшений. Цикл начинается заново - написание кода.


Плюсы CI/CD


+ Сокращение времени поставки (Time to Market): автоматизация процессов позволяет быстрее и чаще доставлять новые функции и исправления.
+ Качество кода: автотесты обеспечивают высокое качество кода, а регулярные интеграции помогают выявлять проблемы на ранних этапах.
+ Легкость масштабирования: Автоматизированные процессы легко масштабируются с увеличением объемов работы.
+ Однородная среда разработки: все члены команды работают в однородной среде - упрощает совместную разработку.

Минусы CI/CD

— Сложность внедрения: Реализация CI/CD требует времени и усилий для внедрения в существующие процессы разработки. обслуживания. Сложные системы CI/CD могут требовать значительных ресурсов для обслуживания
— Трудность согласования изменений: в больших командах интеграция изменений может быть сложной.
— Безопасность: неправильная настройка CI/CD может стать источником уязвимостей.
— Не всегда применимо: когда проект слишком маленький или слишком сложный для автоматизации всех процессов.


🖥 Программы для CI/CD:

Jenkins: Один из самых популярных и распространенных инструментов для CI/CD.
GitLab CI/CD: Встроенная система CI/CD в GitLab, интегрированная с GitLab репозиториями.
Travis CI: Облачный сервис CI/CD, легко настраиваемый для проектов на GitHub.
CircleCI: Облачная CI/CD-платформа с широкими возможностями конфигурации.
TeamCity: Мощный и гибкий инструмент CI/CD от JetBrains.


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

#devops
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍178
Kanban vs Scrum: сравнение методологий

Kanban и Scrum — методологии гибкого управления проектами, используемые для реализации принципов Agile и DevOps при разработке.

Kanban — подход к управлению процессом разработки, который включает следующие практики:

💩Визуализация задач и прогресса с помощью канбан-доски, установление приоритетов задачам
💩Ограничение количества задач со статусом "В работе", или WIP (work in progress). Если лимит превышен, то команда не может взять новую задачу в работу, пока не будет завершена одна из текущих
💩Управление потоком: отслеживание метрик, таких как скорость движения задач между статусами, для устранения «бутылочных горлышек», где процесс замедляется
💩Проведение каденций — встреч членов команды по процессу разработки. Всего выделяют 7 видов встреч. Главная цель — объяснение правил для всех участников команды и сбор обратной связи
💩Непрерывное улучшение процесса на основе обратной связи и анализа метрик

Что общего между Kanban и Scrum


Обе методологии относятся к Agile
Важна визуализация работы для прозрачности и оценки текущего состояния задач.
Имеют итерационный подход к работе, даже если длительность итераций различается.
Имеют механизмы для определения и управления приоритетами задач.
Акцентируют внимание на командной работе и взаимодействии между участниками

Различие подготовили в сравнительной таблице постом выше.


Когда лучше применять

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

Scrum:

💩 важен строгий контроль сроков и структура
💩 требуется четкое определение целей и результатов
💩 команда является кросс-функциональной
Пример: Разработка новой версии продукта с фиксированным релизным циклом, например, каждые 3 месяца.


Когда не подойдет

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

Scrum

💩 продукт нужен целиком, итерации невозможны
💩 когда нет сплочённой, самоорганизованной и кросс-функциональной команды
💩 для слишком маленьких групп из 1–2 человек, или, наоборот, больших лучше заменить другими методами — SAFe, LeSS.


☯️ Гибрид ScrumBan

Используется в средах, где необходимо управление проектом в условиях неопределенности и частых изменений. ScrumBan легче внедрить, чем Scrum
💩от Scrum: сохраняет ключевые элементы Scrum: спринты, роли (Product Owner, Scrum Master, и команда разработки) и основные события (планирование, ревью, ретроспектива).
💩от Kanban: заимствует концепцию визуализации процесса на доске, ограничения рабочего объема, адаптацию к изменениям в реальном времени и фокус на поток задач.


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

#управление_проектами
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍178👎4
Scrum vs Kanban: сравнение по пунктам
👍527🔥2💩1
UX/UI: краткий обзор

💙UX (User Experience — «пользовательский опыт») отвечает за то, как интерфейс работает

💙UI (User Interface — «пользовательский интерфейс») отвечает за то, как интерфейс выглядит

Цели UI/UX дизайна

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


💙 UX

Примеры UX-анализа

💙 Исследование пользовательского поведения: взаимодействие с веб-сайтом или приложением, анализ переходов между страницами, время пребывания на страницах, клики на элементы и т. д.
💙 Тестирование пользовательского интерфейса: удобство использования, понятность и эффективность. Например, тесты сценариев использования или а/б-тестирования
💙 Сбор обратной связи от пользователей: анализ отзывов о продукте, определение их потребности и предпочтения, выявление проблем, с которыми пользователи сталкиваются

Основные принципы UX

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

Usability ≠ UX

Usability - лишь часть хорошего UX

💙 Usability - удобство и легкость взаимодействия пользователя с продуктом
Цель: сделать задачу легко, интуитивно и быстро
💙Достиг ли пользователь цели максимально удобным способом?

💙 UX - опыт взаимодействия пользователя. Восприятие и совокупность эмоций, возникающих в результате использования продукта
Цель: сделать пользователя счастливым до, во время и после использования продукта
💙Был ли опыт пользователя максимально положительным?


💙 UI

Примеры
UI -анализа

⤵️ Анализ дизайна и компоновки: изучение дизайна интерфейса, например, расположение элементов на странице
⤵️ Изучение цветовой гаммы и шрифтов: анализ и оценка их соответствие бренду, легкость восприятия и читаемость.
⤵️ Проверка совместимости с устройствами: как интерфейс отображается на устройствах и разрешениях экрана, рекомендации по адаптивной верстке для оптимального пользовательского опыта.

Основные принципы UI

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

🟣 Адаптивная верстка

Это подход к созданию веб-страниц, при котором страницы адаптируются к различным устройствам и разрешениям экрана.


Этапы разработки UX/UI

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


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

#развитие #uxui
Please open Telegram to view this post
VIEW IN TELEGRAM
28👍15🔥7💩2🤔1🎉1
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 для записи логов, не является объектом из реального мира, но играет важную роль в системе для логирования

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

#проектирование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍205🔥2🤔2
Формализация_требований_на_практике.pdf
780.3 KB
Формализация требований на практике

✍️ Авторы: В. В. Кулямин, Н. В. Пакулин, О. Л. Петренко, А. А. Сортов, А. В. Хорошилов
🗓 Год издания: 2006
🔤 Язык: русский
📚 Объём: 69 стр.

Подробное руководство по методам обеспечения адекватного понимания потребностей пользователей и их отражения в формальных моделях. Авторы рассматривают ключевые аспекты работы с требованиями и предлагают эффективные методы их формализации.

О чём книга

✔️ Улучшение процесса сбора требований: Методы и техники для точного выявления и описания задач, которые должно решать программное обеспечение. Книга поможет лучше понимать потребности пользователей и формализовать их.
🚫 Анализ и сравнение методов работы с требованиями: Обзор и сравнение различных подходов, таких как RUP, DOORS, CORE, SSM, RAISE.
📐 Формальные модели: Примеры использования формальных моделей для представления требований и методов их решения.
✏️ Как использовать формальные модели для улучшения взаимодействия между командами разработчиков и заказчиками.
📝 Процесс формализации требований FOREST: Детальное описание процесса формализации требований, включая этапы и техники.

#требования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍349🔥5🤔3🎉1
Оконные функции

Оконные функции — функции, которые выполняют вычисления внутри заданного набора данных или "окна" в таблице БД

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

1⃣ Оконная функция (ОФ) определяет "окно" данных, на которых будет выполняться вычисление (несколько строк или диапазон значений столбца)
2⃣ Если требуется, данные внутри окна упорядочиваются по одному/нескольким столбцам
3⃣ Применяются вычисления, заданные в ОФ (сумма, среднее значение, ранжирование и тд)
5⃣ Если требуется, результаты группируются по столбцам или выражениям
5⃣ Возврат результатов

Упрощенный синтаксис

➡️ <имя функции> OVER (<окно>)
где имя функции = имя оконной функции
окно = выражение, описывающее набор строк для обработки и порядок обработки


Характеристики

🟠в отличие от агрегатных функций, оконные могут вычислять значения для каждой строки в результате запроса. Агрегатные работают над всем набором данных
🟠это не то же самое, что GROUP BY. ОФ не уменьшают количество строк, а возвращают столько значений, сколько получили на вход
🟠в отличие от GROUP BY, OVER может обращаться к другим строкам


Как используются?


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


Виды


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

Ранжирующие — назначают ранг каждой строке в пределах окна в соответствии с заданными критериями сортировки. Например, можно ранжировать товары по его цене в каждой категории.
Под ключевым словом OVER обязательным идёт условия ORDER BY, по которому будет происходить сортировка ранжирования
➡️ROW_NUMBER — возвращает номер строки, используется для нумерации;
➡️RANK — возвращает ранг каждой строки

Смещения — позволяют перемещаться и обращаться к разным строкам в окне, относительно текущей строки, а также к значениям в начале или в конце окна
➡️LAG — обращается к данным из предыдущих строк окна
➡️LEAD — обращается к данным из следующих строк. Аналогично LAG имеет 3 аргумента


Примеры

➡️Ранжирование данных
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 Партиция в оконных функциях

Окно — набор строк внутри результата запроса, на котором выполняется операция агрегации или аналитическая функция
➡️Таблица с данными о студентах и их оценках за тесты.
Нужно вычислить средний балл каждого студента по последним трем тестам.
ОФ определит "окно", которое охватывает последние три записи для каждого студента, и вычислит средний балл только в этом окне данных.

Партиция (оператор PARTITION BY) — подмножество строк, выделенное для ОФ по одному/нескольким столбцам в таблице.
Задает условие, по которому эти строки группируются для вычисления функций.
➡️ Есть таблица с данными о продажах,.
ОФ помогут вычислить суммы продаж в каждом регионе отдельно.
Партиция разделит данные на группы по регионам, после чего сумма продаж вычисляется в каждой группе отдельно.

💡 Окно определяет, где выполняется функция,
а партиция - как данные группируются для выполнения этой функции


Недостатки оконных функций

🟢не все СУБД их поддерживают
🟢производительность может ухудшаться из-за их влияния на выполнение запроса
🟢отладка также может быть затруднительна


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

#бд #sql
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍1882
🔐 Хэширование и Шифрование

🤗 Хэширование и Хэш-функции

⚪️Хэширование — преобразование данных с помощью специального алгоритма
В результате возникает хеш (hash) — отображение данных в виде уникальной строки
😍размер строки одинаковый для информации разного объема.
😍хеш состоит из цифр и латинских букв.


😂 Хэш-функция

Хэш-функция
— алгоритм, который принимает входные данные любого размера и возвращает хэш фиксированного размера
Результат хеш-функции называется «хеш-суммой»\«хеш», а входные данные — «сообщением»
Исходное сообщение -> [Хэш-функция] -> Хэш 


Когда хэши совпадают — это коллизия. Это небезопасно, т.к. позволяет подменить данные.

Как работает хеш-функция


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

🔣В хеш-функциях для более простых случаев преобразования проще. Например, хэш-функция построения таблиц

🔣Хэш с солью — хэш, к которому добавили случайные данные (соль) перед хэшированием.
Это делается, чтобы предотвратить атаки по радужным таблицам и сделать каждый хэш уникальным, даже для одинаковых исходных данных

Основные характеристики хэш-функций

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


Для чего используется хэширование

*️⃣для проверки целостности данных. Создается уникальный хеш исходных данных. Получатель вычисляет хеш и сравнивает его с переданным. Совпадение хешей подтверждает неизменность данных
*️⃣для безопасного хранения паролей: вместо паролей на сервере хранятся их хеши, что предотвращает доступ к паролям в случае утечки данных
*️⃣для создания цифровых подписей: создается хэш сообщения. Он шифруется закрытым ключом отправителя, создавая цифровую подпись. Получатель расшифровывает подпись с помощью открытого ключа отправителя и сравнивает с хэшем полученного сообщения. Хеши совпадают — документ подписан отправителем

Примеры хэширования


😍антивирус хранит в базе хеши вирусов, а не программы, что не позволяет исполнять вредоносное по
😍веб-серверы используют хеши для проверки изменений на страницах. Если хеши совпадают, страница не изменялась, и её можно загрузить из кэша
😍информация о транзакциях криптовалюты хранится в виде хешей

Популярные алгоритмы хэширования

MD5 (Message Digest Algorithm 5)
SHA-1 (Secure Hash Algorithm 1)
SHA-2 — семейство алгоритмов с общей идеей хеширования данных
☺️SHA-256


🥶 Шифрование

Шифрование — преобразование данных в вид, который нельзя прочитать без специального ключа

Как работает шифрование

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

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

Симметричное: Один и тот же ключ используется как для шифрования, так и для дешифрования данных
Асимметричное: Используются два различных ключа – публичный для шифрования и приватный для дешифрования

Для чего используется

⚪️Конфиденциальность: защищает данные от несанкционированного доступа
⚪️Целостность: чтобы данные не были изменены
⚪️Аутентификация: подтверждает подлинность отправителя данных

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

😥в HTTPS для защиты данных при передаче между веб-браузером и сервером
😥в емэйлах для прочтения только авторизованными пользователями
😥VPN сервисы шифруют интернет-трафик между устройством и сервером VPN
😥в бд при передаче и хранении

Популярные алгоритмы


AES (Advanced Encryption Standard)
RSA (Rivest–Shamir–Adleman)
Blowfish


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

#безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥1612
😸 Работа со списками данных в REST API: сортировка, фильтрация, пагинация

🟧Сортировка

Нужна, чтобы упорядочить данные по определённому критерию

Алгоритм работы

🤯клиент отправляет запрос к API с параметром сортировки
🤯сервер обрабатывает запрос, извлекает данные из БД, сортирует по параметру и возвращает их

Примеры параметров

🟧Sort или order_by: для указания поля и порядка сортировки
GET /products?sort=price&order=desc
сортировка по цене в порядке убывания
🟧Order: указывает порядок сортировки, по возрастанию (asc) или убыванию (desc)
GET /products?sort=price&order=desc — сортировка по цене в порядке убывания
sort=field1,field2 sort = field1,field2: указание несколько полей для сортировки
GET /products?sort=price,name — сначала сортировка по цене, затем по имени
🟧custom_sort: пользовательская логика сортировки
GET /products?custom_sort=popularity — сортировка по популярности, где popularity — кастомный критерий
🟧nulls (first или last): указывает, где значения null должны идти (первыми / последними)
GET /products?sort=price&nulls=last — значения null идут последними

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

🟧 сортировка вакансий по дате публикации, зарплате или компании
🟧 сортировка плейлистов по популярности, дате релиза или алфавиту.

🌇 Чтобы избежать сложных и затратных, нужно ограничивать количество сортируемых полей


💙 Фильтрация

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

В URL, используются параметры строки запроса для условий фильтрации
Каждый параметр имеет формат field=value, несколько параметров разделяются символом "&"

Методы

Поиск по значению: на основе точного совпадения значений
GET /api/items?status=active — фильтрует все элементы, у которых статус = active
Диапазонный фильтр: когда значения находятся в определенном диапазоне
GET /api/items?price[gte]=10&price[lte]=50 — элементы с ценой в диапазоне от 10 до 50
Поиск по подстроке: когда значения содержат указанную подстроку
GET /api/items?name[like]=%book% — элементы со словом book в названии
Фильтрация по множеству значений: значения записей из набора
GET /api/items?category=in:(books,electronics) — элементы с категорией books или electronics

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

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

💙Для более точного поиска можно комбинировать несколько фильтров.
Для ускорения запросов — использовать индексы на колонках, которые часто фильтруются


♥️ Пагинация

При пагинации происходит разделение данных на страницы для удобства просмотра и ускорения ответов

Алгоритм работы

клиент отправляет запрос к API с параметрами пагинации
сервер его обрабатывает, извлекает нужное количество записей из БД, начиная с указанного смещения (offset)
возвращает данные и информацию о наличии следующих страниц

Методы

➡️ Offset-Based: использует параметры limit и offset для определения диапазона возвращаемых записей
GET /items?limit=10&offset=20 — возвращает 10 элементов, начиная с 21-го элемента (т.к. offset=20)
➡️ Page-Based: использует параметры page и page_size для определения страницы данных и количества записей на странице
GET /items?page=3&page_size=10 — 10 элементов, начиная с третьей страницы
➡️ Cursor-Based: использует указатели позиции (курсоры) в наборе данных. Позволяет избежать проблем с изменением данных во время пагинации
GET /items?cursor=abc123&limit=10 — 10 элементов, начиная с позиции, определенной курсором abc123

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

🔴Соц сеть отображает ленту новостей с постами по 10 шт на странице
🔴Пользователи видят только несколько товаров на одной странице

💚 Полезно возвращать информацию о текущей странице, общем кол-ве страниц и кол-ве записей в ответе API
Для больших наборов данных лучше использовать курсорную пагинацию


🖋️ Порядок в запросе

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


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

#api
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4316🔥8
🌎 Как работает интернет

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

Структура интернета

🔵 Протоколы связи: Основной протокол интернета — это TCP/IP (Transmission Control Protocol/Internet Protocol). TCP гарантирует целостность передачи, разбивая данные на пакеты и контролируя их доставку. IP отвечает за маршрутизацию пакетов от отправителя к получателю
🔵 Доменная система имен (DNS): Распределенная база данных, которая служит для хранения и преобразования доменных имен (например, google.com) в IP-адреса (172.217.18.0), которые используются для маршрутизации данных в интернете
🔵 Интернет-провайдеры (ISP): Компании, которые предоставляют доступ к интернету
🔵 Маршрутизаторы и коммутаторы: Устройства, которые направляют данные через сеть, по оптимальным маршрутам
🔵 Протоколы приложений: Протоколы, такие как HTTP/HTTPS, FTP, SMTP, POP3 и другие, обеспечивают работу интернет-сервисов и приложений (веб-сайты, электронная почта, файловый обмен и т.д.).

Интернет работает на базе набора протоколов TCP/IP, которые реализовывают 3, 4 и 7 уровни модели OSI:

🔵TCP (Transmission Control Protocol): Обеспечивает надежную передачу данных.
🔵IP (Internet Protocol): Определяет маршрутизацию пакетов.
🔵HTTP/HTTPS (HyperText Transfer Protocol): Протоколы передачи гипертекста, обеспечивающие взаимодействие между клиентом и сервером. HTTPS включает шифрование для безопасности.

Подробнее про OSI — в наших постах (ссылки в материалах)


Доменная система имен (DNS). Включает:

1⃣ Корневые серверы — вершина иерархии DNS. Их задача — направлять запросы к соответствующим серверам доменов верхнего уровня (TLD). В мире существует 13 наборов корневых серверов, обозначенных буквами от A до M, управляемых различными организациями.
Пример: Один из корневых серверов — A.ROOT-SERVERS.NET, управляемый организацией VeriSign.

2⃣ DNS-серверы доменов верхнего уровня (TLD DNS Servers — top-level domains) — управляют доменами верхнего уровня, такими как .com, .org, .net, .ru и т.д. Они получают запросы от корневых серверов и направляют их к авторитетным серверам для конкретных доменов второго уровня.
Пример: Для домена .com существует множество TLD серверов, например, a.gtld-servers.net.

3⃣ Авторитетные серверы содержат информацию о доменных именах и их IP-адресах. Возвращают окончательные ответы на DNS-запросы.
Пример: Если запрос касается домена 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?

1⃣ Браузер отправляет запрос на локальный DNS-сервер.
2⃣ Локальный DNS-сервер ищет IP-адрес. Если не находит, пересылает запрос на корневой сервер
3⃣ Корневой сервер направляет запрос на TLD-сервер (для .com)
5⃣ TLD-сервер направляет запрос на авторитетный DNS-сервер для google.com
5⃣ Авторитетный сервер возвращает IP-адрес
6⃣ Браузер отправляет HTTP/HTTPS-запрос на полученный IP-адрес
7⃣ Сервер Google отвечает, и браузер отображает страницу

Автор: Виталия Малютина

#сети
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥50👍2410
🔵OLTP и OLAP

OLTP

OLTP (Online Transaction Processing) — система, предназначенная для управления и обработки множества транзакций в режиме онлайн
Транзакции обычно включают в себя операции создания, чтения, обновления и удаления (CRUD)

Алгоритм работы

🟡Ввод данных: пользователь вводит данные через интерфейс (форму заказа в Amazon)
🟡Валидация: система проверяет корректность и полноту введенных данных (проверка номера карты)
🟡Транзакция: cистема создает транзакцию с операциями (уменьшение количества товара на складе)
🟡Запись в БД: изменения сохраняются в БД, используя характеристики ACID
🟡Подтверждение: пользователь получает уведомление об успешном выполнении транзакции (сообщение об успешной покупке)

Характеристики

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

Примеры

Сбербанк Онлайн — банковские транзакции и управления счетами
1С:Предприятие — учет и управления предприятием
Ozon — бронирование и продажа товаров, управление складскими запасами
РЖД — бронирование и продажа билетов


OLAP

OLAP (Online Analytical Processing) — система для выполнения сложных запросов и анализа больших объемов данных.
— Собирает информацию из БД, ERP, CRM и др источников, затем формирует многомерный массив данных для дальнейшего анализа. Эти массивы называют OLAP-кубами
Кубы объединяют информацию из большого числа таблиц с её предварительной обработкой. Могут иметь разные измерения (в годах, регионах и тд)

Компоненты OLAP

Источники данных — реляционные или многомерные БД, хранилище данных
ETL-инструменты (extract, transform, load) — набор средств извлечения, преобразования и загрузки данных в хранилище
OLAP-сервер, управляющий многомерными массивами данных
Аналитические инструменты для формирования отчетов, графиков, диаграмм для пользователей

Алгоритм работы

данные поступают из различных источников, таких как OLTP системы, файлы, сторонние API в ETL систему
процесс ETL:
— извлечение данных
— данные очищаются, нормализуются и преобразуются
— загрузка в OLAP хранилище
данные организуются в многомерные структуры (кубы) для быстрого выполнения аналитических запросов
пользователь запрашивает данные через аналитический интерфейс, выполняются аналитические запросы (агрегация, фильтрация, анализ)
результаты анализа визуализируются, создаются отчеты и дашбордов

Характеристики

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

Примеры систем

Yandex DataLens — визуализация и анализа данных
Microsoft Power BI — инструмент бизнес-анализа
Vertica — БД для OLAP


Cвязь между OLTP и OLAP

Дополняют друг друга в процессе управления данными и аналитики:
🟡OLTP системы генерируют и собирают данные через транзакционные операции. Данные используются в OLAP системах для анализа и отчетности
🟡данные из OLTP систем извлекаются, преобразуются и загружаются в OLAP системы для анализа
🟡результаты анализа из OLAP систем могут влиять на операции в OLTP системах
(анализ покупательского поведения может привести к изменениям в маркетинговых кампаниях или стратегиях продаж)


Пример компонентов архитектуры с OLTP и OLAP системами

OLTP
🟡Пользовательский интерфейс (UI): веб-приложение / мобильное приложение
🟡Серверное приложение для обработки транзакций и бизнес-логики
🟡Реляционная БД: для хранения транзакционных данных

OLAP
🟡ETL Процесс: извлечения, трансформации и загрузки данных из OLTP БД в хранилище данных
🟡Хранилище данных: централизованное, для анализа данных
🟡Аналитические инструменты (BI Tools): для анализа данных и создания отчетов


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

#проектирование #бд
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍127
🔖Паттерны проектирования и архитектурные паттерны

Паттерны проектирования
(ПП) — проверенные решения для часто встречающихся проблем в ПО. Шаблоны, которые применяются для повышения эффективности и качества кода

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


✳️ Отличие

Служат для разных уровней проектирования ПО:

🟢 ПП работают на уровне классов и объектов. Используются разработчиками при написании / рефакторинге кода
🔵 АП на более высоком уровне, описывают структуру всего продукта. Определяют на какие компоненты/модули будет делиться приложение и каким образом они взаимодействуют


✳️ Паттерны проектирования

Применение

Улучшение читаемости и поддержки кода
Уменьшение дублирования кода
Помогают быстрее и эффективнее создавать код

Делятся на три вида:

🟢 Порождающие

Для создания экземпляра объекта или группы связанных объектов

➡️ Одиночка (Singleton): гарантирует существование только одного экземпляра определенного класса, который можно использовать из любой части программы
➡️ Фабрика (Factory): создает объекты через специальный метод или класс, скрывая детали их создания
➡️ Прототип (Prototype): объект сам создает свои копии
➡️ Ленивая инициализация (Lazy Initialization): создает объект по мере необходимости

🟢 Структурные

В основном связаны с композицией объектов, с тем, как сущности могут использовать друг друга

➡️ Декоратор (Decorator): динамически добавляет новые обязанности объектам
➡️ Фасад (Facade): предоставляет простой интерфейс к сложной системе, скрывая ее реализацию
➡️ Заместитель (Proxy): паттерн, похожий на «Фасад», но со специальным объектом-заместителем, который контролирует доступ к основному

🟢 Поведенческие

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

➡️ Наблюдатель (Observer): позволяет объектам следить за изменениями состояния другого объекта
➡️ Посредник (Mediator): организует слабые связи между объектами, чтобы снизить их зависимость друг от друга
➡️ Хранитель (Memento): помогает сохранить объект в каком-то состоянии с возможностью вернуться к нему в будущем


✳️ Архитектурные паттерны

Применение

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

Примеры


Более абстрактные:
➡️ Service-Oriented Architecture (SOA) (Сервис-ориентированная архитектура): система организована вокруг предоставления услуг (сервисов), которые могут использоваться различными приложениями
➡️ Layered Architecture (Слоистая архитектура): делит систему на уровни (слои), каждый из которых отвечает за конкретный функционал

Более конкретные:
➡️ Event-Driven Architecture (Событийно-ориентированная архитектура): компоненты системы взаимодействуют через передачу событий. Это один из способов реализации SOA
➡️ Микросервисы: разделяет приложение на небольшие, самостоятельные сервисы, которые могут разрабатываться и разворачиваться независимо. Является конкретным примером SOA
➡️ Клиент - сервер: делит систему на серверы, предоставляющие услуги, и клиенты, запрашивающие их
➡️ MVC (Model-View-Controller) (Модель-Вид-Контроллер): разделяет систему на три основные компоненты для улучшения тестирования и организации кода


✳️ Взаимосвязь GRASP с архитектурными паттернами

В объектно-ориентированных системах внутри архитектурных паттернов можно использовать паттерны GRASP
Например, паттерны для распределения обязанностей между классами и объектами (Creator, Information Expert)
Они помогут определить, как распределять обязанности


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

#проектирование #архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍163
🗺 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: фокусируется только на точках взаимодействия клиента с продуктом, без детального анализа этапов пути клиента


#требования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍229🔥42