Рассмотрим еще один способ интеграции, менее популярый: интеграция через общую БД
Этот подход имеет свои преимущества, но не всегда является лучшим выбором из-за сложностей с согласованностью данных и производительностью
При интеграции через общую БД несколько систем используют одну и ту же БД для обмена данными
Принцип работы
Особенности
Чтобы избежать используются механизмы синхронизации транзакций
Способы интеграции
Например, ODBC/JDBC-драйверы.
Работают как посредники между приложением и БД.
Принимают запросы от приложения, преобразуют их в SQL-команды для БД, выполняют запросы и возвращают результат
Приложения взаимодействуют с БД через REST или SOAP API
Отправляют HTTP-запросы, которые преобразуются в SQL-запросы внутри базы
Прямое подключение через SQL-запросы: приложение отправляет SQL-команды напрямую в базу данных по сети (например, через TCP/IP), без использования посредников.
Используются драйверы для установления связи с БД по сети (например, TCP/IP), затем приложение отправляет SQL-запросы напрямую
В обоих случаях идет работа с БД напрямую.
Но сетевые драйверы (например, для PostgreSQL или MySQL) обеспечивают управление сетевым соединением
Создаются виртуальные таблицы (представления), которые объединяют данные из нескольких таблиц.
Когда использовать общую БД
Пример работы
В компании несколько систем: интернет-магазин, система управления складом и бухгалтерия
Все системы работают с одной БД, не нужно синхронизировать данных между ними, данные актуальны во всех системах
Недостатки
1. Основы интеграции информационных систем
2. Архитектура приложений и интеграций: гайд по основным понятиям простыми словами
3. Современные стандарты информационного взаимодействия систем
4. Простой пример JDBC для начинающих
5. Две альтернативы JDBC
6. PostgreSQL и JDBC выжимаем все соки
7. Доктор, у меня легаси: лечим устаревшие ИТ-системы
8. Legacy-системы
9. Общая информация о ODBC и Connector/ODBC
10. Почему интеграционная бд это отстой
#интеграции
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33❤18👍16
ER-диаграмма (Entity-Relationship Diagram, ERD) — диаграмма "сущность-связь", которая применяется для:
Состоит из элементов
Типы связей между сущностями
Пример ERD для интернет-магазина
— пользователь: ID, имя, email
— заказ: ID заказа, дата, сумма
— товар: ID товара, название, цена
— пользователь делает заказ (один пользователь может сделать много заказов — связь "один ко многим")
— заказ содержит товары (один заказ может включать много товаров — связь "многие ко многим")
Уровни ER-диаграмм
ER-диаграммы делятся на 3 уровня в зависимости от уровня детализации
Показывает, какие сущности и связи существуют
Детализирует модель, но не привязан к конкретной СУБД
Нотации ERD
ER-диаграмма — визуальная модель или схема,
а нотации — методы, с помощью которых она строится
Отличия от других инструментов
Нужны для моделирования объектов и их поведения в объектно-ориентированном программировании, а не для реляционных БД
Моделируют бизнес-процессы и последовательность действий, а не данные
1. Сущности и связи: как и для чего системные аналитики создают ER‑диаграммы
2. Что такое ER-диаграмма и как ее создать?
3. Проектирование ER-диаграммы
4. Что выбрать для проектирования БД: сравнение UML-диаграммы классов и ER-диаграммы
5. Модель диаграммы Entity Relations (ER) с примером СУБД
#проектирование
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥57👍24❤9😁1
Ранее описывали процесс кэширования
Рассмотрим подходы к работе с кэшем
Стратегии чтения данных
Обновление кэша: обновляется только после запроса данных из БД
Пользователь запрашивает карточку товара: приложение сначала проверяет кэш.
Если информации нет, данные запрашиваются из базы и сохраняются в кэш
Обновление кэша: автоматически при отсутствии данных в нём, во время запроса из БД
Если статьи нет, кэш автоматически получает её из БД, обновляет кэш и передаёт статью пользователю
Стратегии записи данных
Обновление кэша: приложение запрашивает данные из БД. Получает и записывает их в кэш
Кэш обновляется только при последующем чтении. Изменения редки и не требуют моментальной синхронизации с кэшем
Обновление кэша: кэш и БД всегда синхронизированы, так как данные записываются одновременно в в БД и в кэш
При запросах транзакции всегда можно получить актуальные данные как из кэша, так и из базы
Обновление кэша: данные в кэше актуальные, но БД обновляется позже, асинхронно
Кэш откладывает запись в БД на попозже для асинхрона.
Помогает быстро сохранить изменения пользователя без задержек, хотя БД обновляется с задержкой
Хранение кэша
Кэш в архитектуре приложения обычно хранится в памяти, либо на выделенных серверах для кэширования. Их располагают ближе к приложению для быстрой обработки запросов.
Например,
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