🔄 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
Continuous Integration/Continuous Delivery (непрерывная интеграция и доставка) — подход к разработке приложений, который обеспечивает автоматизацию процессов сборки, тестирования и доставки кода.
Код интегрируется и доставляется пользователю итерационно, как можно чаще. Ценность CI/CD кроется в автоматизации всех этапов интеграции и развёртывания кода.
Плюсы 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👍17❤8
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: заимствует концепцию визуализации процесса на доске, ограничения рабочего объема, адаптацию к изменениям в реальном времени и фокус на поток задач.
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#управление_проектами
Kanban и Scrum — методологии гибкого управления проектами, используемые для реализации принципов Agile и DevOps при разработке.
Kanban — подход к управлению процессом разработки, который включает следующие практики:
Что общего между Kanban и Scrum
Различие подготовили в сравнительной таблице постом выше.
✅ Когда лучше применять
Kanban:
Scrum:
Пример: Разработка новой версии продукта с фиксированным релизным циклом, например, каждые 3 месяца.
❌ Когда не подойдет
Kanban
Scrum
☯️ Гибрид ScrumBan
Используется в средах, где необходимо управление проектом в условиях неопределенности и частых изменений. ScrumBan легче внедрить, чем Scrum
#управление_проектами
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍17❤8👎4
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
Цели UI/UX дизайна
Примеры UX-анализа
Основные принципы UX
Usability ≠ UX
Usability - лишь часть хорошего UX
Цель: сделать задачу легко, интуитивно и быстро
Цель: сделать пользователя счастливым до, во время и после использования продукта
Примеры UI -анализа
Основные принципы 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 для записи логов, не является объектом из реального мира, но играет важную роль в системе для логирования
⭐️ Подборка материалов доступна в базе знаний по системному анализу
#проектирование
Проектирование ПО начинается с определения архитектуры высокого уровня (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