🍀BitBitGo🍀 Системный Анализ
3.33K subscribers
225 photos
157 videos
120 links
Курс «Системный анализ»
https://bitbitgo.by/
Пишем про системный анализ.
Поможем стартануть в карьере IT. Присоединяйся!
Download Telegram
Что такое Serverless? 🤔

Serverless (безсерверная архитектура) – это подход, при котором разработчики фокусируются на написании кода, не заботясь о серверах для его выполнения. Да, физические серверы по-прежнему существуют, но управление ими берёт на себя провайдер, например AWS Lambda или Cloudflare Workers. Это кардинально меняет подход к разработке: вам не нужно тратить время и деньги на настройку инфраструктуры!

Ключевые особенности Serverless:
1️⃣ Отсутствие необходимости управлять серверами. Весь хостинг и масштабирование управляются провайдером.
2️⃣ Платите только за использование. Биллинг основывается на реальном времени работы функции, а не на простое сервера.
3️⃣ Автоматическое масштабирование. Архитектура автоматически адаптируется под текущие нагрузки.

Когда Serverless подходит?
✔️ Временные задачи (периодическое выполнение кода).
✔️ Сервисы с нестабильной нагрузкой.
✔️ Прототипирование и разработка MVP.

Преимущества:
✔️ Быстрый запуск.
✔️ Снижение операционных расходов.
✔️ Простота масштабирования.

Как это может помочь вашему проекту? Рассматривайте serverless, если хотите уменьшить затраты на поддержание серверов и ускорить вывод продукта на рынок.

#ARCHITECTURE
1👍1🔥1👏1
Архитектура, ориентированная на события 📲

Архитектура, ориентированная на события (Event-Driven Architecture, EDA) – это подход, при котором системы реагируют на происходящие события, а не работают по статичному расписанию или запросам. Она позволяет приложениям обмениваться данными и реагировать на изменения в реальном времени, что особенно полезно в условиях, когда важна мгновенная обработка данных.

Как работает Event-Driven Architecture?
1️⃣ События: система создаёт события (например, изменение данных), которые фиксируются и передаются дальше.
2️⃣ Продюсеры и потребители: компоненты системы могут быть как источниками (создателями) событий, так и их потребителями, реагируя на важные изменения.
3️⃣ Брокеры сообщений: часто используется middleware (например, Amazon EventBridge), которая помогает маршрутизировать события между продюсерами и потребителями.

Преимущества Event-Driven Architecture:
Масштабируемость: системы легко адаптируются к изменяющимся нагрузкам.
Адаптивность: добавление новых функций становится проще благодаря модульному принципу.
Эффективность в реальном времени: системы реагируют на события мгновенно, повышая эффективность.

Где применяется?
EDA используется в микросервисных приложениях, системах с высокой нагрузкой, IoT и многих других случаях, где важно быстро реагировать на изменения и обеспечивать взаимодействие в режиме реального времени.

#ARCHITECTURE
4👍4👏1
Корпоративная шина (Enterprise Service Bus, ESB) 🚍
Корпоративная шина — это программное обеспечение для интеграции приложений и сервисов в корпоративной среде. Она выполняет роль посредника, связывающего компоненты системы и обеспечивающего их эффективное взаимодействие.

Задачи корпоративной шины:
1️⃣ Обмен сообщениями между сервисами.
2️⃣ Безопасность — аутентификация и шифрование.
3️⃣ Управление процессами взаимодействия.
4️⃣ Распределение нагрузки — поддержка параллельной обработки.

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

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

#INTEGRATION
2👍2🔥1🤔1
Что такое разделение данных и зачем оно нужно? 🔄

Разделение данных (data partitioning) — это метод распределения информации в базе данных на отдельные части или разделы. Этот процесс позволяет системе эффективно обрабатывать большие объёмы данных, улучшая её масштабируемость, производительность и доступность.

Основные подходы к разделению данных:
1️⃣ Вертикальное разделение — данные разделяются по колонкам, которые хранятся на разных серверах. Например, частые обновления по финансовым данным могут размещаться на мощных серверах, в то время как статические данные остаются на менее производительных.
2️⃣ Горизонтальное разделение (шардинг) — строки данных делятся на группы и распределяются по разным серверам. Это подходит для повышения масштабируемости: чем больше пользователей, тем больше серверов можно подключить для обработки запросов.

Преимущества разделения данных:
🚀Масштабируемость: горизонтальное разделение позволяет легко добавлять новые сервера для обработки возросших нагрузок.
⏱️Уменьшение задержек: размещение данных ближе к пользователям снижает время доступа.
🔄Повышение доступности: если один сервер выходит из строя, другие разделы продолжают работать, поддерживая работоспособность системы.

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

#DBMS
1
Горизонтальное и вертикальное масштабирование: как выбрать подходящую стратегию? ⚙️

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

Горизонтальное масштабирование 🖥
Горизонтальное масштабирование (scale-out) предполагает добавление новых серверов для распределения нагрузки. Это особенно полезно для:
• систем с высокой нагрузкой,
• микросервисной архитектуры,
• случаев, когда важна отказоустойчивость.

Вертикальное масштабирование 📈
Вертикальное масштабирование (scale-up) подразумевает увеличение мощности существующего сервера (увеличение CPU, RAM и т.д.). Это подходит для:
• монолитных приложений,
• случаев, когда архитектура не поддерживает горизонтальное масштабирование.

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

#SYSTEMDESIGN
👌1
This media is not supported in your browser
VIEW IN TELEGRAM
Времена меняются! 🕒🧑‍💻
😁11🔥3👍1😎1
This media is not supported in your browser
VIEW IN TELEGRAM
Краткость — сестра таланта😉
😁2👍1🤔1
Команды SQL: Управление данными и транзакциями 🗄

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

Основные группы команд:
1️⃣ DDL (Data Definition Language) 🛠
Команды для создания и изменения структуры базы данных (таблицы, индексы, представления).
Примеры: CREATE, ALTER, DROP.

2️⃣ DML (Data Manipulation Language) 🔄
Команды для манипуляций с данными — добавление, изменение, удаление и выборка.
Примеры: INSERT, UPDATE, DELETE, SELECT.

3️⃣ DCL (Data Control Language) 🔒
Команды для управления доступом пользователей и контроля прав.
Примеры: GRANT, REVOKE, CREATE USER, DROP USER.

4️⃣ TCL (Transaction Control Language) 🔄💳
Команды для управления транзакциями, включая их начало, завершение и отмену.
Примеры: BEGIN, COMMIT, ROLLBACK.

Основные операторы SQL:
SELECT — извлечение данных из таблиц.
WHERE — фильтрация данных по условию.
JOIN — объединение данных из разных таблиц.
GROUP BY — группировка данных.
ORDER BY — сортировка результатов.
HAVING — фильтрация после группировки.
IN — сравнение значений с набором.
INSERT — добавление данных.
UPDATE — обновление данных.
DELETE — удаление данных.

#DBMS
👍31👌1
TRUNCATE vs DELETE: Чем отличаются эти команды в SQL? 💡

Команды TRUNCATE и DELETE используются для удаления данных из таблиц в SQL, но они имеют существенные различия в работе, скорости и уровне контроля над удалением.

Особенности TRUNCATE ⚡️
1. Мгновенное выполнениеTRUNCATE освобождает место в таблице очень быстро, так как не выполняет физическое удаление строк.
2. Необратимость — все данные в таблице будут безвозвратно удалены.
3. Отсутствие проверки ограничений — не проверяет внешние ключи и другие ограничения целостности, что может привести к ошибкам.
4. Нет записи в журнал транзакций — изменения не записываются в журнал, поэтому операция не может быть отменена.

Особенности DELETE 📝
1. Условное удаление — позволяет удалять строки, удовлетворяющие определённым условиям, оставляя остальные.
2. Проверка ограниченийDELETE учитывает внешние ключи и ограничения целостности.
3. Запись в журнал транзакций — операции записываются в журнал, и их можно откатить при необходимости.
4. Более медленное выполнение — по сравнению с TRUNCATE, работает медленнее, особенно на больших таблицах.

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

#DBMS
3🔥2👍1
ОСНОВЫ КЭШИРОВАНИЯ 🔄

Что такое кэширование? 📂
Это процесс временного хранения данных, который ускоряет доступ к ним, уменьшая задержки и улучшая производительность системы.

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

Подходы к кэшированию 🧩
• По порядку размещения кэша
• По порядку вытеснения кэша
• По порядку взаимодействия с кэшем

Виды кэша по размещению 🗂
Браузерный кэш — хранит данные на устройстве пользователя, ускоряя загрузку веб-страниц.
Прокси-кэш — кэширует данные между пользователем и сервером, что снижает нагрузку на сервер.
Кэш базы данных — хранит часто запрашиваемые данные на уровне базы.
Распределённый кэш — общий для нескольких серверов, часто реализуется через Redis или Memcached.
In-memory кэш — кэширование данных в оперативной памяти для быстрого доступа внутри приложения.

Различные типы кэша и их размещение 🔄
Прокси-кэш удобно размещать между фронтендом и бэкендом, он фильтрует запросы и отвечает из кэша, снижая нагрузку на сервер.
Браузерный кэш — сохраняется на уровне фронтенда и хранится на устройстве пользователя, ускоряя загрузку страниц.
Распределённый кэш — общий для нескольких экземпляров приложения, позволяет разделять данные между серверами.
In-memory кэш — сохраняется в рамках одного процесса и сервера, что делает его быстрым, но ограниченным по масштабу.

Как оценивается эффективность кэширования? 📈
Для оценки эффективности внедрения кэширования используются метрики:
Процент попадания (hit rate) — доля удачных запросов в кэш.
Задержка (latency) — время доступа к данным из кэша.
Количество вытеснений (evictions) — удалённые записи из кэша, чтобы освободить место.

Стратегии кэширования 🚀
Cache Through — данные записываются и в кэш, и в основное хранилище.
Cache Aside — сначала данные ищутся в кэше, при отсутствии загружаются из базы и кэшируются.
Cache Ahead — заранее подгружаются данные в кэш для предстоящих запросов.

Дополнительные моменты ⚙️
Инвалидация — процесс удаления устаревших данных из кэша для актуализации.
Кэш-промах — когда данных нет в кэше, и их нужно загрузить из основного хранилища.
Горячие данные — часто запрашиваемые данные, которые всегда находятся в кэше для быстрого доступа.

Преимущества кэширования 💡
• Повышение производительности
• Снижение нагрузки на сервер
• Оптимизация пропускной способности
• Увеличение доступности данных

#ARCHITECTURE
👍32🔥2