Ранее описывали процесс кэширования
Рассмотрим подходы к работе с кэшем
Стратегии чтения данных
Обновление кэша: обновляется только после запроса данных из БД
Пользователь запрашивает карточку товара: приложение сначала проверяет кэш.
Если информации нет, данные запрашиваются из базы и сохраняются в кэш
Обновление кэша: автоматически при отсутствии данных в нём, во время запроса из БД
Если статьи нет, кэш автоматически получает её из БД, обновляет кэш и передаёт статью пользователю
Стратегии записи данных
Обновление кэша: приложение запрашивает данные из БД. Получает и записывает их в кэш
Кэш обновляется только при последующем чтении. Изменения редки и не требуют моментальной синхронизации с кэшем
Обновление кэша: кэш и БД всегда синхронизированы, так как данные записываются одновременно в в БД и в кэш
При запросах транзакции всегда можно получить актуальные данные как из кэша, так и из базы
Обновление кэша: данные в кэше актуальные, но БД обновляется позже, асинхронно
Кэш откладывает запись в БД на попозже для асинхрона.
Помогает быстро сохранить изменения пользователя без задержек, хотя БД обновляется с задержкой
Хранение кэша
Кэш в архитектуре приложения обычно хранится в памяти, либо на выделенных серверах для кэширования. Их располагают ближе к приложению для быстрой обработки запросов.
Например,
1. [По полочкам] Кэширование
2. SE: Проектирование эффективной системы кэширования
3. Стратегия кеширования в приложении
4. Все о кэшировании: стратегии, проблемы и оптимизация
5. Все о кэшировании и кэшах
6. Основные принципы кэширования веб-приложений
7. Проектирование эффективной системы кэширования для высоконагруженной системы
8. Cache-aside паттерн
9. Введение в кэширование со сквозным чтением с помощью NCache
10. Продуманные запросы: стратегии кэширования в век PWA
#проектирование #архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍11🔥6😁1
Server-Sent Events (SSE) — технология, при которой сервер отправляет клиенту обновления по мере их появления.
Клиенту не нужно отправлять повторяющиеся запросы
Соединение одностороннее: от сервера к клиенту
Как работает
Где применяется
Когда сервер должен регулярно обновлять информацию на веб-странице.
Например:
Пример работы SSE для мониторинга системы
Плюсы и минусы
1. Асинхронный веб: WebSocket, Server-Sent Events, Long Polling и Short Polling
2. Подписки на GraphQL: Почему мы используем SSE/Fetch вместо Websockets
3. Вам посылка, или Как мы доставляем сообщения с сервера на клиент в реальном времени
4. Server-Sent Events: пример использования
5. Потоковое обновление с событиями, отправленными сервером
6. Server Sent Events
7. WebSockets vs SSE: особенности и сценарии использования
📚Книги
1. Сергей Константинов. API
2. Джей Гивакс. Паттерны проектирования API
3. Арно Лоре. Проектирование веб-API
#api #интеграции
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29❤11👍11
SOLID — набор принципов проектирования объектно-ориентированных систем.
Помогает создавать гибкую, поддерживаемую и масштабируемую архитектуру.
Нужны для улучшения структуры и качества кода.
SOLID и ООП: в чём разница?
ООП даёт инструменты, а SOLID помогает применять их эффективно.
Принципы SOLID
Каждый класс должен решать одну задачу
делай модули меньшеКласс должен быть открыт для расширений, но закрыт для изменений
делай модули расширяемыми и полиморфизм - способность объектов разных типов использовать общий интерфейс для выполнения различных действий
Подклассы должны заменять родительские классы без ошибок
наследуйся правильноУзкие специализированные интерфейсы лучше, чем один общий
дроби интерфейсыМодули должны зависеть от абстракций, а не от конкретных реализаций
используй интерфейсыи полиморфизма для уменьшения зависимости между модулями
Зачем аналитику SOLID?
1. Принципы SOLID в программировании — что это такое
2. SOLID
3. Простое объяснение принципов SOLID
4. SOLID принципы: что это такое и зачем они нужны?
5. SOLID — это несложно. С примерами на Python
6. SOLID == ООП?
📚Книги
1. Чистая архитектура — Роберт Мартин
2. Объектно-ориентированный анализ и проектирование с примерами приложений - Грэди Буч
3. Объектно-ориентированное мышление - Мэтт Вайсфельд
4. Приемы объектно-ориентированного проектирования. Паттерны проектирования. Хелм Ричард, Влиссидес Джон
#проектирование
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍11❤9
Сравнение способов асинхронного взаимодействия API
🧑🎓 Описание каждого метода и материалы можно найти в базе знаний по системному анализу
#интеграции #async
#интеграции #async
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥48👍16❤11
MOM/MQ — не шины данных, но могут быть частью решения, основанного на шине
ESB (Enterprise Service Bus)
Как работает
1. приложение отправляет данные на ESB через адаптер (например, для БД или веб-сервиса)
2. ESB преобразует формат данных, если требуется
3. шина маршрутизирует сообщение в нужное приложение
4. получатель получает сообщение и обрабатывает его
Шина данных считается устаревшим видом интеграции:
Пример: Apache Camel, MuleSoft
MOM (Message-Oriented Middleware)
Как работает
1. приложение отправляет сообщение посреднику (MOM)
2. посредник сохраняет сообщение в буфере до тех пор, пока приложение-получатель не будет готово его принять
3. получатель обрабатывает сообщение, когда готов
4. MOM удаляет сообщение из буфера только после его успешной доставки
Пример: ActiveMQ, RabbitMQ - поддерживают и очереди, и другие модели, такие как Pub/Sub
MQ (Message Queue)
Пример: IBM MQ
1. От хаоса к порядку: как легко интегрировать сервисы с помощью Enterprise Service Bus
2. Шины данных (ESB): зачем компаниям использовать этот инструмент
3. Почему технари против шин данных: middleware, ESB, брокеров сообщений?
4. Как я 10 лет строю интеграцию в банке: от ESB-монолита к целой линейке систем
5. Уже поменяли шину? Наш опыт «переобувания» и разработки интеграционной платформы
6. ESB интеграция: объяснение и цель
7. Что такое MQ? Основные понятия
8. Интеграция на основе сообщений. Преимущества и отличия от других подходов
9. Кафка это шина? API, MQ, шины/ESB. Неочевидные минусы подходов и их плюсы
#проектирование #архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤11🔥6🤣3
Media is too big
VIEW IN TELEGRAM
Все посты из канала за всё время разложены по полочкам в едином месте — базе знаний 🤓
Наша цель — сделать кладезь знаний системного аналитика 🧠
Какие плюшки вас ждут:
🗂 Все знания в едином месте: кратко, ёмко, без воды и с подборками полезных материалов 🔥
📝 Контент на заказ бесплатно: хотите материал на конкретную тему? Любой покупатель может оставить запрос, и мы сделаем обзор с исчерпывающей подборкой материалов абсолютно бесплатно!
На analitik.me можно узнать про Базу знаний больше.
P.S. Если нет карты РФ и по любым другим вопросам можно писать сюда: @radale
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32❤12⚡5😁5👍4
Архитектурные паттерны — шаблоны для высокоуровневой организации системы.
Определяют основные компоненты системы, их взаимосвязи и взаимодействия
Паттерны MV(X) используются в
MV(X) — семейство паттернов со схожей структурой
Разделяют приложения на основные компоненты:
тем проще управлять проектом, добавлять и тестировать компоненты
Рассмотрим некоторые из них:
MVC (Model-View-Controller)
Controller: логика, которая связывает model и view
Подходит для небольших / средних приложений
Чем проще Controller, тем лучше
Пример
В веб-приложении для управления библиотекой:
Недостатки
MVP (Model-View-Presenter)
Presenter: полностью управляет логикой view
Отличие от MVC: связь view и model идет через presenter, а не напрямую
Эффективен в приложениях с высокой нагрузкой на UI,
и где необходимы модульные тесты, т.к. Presenter можно тестировать
Пример
В Android-приложении для управления задачами:
Недостатки
MVVM (Model-View-ViewModel)
View взаимодействует с ViewModel через привязку данных
ViewModel
Эффективен для приложений со сложными структурой данных и интерфейсом
Пример
В WPF-приложении для управления контактами:
Недостатки
1. MVC
2. Достоинства использования MVC архитектуры в разработке клиент-серверного интернет-магазина
3. Что такое MVP архитектура
4. Реализация MVC паттерна на примере создания сайта-визитки на PHP
4. MVC против MVVM — разница между ними
5. Понимание различий: MVC и MVVM
6. Шпаргалка по MV-паттернам для проектирования веб-приложений
7. Архитектурные шаблоны: объяснение MVC, MVP и MVVM
8. Паттерны для новичков: MVC vs MVP vs MVVM
#архитектура #проектирование
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤8👍6⚡1
Kafka поддерживает транзакции, чтобы гарантировать выполнение операций по принципу «всё или ничего»
Такая гарантия доставки называется exactly-once
Подробнее о других типах гарантии доставки тут
Когда применяется
Как работают транзакции в Kafka
transactional.id. Это идентификатор, который отличает записи транзакцийКоммит фиксирует сообщения, и они становятся видимы потребителям, в противном случае -- откатываются
ACID в Kafka
read_committed (на стороне консьюмера) потребители могут видеть только зафиксированные данные, пока транзакция не завершенаПлюсы и минусы
Пример транзакции в Kafka
Система обработки заказов. Нужно записать информацию сразу в несколько топиков для сгласованности данных
Есть два топика в Kafka:
— orders: хранит общую информацию о заказе
— inventory: содержит информацию об изменении запасов после заказа
Шаги для транзакции:
Результат: транзакция гарантирует, что потребители прочтут согласованные данные
1. Изоляция транзакций в Apache Kafka при потреблении сообщений
2. Семантика exactly-once в Apache Kafka
3. Транзакции в Apache Kafka: атомарность публикации сообщений
4. Что такое гарантия доставки сообщений или как избавиться от дублей и потерь в Apache Kafka и других Big Data брокерах
📚 Книги
1. Kafka в действии -- Дилан Скотт, Виктор Гамов и Дейв Клейн
2. Apache Kafka. Потоковая обработка и анализ данных -- Гвен Шапира, Тодд Палино, Раджини Сиварам, Крит Петти
3. Effective Kafka: A Hands-On Guide to Building Robust and Scalable Event-Driven Applications with Code Examples in Java -- Emil Koutanov (англ)
#интеграции
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍14❤10⚡3😁2
CDN (Сеть доставки контента) — сеть серверов, которые
Основная задача: быстро и надёжно доставлять статические и медиа-данные (изображения, видео, стили, скрипты) независимо от местоположения пользователя
Применение
Когда важно быстро и стабильно доставлять контент:
Примеры: Selectel , CDNCloud, CDN от Яндекса, CloudFront
Основные понятия
Виды контента
Уникален для каждого пользователя, его нельзя кэшировать. Но CDN позволяет ускорять его передачу за счет:
Пример работы CDN
Кэширование в CDN
Связь с бэкэнд и фронтенд кэшем:
Синхронизация: по правилам инвалидации и версиями URL для одновременного обновления всех уровней кэша — от бэка до фронта через CDN
Балансировка нагрузки
Распределяет трафик между PoP-узлами и серверами внутри них
Для направления запросов к ближайшему PoP-узлу используются способы:
Внутри PoP-узлов: локальный балансировщик распределяет трафик между серверами в узле, учитывает их загрузку и задержки
1. CDN
2. CDN: что такое и как работает технология
3. Что такое CDN: смотрим на примерах
4. Что такое CDN и как это работает?
5. 10 интересных фактов про CDN и скорость сайтов
6. Разбираемся в статусах кеша CDN
7. CDN или Кэширование?
#архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤6🔥3
Кэширование — временное сохранение данных, чтобы ускорить их повторное использование и уменьшить нагрузку на системы.
Подробнее читать тут
Уровни кэширования — места в цепочке передачи данных, где может происходить кэширование
Клиентский кэш
Хранение данных на устройстве пользователя (например, в браузере) для ускорения доступа к часто запрашиваемым ресурсам
Тип данных: статические (изображения, CSS, JavaScript)
Проблемы и решения
Сетевой кэш
Кэш на промежуточных узлах сети (например, CDN)
Используется для уменьшения задержек и нагрузки на сервер
Тип данных: статические (медиафайлы, страницы) и динамические (обработанные данные с учетом TTL)
Проблемы и решения
Стратегия «push» обновлений помогает предотвратить "протухания"
Серверный кэш
Кэширование данных на сервере (например, в памяти или на диске) для ускорения обработки запросов
Тип данных: динамические (результаты запросов, промежуточные вычисления)
Проблемы и решения
Уровень приложения (кэш приложения)
Кэширование на уровне бизнес-логики приложения, где данные обрабатываются и сохраняются в памяти / специализированных хранилищах
Тип данных: динамические (сессии, промежуточные результаты)
Проблемы и примеры решения
1. Что такое кэширование сайта и почему это важно
2. Кэш
3. Чем полезно кэширование сайта и как его настроить
4. Браузерное и серверное кэширование
5. Проектирование эффективной системы кэширования
6. Обзор использования клиентского кэша с распределенным кэшированием
7. Основы клиентского кэширования понятными словами и на примерах. Last-modified, Etag, Expires, Cache-control: max-age и другие заголовки
8. Кеширование. Настроить и проверить параметры кеширования на CDN-серверах
9. Клиентский кэш данных
#архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥9❤7
Data Lake — метод хранения данных системой или репозиторием в сыром (неструктурированном) или частично обработанном виде
Как хранятся данные
Сырой (Raw) слой
Обработанный (Processed) слой
Аналитический (Curated) слой
Форматы хранения
Данные сохраняются как есть, структура определяется во время анализа.
Где используется Data Lake?
Виды интеграций с Data Lake
Пример работы
Сбор данных о продажах из онлайн-магазина (CSV-файлы), отзывы клиентов (текст), логи веб-сервера (JSON) и записи звонков в службу поддержки (аудио)
Чем отличается от СУБД и DWH
Плюсы и минусы
данные требуют дополнительных шагов для анализа (ETL/ELT)
1. Data Lake
2. Хранилище данных vs. Data Lake. Или почему важно научиться ходить перед тем, как начать бегать
3. Чем озеро данных отличается от базы и зачем оно нужно аналитикам
4. Что такое озеро данных?
5. Распределенное хранилище данных в концепции Data Lake: с чего начать
6. Как мы организовали высокоэффективное и недорогое DataLake и почему именно так
7. Data Lake – от теории к практике. Сказ про то, как мы строим ETL на Hadoop
8. Что в глубинах Data Lake? Строим архитектуру, укладываем слои, распределяем ответственность
9. Озера данных vs обычные БД
#инфраструктура
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍8❤7
Это различные модели облачных услуг от провайдеров
Предоставляют ИТ-ресурсы через интернет
Для чего нужны?
— нет расходов на оборудование, центры обработки данных, их обслуживание
— оплата только за используемые ресурсы
— быстрое добавление/уменьшение ресурсов под нагрузку
— универсальные платформы и инструменты для разработки и управления приложениями
Кратко
SaaS
Применение
Пример
для ведения учета продаж можно:
PaaS
Применение
Пример
чтобы разработать приложение для управления задачами, можно
IaaS
Применение
Пример
для развертывания интернет-магазина можно:
CaaS
Применение
Пример
для развертывания микросервисов можно:
FaaS
Применение
Пример
для обработки изображений можно:
1. В чем разница между IaaS, PaaS, SaaS, FaaS и CaaS
2. X-as-a-services: как не погрязнуть в аббревиатурах облачных услуг
3. Что такое IaaS, PaaS и SaaS: объясняем простыми словами
4. Разница между IaaS, PaaS и SaaS: самая понятная статья об облаках в интернете
5. В чем разница между PaaS, SaaS и IaaS?
6. SaaS, PaaS, IaaS: в чем разница
7. Введение в модели облачных сервисов - PaaS, SaaS, IaaS, FaaS и другие
#инфраструктура
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍14❤6😁2👎1
Модель зрелости REST API Леонарда Ричардсона — концепция, которая оценивает уровень соответствия API принципам REST
Применяется:
URL (Uniform Resource Locator): указывает, где находится ресурс, и как к нему обратиться (например, протокол + адрес)
URN (Uniform Resource Name): уникальное имя ресурса, независимое от его местоположения.
URI (Uniform Resource Identifier): общий термин, включающий как URL, так и URN, т.е. идентификатор ресурса в сети
Уровни зрелости модели
Иногда называется "болото оспы" (The Swamp of POX (Plain Old XML)
API — точка входа, которая принимает параметры и возвращает результат (единственный endpoint).
Действует как обёртка для удалённых процедур, не использует RESTful принципы
Запросы обрабатываются как действия, а не как операции с ресурсами
POST /createUser для получения спискапользователей, POST /getUsers для создания.GET, POST, PUT, DELETE200 OK, 404 Not Found). Это делает интерфейс более понятнымGET /users/123 → возвращает пользователяDELETE /users/123 → удаляет пользователяСамый высокий уровень зрелости REST API
HATEOAS (Hypermedia as the Engine of Application State) — характеристика веб-сервиса возвращать действия, которые могут быть выполнены с ресурсом, в виде URL
Дает возможность менять URI независимо от клиентов
Есть API для управления задачами в приложении
Сервер может вернуть ответ на запрос списка задач, в том числе гиперссылки
Клиент может следовать ссылкам, но не знать заранее URL-структуры API
{
"tasks": [
{
"id": 1,
"noscript": "Buy groceries",
"status": "pending",
"_links": {
"self": "/tasks/1",
"update": "/tasks/1/update",
"delete": "/tasks/1/delete"
}
},1. А ваша служба является RESTful? Все что необходимо/обязательно знать про веб службы и REST
2. Richardson Maturity Model – RESTful API (en)
3. REST API — Что такое HATEOAS?
4. REST, что же ты такое?
#api
Please open Telegram to view this post
VIEW IN TELEGRAM
❤26🔥15👍13
Forwarded from Задачи для Системных Аналитиков
Системный_анализ_IT's_Tinkoff_Solution_Cup.pdf
625 KB
Please open Telegram to view this post
VIEW IN TELEGRAM
❤38🔥22⚡12😱9