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

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

https://gosuslugi.ru/snet/67b0613c6411ff785396754a
Download Telegram
Сравнение способов асинхронного взаимодействия API

🧑‍🎓 Описание каждого метода и материалы можно найти в базе знаний по системному анализу

#интеграции #async
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥48👍1611
✍️ ESB / MOM / MQ

🟣ESB (Enterprise Service Bus, шина данных) — посредник для обмена данными между системами. Объединяет системы и приложения в единую интеграционную архитектуру. Управляет бизнес-логикой и маршрутизацией данных

🟡MOM (Message-Oriented Middleware) — промежуточное ПО для асинхронной передачи сообщений между приложениями

🟣MQ (Message Queue) — реализация системы очередей, частный случай MOM

MOM/MQ — не шины данных, но могут быть частью решения, основанного на шине


ESB (Enterprise Service Bus)

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

Как работает

1. приложение отправляет данные на ESB через адаптер (например, для БД или веб-сервиса)
2. ESB преобразует формат данных, если требуется
3. шина маршрутизирует сообщение в нужное приложение
4. получатель получает сообщение и обрабатывает его


Шина данных считается устаревшим видом интеграции:

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

Пример: Apache Camel, MuleSoft


MOM (Message-Oriented Middleware)

🟣может поддерживать очереди (MQ), публикацию/подписку (Pub/Sub), маршрутизацию, обработку событий
🟣используется, когда не нужно дожидаться ответа от другой системы
🟣полезен в микросервисной архитектуре, чтобы разгрузить приложение и повысить отказоустойчивость

Как работает

1. приложение отправляет сообщение посреднику (MOM)
2. посредник сохраняет сообщение в буфере до тех пор, пока приложение-получатель не будет готово его принять
3. получатель обрабатывает сообщение, когда готов
4. MOM удаляет сообщение из буфера только после его успешной доставки

Пример: ActiveMQ, RabbitMQ - поддерживают и очереди, и другие модели, такие как Pub/Sub


MQ (Message Queue)

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

Пример: 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
👍1211🔥6🤣3
Media is too big
VIEW IN TELEGRAM
🔹 БАЗА ЗНАНИЙ ПО СИСТЕМНОМУ АНАЛИЗУ 🚀

Все посты из канала за всё время разложены по полочкам в едином месте — базе знаний 🤓

Наша цель — сделать кладезь знаний системного аналитика 🧠

Какие плюшки вас ждут:

🗂 Все знания в едином месте: кратко, ёмко, без воды и с подборками полезных материалов 🔥

🔎 Удобный поиск и навигация: все наши конспекты структурированы по группам навыков СА и есть поиск по тексту — вы не утоните в тоннах воды и часах гуглинга

🆕 Всегда актуально: мы регулярно добавляем новые материалы и улучшаем базу, при этом стараемся обновлять уже опубликованный контент

📝 Контент на заказ бесплатно: хотите материал на конкретную тему? Любой покупатель может оставить запрос, и мы сделаем обзор с исчерпывающей подборкой материалов абсолютно бесплатно!

➡️ Приобрести вечный доступ к постоянно обновляемой Базе знаний по цене айтишниой книги можно тут — всего 4900 ₽

На analitik.me можно узнать про Базу знаний больше.

P.S. Если нет карты РФ и по любым другим вопросам можно писать сюда: @radale
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32125😁5👍4
🙂 Архитектурные паттерны (MV(X)

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

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

MV(X) — семейство паттернов со схожей структурой
Разделяют приложения на основные компоненты:
Model — отвечает за данные, бизнес-логику, сервисы для работы с БД и сетью (например, класс в ООП, API, библиотека, микросервис и тд)
View — визуальное представление для пользователя, отображение данных из Model
эти компоненты выполняют одни и те же роли во всех паттернах MV(X)
Presenter / Controller / ViewModel - меняются в зависимости от паттерна

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


Рассмотрим некоторые из них:

MVC (Model-View-Controller)

Controller: логика, которая связывает model и view
направляет данные от пользователя к системе и наоборот
напрямую обновляет view

Подходит для небольших / средних приложений
Чем проще Controller, тем лучше

Пример

В веб-приложении для управления библиотекой:
🟡Model: класс Book с полями noscript, author и методами для работы с книгами
🟡View: HTML-страница с формой для добавления книг и списком всех книг
🟡Controller: обработчик, который принимает POST-запросы на добавление книг и обновляет Model и View

Недостатки

в больших приложениях Controller объемный сложнее поддержка кода
View и Model разделены, но View и Controller тесно связаны тяжелее масштабировать каждый из этих компонентов
View и Controller тестировать сложно из-за тесной связи тестируется в основном Model


MVP (Model-View-Presenter)

Presenter: полностью управляет логикой view
обрабатывает ввод
взаимодействует с моделью
обновляет view через интерфейс, не зависит от конкретной реализации view (как у controller)

Отличие от MVC: связь view и model идет через presenter, а не напрямую

Эффективен в приложениях с высокой нагрузкой на UI,
и где необходимы модульные тесты, т.к. Presenter можно тестировать

Пример

В Android-приложении для управления задачами:
🟡Model: класс task, представляет задачу с полями noscript, denoscription и методами для изменения состояния
🟡View: UI для отображения списка задач и формы для добавления новой задачи
🟡Presenter: объект, который запрашивает список задач из Model и обновляет View при изменениях

Недостатки
требует создания доп классов и интерфейсов может перегружать простые приложения


MVVM (Model-View-ViewModel)

View взаимодействует с ViewModel через привязку данных

ViewModel
🟡содержит свойства и команды, к которым привязывается View
🟡взаимодействует с Model для извлечения или обновления данных

Эффективен для приложений со сложными структурой данных и интерфейсом

Пример

В WPF-приложении для управления контактами:
Model: класс Contact содержит информацию о контакте
View: UI, показывает список контактов и формы для добавления/редактирования
ViewModel: объект, который загружает данные из Model и обновляет View, а также обрабатывает команды от View

Недостатки
сложно настроить привязку данных
ViewModel может перегружаться лишней логикой


📎 Материалы
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
🔥148👍61
✍️ Транзакции в Apache Kafka

Kafka поддерживает транзакции, чтобы гарантировать выполнение операций по принципу «всё или ничего»
Такая гарантия доставки называется exactly-once

Подробнее о других типах гарантии доставки
тут

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

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


Как работают транзакции в Kafka

продюсер начинает транзакцию, присваивает  уникальный transactional.id. Это идентификатор, который отличает записи транзакций
продюсер отправляет сообщения в одну / несколько очередей с пометкой "транзакционные"
продюсер подтверждает данные (коммит) или отменяет (откат)
Коммит фиксирует сообщения, и они становятся видимы потребителям, в противном случае --  откатываются


ACID в Kafka

◾️атомарность (Atomicity): вся группа сообщений фиксируется сразу
◾️согласованность (Consistency): контроль за статусами сообщений в метаданных
◾️изолированность (Isolation): с помощью настройки read_committed (на стороне консьюмера) потребители могут видеть только зафиксированные данные, пока транзакция не завершена
◾️долговечность (Durability): достигается за счёт репликации и журналов с зафиксированными сообщениями


Плюсы и минусы

💚гарантия целостности операций с использованием ACID
💚защита от дублирования и конфликтов через изоляцию транзакций

💚требуют больше ресурсов, что может снизить производительность
💚поддерживаются с 0.11.0 версии Kafka


Пример транзакции в Kafka

Система обработки заказов. Нужно записать информацию сразу в несколько топиков для сгласованности данных

Есть два топика в Kafka:
— orders: хранит общую информацию о заказе
— inventory: содержит информацию об изменении запасов после заказа

Шаги для транзакции:
🟡создать продюсера с transactional.id 
🟡отправить сообщения в транзакции: записать детали нового заказа в оба топика 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👍14103😁2
✍️ Content Delivery Network (CDN)

CDN (Сеть доставки контента) — сеть серверов, которые
▫️распределены по разным регионам
▫️совместно работают для ускорения доставки контента пользователям
Основная задача: быстро и надёжно доставлять статические и медиа-данные (изображения, видео, стили, скрипты) независимо от местоположения пользователя


Применение

Когда важно быстро и стабильно доставлять контент:
➡️в крупных веб-приложениях
➡️онлайн-магазинах
➡️стриминговых платформах и соц сетях и тд
Примеры: Selectel , CDNCloud, CDN от Яндекса, CloudFront


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

*️⃣ Ориджин (Origin): сервер, где хранятся первоначальные файлы или данные, которые распространяются через CDN. При первом запросе контент загружается с него. Может быть несколько

*️⃣ PoP Point of Presence (точка присутствия) или Edge Node (пограничный узел) : кэширующий сервер, размещенный близко к конечным пользователям. Узлы принимают и кэшируют запросы, уменьшают расстояние между пользователем и данными. Это повышает скорость доступа

*️⃣Purge (очистка): удаление контента на пограничных узлах для последующего обновления из ориджинов

*️⃣Restriction (ограничение): кто может /не может получать доступ к содержимому из кэша. Например, разрешение запросов только из определенных доменных зон, регионов или групп IP-адресов

*️⃣Time to Live, TTL (время жизни): период кэширования на пограничном узле (Edge Node, PoP) до нового извлечение данных


Виды контента

🔷динамический: данные изменяются в реальном времени или по запросу пользователя (данные профиля, месторасположение, корзина покупок).
Уникален для каждого пользователя, его нельзя кэшировать. Но CDN позволяет ускорять его передачу за счет:
оптимальных маршрутов к ближайшему PoP-узлу
шифрования / дешифрование SSL на PoP-узлах для сокращения времени обработки
протоколов ускорения: HTTP/2 и QUIC

🔷статический: неизменные в течение указанного TTL (изображения, CSS, JavaScript и тд). Кэшируется и доставляется с PoP


Пример работы CDN


🟣запрос контента (веб-страниц или видео)
🟣браузер проверяет локальный кэш. Если данных нет / устарели, запрос идет к CDN, то есть к ближайшей точке присутствия (PoP) на основе местоположения пользователя и анализа сети (подробнее см ниже)
🟣 PoP проверяет, есть ли запрашиваемый контент в кэше:
если контент уже есть, PoP отправляет его
если нет, запрос передаётся на сервер ориджина (к бэкэнду) для получения контента
🟣PoP кэширует данные для последующих запросов
🟣пользователь получает контент с ближайшего PoP с минимальными задержками


Кэширование в CDN


🟢контент хранится в точках присутствия (PoP) рядом с пользователями
🟢CDN-кэш обновляется через инвалидацию или истечение срока хранения (TTL).
Связь с бэкэнд и фронтенд кэшем:
☀️бэкэнд может отправлять данные в CDN с TTL или правилами инвалидации в заголовке. При обновлении данных на бэке CDN-кэш может очищаться
☀️фронтенд: браузерный кэш использует HTTP-заголовки и часто кэширует содержимое после CDN

Синхронизация: по правилам инвалидации и версиями URL для одновременного обновления всех уровней кэша — от бэка до фронта через CDN


Балансировка нагрузки


Распределяет трафик между PoP-узлами и серверами внутри них

Для направления запросов к ближайшему PoP-узлу используются способы:
♥️GeoDNS, который ориентируется на геолокацию пользователя
♥️Anycast — на сетевое расстояние до ближайшего узла

Внутри 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
👍186🔥3
🤣186😁2717🤡7😢6😐2
🔵 Уровни кэширования

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

Уровни кэширования
— места в цепочке передачи данных, где может происходить кэширование


Клиентский кэш

Хранение данных на устройстве пользователя (например, в браузере) для ускорения доступа к часто запрашиваемым ресурсам
 
Тип данных: статические (изображения, CSS, JavaScript)

💙хранит статические данные (изображения, CSS, скрипты)
💙работает с заголовками HTTP (Cache-Control, ETag, Last-Modified)
💙срок жизни данных ограничен временем в заголовках или ручной очисткой

Проблемы и решения

💙 устаревшие данные: использовать версии URL или кэш-бастинг (например, если файл style.css обновился, к URL добавить параметр style.css?v=2.0)
💙 избыточное кэширование: уменьшить объем кэшируемых данных с помощью заголовков (например, Cache-Control: no-cache для динамических данных, ETag, Last-Modified)


Сетевой кэш

Кэш на промежуточных узлах сети (например, CDN)
Используется для уменьшения задержек и нагрузки на сервер

Тип данных: статические (медиафайлы, страницы) и динамические (обработанные данные с учетом TTL)

хранит данные близко к пользователю (PoP-узлы, точки присутствия) 
уменьшает трафик за счет ускорения доставки статических ресурсов
обновление данных через TTL или инвалидацию

Проблемы и решения

несинхронизированные данные: регулярная инвалидация и настройка TTL
Стратегия «push» обновлений помогает предотвратить "протухания"
высокая нагрузка на основной сервер при обновлении: расширение сети PoP или  многоуровневый кэш (узлы обновляют данные между собой)


Серверный кэш 

Кэширование данных на сервере (например, в памяти или на диске) для ускорения обработки запросов

Тип данных: динамические (результаты запросов, промежуточные вычисления)

💙применяется для часто запрашиваемых данных (например, результаты сложных вычислений)
💙примеры: Redis, Memcached
💙кэширование как статических, так и динамических данных

Проблемы и решения

💙 перезапись кэша и потеря данных: использовать алгоритмы управления кэшем, например, LRU (Least Recently Used). Или механизм TTL для периодической очистки.
💙 конкуренция за память: настроить лимиты на использование памяти и использовать высокоэффективные структур данных (например, Bloom filter) для снижения нагрузки на память


Уровень приложения (кэш приложения) 

Кэширование на уровне бизнес-логики приложения, где данные обрабатываются и сохраняются в памяти / специализированных хранилищах

Тип данных: динамические (сессии, промежуточные результаты)

сохраняет промежуточные данные, которые генерируются во время работы приложения
позволяет минимизировать повторные вычисления или запросы к БД
пример: кэширование запросов в БД с помощью ORM

Проблемы и примеры решения

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


📎 Материалы
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🔥97
🔵 Data Lake

Data Lake — метод хранения данных системой или репозиторием в сыром (неструктурированном) или частично обработанном виде

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


Как хранятся данные


Сырой (Raw) слой

🔘загружаются без предварительной обработки

Обработанный (Processed) слой

🔘структурируются, очищаются, трансформируются
🔘форматы: табличные, агрегированные данные.

Аналитический (Curated) слой

🔘оптимизированы для аналитики и бизнес-отчетов, например, формируются OLAP-кубы или специализированные наборы данных

Форматы хранения

🔘структурированные: SQL-таблицы, Parquet, ORC.
🔘полуструктурированные: JSON, XML
🔘неструктурированные: видео, изображения, аудиофайлы, логи

Данные сохраняются как есть, структура определяется во время анализа.


Где используется Data Lake?

аналитика Big Data: анализ поведения, прогнозы, сегментация (e-commerce, банки, нефтегаз и тд)
ML и AI: подготовка данных для моделей (рекомендации, NLP, CV)
телекоммуникации: хранения и анализа данных о клиентах, трафике, сетевых устройствах
кибербезопасность, поддержка: логи, аудио, видео, текст
объединение источников: CRM, IoT, соцсети, финтех


Виды интеграций с Data Lake

🔹ETL/ELT-процессы: загрузка данных из источников с минимальной трансформацией или после обработки
🔹API
🔹с BI и ML-платформами: например, Tableau, Power BI, Spark или TensorFlow для обработки данных напрямую из хранилища


Пример работы

Сбор данных о продажах из онлайн-магазина (CSV-файлы), отзывы клиентов (текст), логи веб-сервера (JSON) и записи звонков в службу поддержки (аудио)

➡️ для анализа отзывов используется NLP (извлекает из текстов тональность)
➡️ создаются модели машинного обучения по веб-логам анализиру
➡️ по объединным данным о продажах и звонках создаются отчеты


Чем отличается от СУБД и DWH

СУБД: хранит структурированные данные в таблицах, оптимизирована для транзакций (например, учет заказов)ю Также предназначена для бизнес-логики
💙Data Lake: поддерживает любые форматы данных и предназначен для аналитики

DWH: хранит обработанные и агрегированные данные для аналитики и отчетности
💙Data Lake: сохраняет исходные данные в сыром виде


Плюсы и минусы

хранение любых данных (структурированные, полу- и неструктурированные)
легко обрабатывать большие объемы данных, быстрый доступ к ним
базируются на Open Source решениях

риск "болота данных": потеря структуры и полезности данных без управления метаданными
данные требуют дополнительных шагов для анализа (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👍87
💻 PaaS, IaaS, SaaS, CaaS, FaaS

Это различные модели облачных услуг от провайдеров
Предоставляют ИТ-ресурсы через интернет

Для чего нужны?

🟡Снижение затрат
— нет расходов на оборудование, центры обработки данных, их обслуживание
— оплата только за используемые ресурсы

🟡Масштабируемость
— быстрое добавление/уменьшение ресурсов под нагрузку
— универсальные платформы и инструменты для разработки и управления приложениями


Кратко


*️⃣SaaS (Software as a Service) ПО как сервис: готовые приложения через интернет

*️⃣IaaS (Infrastructure as a Service) Инфраструктура как сервис: аренда серверов, сетей, ХД и др ресурсов, которые управляются через облако

*️⃣PaaS (Platform as a Service) Платформа как услуга: платформа для разработки и запуска приложений без управления инфраструктурой

*️⃣CaaS (Containers as a Service) Контейнер как услуга: платформа для развертывания и управления контейнерами (Docker, Kubernetes)

*️⃣FaaS (Function as a Service) Функция как услуга: платформа без сервера для выполнения функций по событиям


SaaS

🔘Провайдер управляет: всем — инфраструктурой, приложениями, обновлениями. Используется ПО через браузер или API
🔘Клиент: только использует приложение

Применение

🟡доступ к CRM, ERP, корпоративным почтовым сервисам
🟡аналитика

Пример

для ведения учета продаж можно:
🟡использовать онлайн-CRM
🟡вносить данные через браузер, управлять клиентской базой и создавать отчеты


PaaS


🔘Провайдер управляет: инфраструктурой, ОС, БД и инструментами для разработки
🔘Клиент: приложениями, кодом

Применение

🟡быстро разработать приложения (микросервисы, мобильные приложения)
🟡протестировать + автоматический деплой (интеграция с CI/CD)

Пример


чтобы разработать приложение для управления задачами, можно
🟡использовать платформу (например, Google App Engine)
🟡на нее загрузить код на Python
🟡платформа автоматически масштабирует приложение и управляет сервером


IaaS

🔘Провайдер управляет: инфраструктурой (серверы, ХД, сеть), виртуальными машинами, системами безопасности
🔘Клиент: ОС, средствами разработки, приложениями

Применение

🟡развертывание виртуальных серверов для веб-приложений
🟡хранение и обработка больших объемов данных
🟡создание тестовых и продакшн-сред
🟡масштабирование инфраструктуры под нагрузку

Пример

для развертывания интернет-магазина можно:
🟡арендовать виртуальные машины через AWS EC2
🟡установить на них веб-серверы (например, Apache) и базы данных (PostgreSQL)
🟡настроить балансировщик нагрузки и хранение файлов


CaaS

🔘Провайдер управляет: инфраструктурой, оркестрацией контейнеров
🔘Клиент: контейнерами, приложениями, кодом

Применение

🟣создание микросервисных приложений
🟣автоматизация CI/CD процессов
🟣переносимость приложений между средами (локальные и облачные)
🟣масштабирование приложений без сложной настройки серверов

Пример

для развертывания микросервисов можно:
🟣создать образы приложений с помощью Docker
🟣развернуть их в кластере Kubernetes через сервис, например, AWS ECS
🟣автоматически масштабировать приложения под нагрузку


FaaS

🔘Провайдер выполняет функцию по событию (HTTP-запрос, изменение файла), ресурсы автоматически выделяются под задачу
🔘Клиент управляет кодом функций, событиями

Применение

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

Пример

для обработки изображений можно:
🟣написать функцию на Python для сжатия изображений
🟣загружать файлы в облачное хранилище, событие запускает функцию через AWS Lambda
🟣функция сжимает изображения и сохраняет их


📎Материалы
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👍146😁2👎1
🔼 Модель зрелости REST API Леонарда Ричардсона

Модель зрелости REST API Леонарда Ричардсона — концепция, которая оценивает уровень соответствия API принципам REST
◾️показывает эволюцию от простого RPC к полноценным REST API: чем выше уровень в модели, тем лучше выстроено API

Применяется:
🔘для анализа текущего состояния API и для создания REST API, которые легко интегрируются и поддерживаются, что делает их более гибкими для бизнеса


💡 Напомним

URL
(Uniform Resource Locator): указывает, где находится ресурс, и как к нему обратиться (например, протокол + адрес)
💙https://example.com/page

URN (Uniform Resource Name): уникальное имя ресурса, независимое от его местоположения.
💙urn:isbn:0451450523

URI (Uniform Resource Identifier): общий термин, включающий как URL, так и URN, т.е. идентификатор ресурса в сети
💙URI может быть как https://example.com, так и urn:isbn:0451450523



Уровни зрелости модели


💙 Уровень: API как удалённый вызов процедур (RPC)
Иногда называется "болото оспы" (The Swamp of POX (Plain Old XML)


API — точка входа, которая принимает параметры и возвращает результат (единственный endpoint).
Действует как обёртка для удалённых процедур, не использует RESTful принципы

🔹один URI, один HTTP метод
🔹HTTP используется только для взаимодействия компонентов распределенной системы
🔹например, это могут быть протоколы XML-RPC и SOAP
🔹действия определяются через параметры запроса,

💙 пример: POST /api с телом запроса {action: "createUser", data: {...}}
Запросы обрабатываются как действия, а не как операции с ресурсами


💙 Уровень: Разделение ресурсов через URL

🔹несколько URI, один HTTP метод
🔹отдельные endpoints для каждого ресурса
🔹действия привязаны к URL

💙 пример: POST /createUser для получения спискапользователей, POST /getUsers для создания.


💙 Уровень: HTTP-методы

🔹несколько URI, каждый поддерживает разные HTTP методы
🔹используются методы HTTP, например, GET, POST, PUT, DELETE
🔹добавлены коды ответа HTTP (например, 200 OK, 404 Not Found). Это делает интерфейс более понятным

💙 пример:
GET /users/123 → возвращает пользователя
DELETE /users/123 → удаляет пользователя


💙 Уровень: HATEOAS для управления состоянием через ссылки

Самый высокий уровень зрелости REST API

🔹сервер предоставляет не только данные, но и гиперссылки. Они показывают клиенту действия, доступные с этим ресурсом
🔹ресурсы сами описывают свои возможности и взаимосвязи

HATEOAS
(Hypermedia as the Engine of Application State) — характеристика веб-сервиса возвращать действия, которые могут быть выполнены с ресурсом, в виде URL
Дает возможность менять URI независимо от клиентов

💙 пример применения HATEOAS

Есть API для управления задачами в приложении
Сервер может вернуть ответ на запрос списка задач, в том числе гиперссылки
🔘self — ссылка на текущий ресурс (конкретную задачу)
🔘update — для обновления задачи
🔘delete — для удаления
Клиент может следовать ссылкам, но не знать заранее 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
Системный_анализ_IT's_Tinkoff_Solution_Cup.pdf
625 KB
🏦Tinkoff. Разбор задач отборочного тура трека Системный анализ
Please open Telegram to view this post
VIEW IN TELEGRAM
38🔥2212😱9
🙂 Фреймворк

Фреймворк — готовая программная структура (каркас) для разработки ПО, которая
🔘задает базовую архитектуру
🔘часто применяются в разработке мобильных, веб- и десктоп-приложений

У каждого фреймворка свой набор инструментов и свой функционал


Зачем нужен

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


Виды фреймворков


🟣фронтенд: для разработки пользовательских интерфейсов
примеры: React (JavaScript), Angular (JavaScript), Vue.js (JavaScript)

🟣бэкенд: для создания серверной части приложений.
примеры: Django (Python), Spring Boot (java), Express.js (JavaScript)

🟣кроссплатформенные: можно писать код для разных платформ (iOS, Android, Windows)
примеры: Flutter (Dart), Xamarin (C#), React Native (JavaScript)


Фреймворк vs библиотека

Фреймворк задает структуру и правила для разработки. Управляет выполнением кода, дает готовый каркас, который нужно достроить
Библиотека: набор готовых функций, которые можно использовать по мере необходимости

Фреймворк берет управление на себя.
При использовании библиотеки контроль - у разработчика


Пример фреймворка Django


Django — фреймворк для разработки веб-приложений на Python
Состоит из:
〰️Шаблонов MVC: определяют архитектуру приложения (модели, представления, контроллеры)
〰️Модуль ORM: для работы с БД без SQL-запросов
〰️Система маршрутизации: управляет обработкой URL
〰️Встроенные инструменты: аутентификация, админ-панель, обработка форм, защита от CSRF, шаблоны HTML, API
〰️Документации

Пример: создание блога на Django
Используется встроенный ORM для работы с записями, подключаются шаблоны для отображения страниц и настраивается маршрутизация для обработки URL


Минусы фреймворков

🤯нужно следовать правилам и структуре фреймворка
🤯могут быть слишком сложными для простых задач
🤯переход на другой фреймворк или обновление может быть трудоемким


Как аналитик может использовать фреймворки

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

прототипирование решений
С помощью фронтенд-фреймворков (React или Angular) можно создать прототип пользовательского интерфейса
➡️для системы управления задачами сделать интерфейс с доской Kanban
Заказчик сможет протестировать функционал на раннем этапе

документирование требований
В ТЗ можно указать, что бизнес-логика реализуется с использованием Django
➡️если нужно разработать REST API, можно описать, какие эндпоинты и модели данных будут поддерживаться, согласно возможностям Django REST

анализ интеграций
Предложить выбор подходящего фреймворка
➡️для системы обработки массивов данных поможет обосновать выбор FastAPI (высокая производительность,поддерживает асинхронную обработку запросов)
➡️при разработке архитектуры системы указать использование Spring для создания микросервисов (например, их взаимодействие через API, реализованные в Spring Boot)


📎 Материалы
1. Фреймворк
2. Что такое фреймворк: виды, задачи, правила выбора
3. Фреймворк: особенности, преимущества, архитектура
4. Что такое фреймворк и чем отличается от библиотеки, простое объяснение
5. Для чего нужен фреймворк и как его выбрать
6. Фреймворк: как выбрать подходящий для фронтэнда и бэкэнда
7. Фреймворки в веб-разработке — что это, какие существуют и для чего нужны
8. Как выбрать фреймворк для бэкенда: мнения разработчиков
9. Фреймворки — больше минусов чем плюсов
10. 5 полезных фреймворков и библиотек для начинающего фронтенд-разработчика на конец 2024 года

#инфраструктура



🧑‍🎓 Больше полезного в базе знаний по системному анализу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍248🔥43
🤣132😁49🔥6👍2
✍️ System Design

System Design (системный дизайн) — процесс проектирования архитектуры системы
🔵направлен на удовлетворение бизнес-целей, пользовательских требований и технических ограничений

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


Уровни системного дизайна

🔸 высокоуровневый (High-Level Design, HLD): общая архитектура системы, взаимодействие между компонентами, выбор технологий и структурирование сервисов
🔸низкоуровневый (Low-Level Design, LLD): детализированная информацию о компонентах системы (БД, API, структура данных и тд)


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


🔵Масштабируемость 
Проектировать системы так, чтобы могли выдерживать рост нагрузки
➡️ Пример: горизонтальное масштабирование (добавление серверов в кластер) позволяет балансировщику нагрузки распределять трафик между ними, предотвратить перегрузки

🔵Отказоустойчивость
Минимизировать влияние отказов компонентов на всю систему
➡️ репликация БД, для достпуности данных при сбое основной БД

🔵Скорость и производительность 
Оптимизация времени отклика и обработки данных
➡️ кэширование популярных запросов с помощью Redis

🔵Модульность 
Деление системы на независимые части для упрощения разработки и поддержки
➡️ микросервисная архитектура, где каждая служба выполняет отдельную задачу (авторизация, управление товарами)

🔵Балансировка нагрузки
Распределение входящего трафика между несколькими серверами
➡️ CDN-серверы автоматически распределяют нагрузку, направляют пользователей к ближайшему серверу с кэшем

🔵Безопасность
Защита данных и ресурсов системы
➡️ шифрование данных в REST API с использованием HTTPS, механизмы защиты от SQL-инъекций, XSS и CSRF

🔵Мониторинг
Система должна предоставлять метрики для отслеживания проблем
➡️ установка инструментов мониторинга (Prometheus или Grafana)


Системный дизайн  VS архитектура

🔵системный дизайн — детальное проектирование, включая конкретные компоненты (БД, очереди сообщений, API)
Как именно это построить
🔵архитектура — высокоуровневое описание системы, основные компоненты, их роли и взаимосвязи
Что строим


Краткий пример системного дизайна


Задача: создать масштабируемую систему для загрузки и хранения изображений

Сбор требований: 
🔸максимальный размер изображения — 5 МБ
🔸10 000 пользователей, 100 загрузок в секунду
🔸сохранение резервных копий

Решение
🔸API-шлюз: принимаем запросы на загрузку
🔸балансировщик нагрузки (Layer 7): распределяем запросы между серверами загрузки
🔸серверы хранения: храним изображения в S3-совместимом объектном хранилище (например, MinIO)
🔸кэш: используем CDN (Cloudflare) для ускорения
🔸очереди сообщений: RabbitMQ для обработки изображений (ресайзинг)
🔸БД: метаданные изображений сохраняем в реляционной БД (PostgreSQL)


📎 Материалы
1. Что такое System design?
2. Что такое System Design. Пример System Design для онлайн-магазина, для мобильного приложения
3. System Design для начинающих: всё, что вам нужно
4. System design. Реальный проект vs Интервью
5. System Design. Общие принцип прохождения интервью по проектированию ИТ-систем

📚 Книги
1. System Design. Подготовка к сложному интервью
2. Разработка высоконагруженных систем — очень полезная брошюра по материалам конференции HighLoad++

#архитектура #проектирование #развитие



🧑‍🎓 Больше полезного в базе знаний по системному анализу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍146😁1🤔1
Микросервисы_От_архитектуры_до_релиза_Митра_Р_Надареишвили_И.pdf
6.2 MB
Микросервисы. От архитектуры до релиза

✍️ Автор: Ронни Митра, Иракли Надареишвили
🗓 Год издания: 2023
🔤 Язык: русский
📚 Объём: 336 стр.

Книга - практическое руководство по разработке микросервисной архитектуры. Авторы на основе своего опыта и кейсов из индустрии, предлагают системный подход к проектированию, организации команд, созданию инфраструктуры и развертыванию микросервисов.

Основное внимание уделяется практическому проектированию и разработке, затрагиваются ключевые принципы и модели микросервисных систем.

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

Обзор книги на Хабр
Микросервисная архитектура: основные понятия

#микросервисы #архитектура
👍2711🔥2🤔1
Карта навыков BA/SA

Очередная карта навыков, найденная здесь.
Ранее мы делали собственную очень объёмную карту навыков системного аналитика.

Ну а разложить теорию в голове по полочкам и намаппить на карту навыков поможет база знаний.

Картинка без сжатия в комментариях
54🔥25👍193😁1
✍️ Балансировка нагрузки | продолжение

Ранее писали про балансировку нагрузки
Напомним, балансировка — механизм распределения входящих запросов между серверами

Уровни балансировки в модели OSI

💙сетевой уровень (L3, IP) – балансировка на основе IP-адресов
💙транспортный уровень (L4, TCP/UDP) – маршрутизация запросов по номерам портов и соединениям, без анализа содержимого пакетов
💙прикладной уровень (L7, HTTP/HTTPS) – анализ HTTP-запросов и маршрутизация на основе URL, заголовков или cookies


Типы балансировщиков

Аппаратные (Hardware Load Balancer, HLB)

- физические устройства с сетевыми процессорами (ASIC), которые обрабатывают пакеты быстрее, чем программные решения
- часто используются в крупных дата-центрах
примеры: F5 Big-IP, Citrix NetScaler

Как работают

➡️клиент отправляет запрос на IP-адрес балансировщика
➡️балансировщик обрабатывает запрос на аппаратном уровне
➡️трафик направляется на нужный сервер с мин задержками


Программные (Software Load Balancer, SLB)

- ПО на сервере, которое выполняет функции балансировки
- гибкое, дешевле аппаратных решений, но требует мощностей сервера
Nginx, HAProxy, Envoy

Как работают
➡️SLB развернут на виртуальной машине / физическом сервере
➡️принимает запросы и перенаправляет их на сервера по заданным алгоритмам
➡️может использовать L4 или L7-балансировку


Виртуальные (Virtual Load Balancer, VLB)
- программные балансировщики, работают в виртуальных средах или в облаке
- поддерживают авто-масштабирование (динамическое изменение кол-ва серверов)
AWS ELB, Yandex Network Load Balancer

Как работают

➡️облачный балансировщик получает запрос
➡️в зависимости от нагрузки создает новые инстансы или перераспределяет трафик
➡️атоматически масштабируется и настраивается
* инстанс (instance) – виртуальная / физическая машина, которая обрабатывает запросы


Методы балансировки


⚪️DNS-балансировка (уровень L3)
DNS-сервер возвращает разные IP-адреса на один DNS-запрос
— не учитывает загрузку серверов и может кэшироваться клиентами (возможны задержки в обновлении маршрутов)
— например, api.example.com может вести на разные серверы

⚪️Через прокси-сервер (L7)
запросы поступают на прокси → он анализирует содержимое и перенаправляет на нужные серверы

⚪️Прямая балансировка (L4)
изменяет MAC-адреса пакетов, направляет их напрямую на backend-серверы

⚪️NAT-балансировка (L3-L4)
изменяет IP-адреса и порты пакетов, направляет трафик на разные серверы онлайн


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

⭐️Статический контент (изображения, видео, CSS, JavaScript)
Пользователь запрашивает изображение с сайта
➡️ DNS-балансировщик (Nginx) направляет запрос на ближайший географически сервер CDN
➡️ CDN отдает изображение из кэша, без загрузки с основного сервера

⭐️API-запросы (REST, GraphQL)
REST API с /auth и /data:
➡️ L4-балансировщик (NAT / HAProxy) направляет трафик API на серверы, распределяет нагрузку
➡️ L7-балансировщик (Nginx) перенаправляет по URL или заголовкам:
/auth — на серверы аутентификации
/data — на серверы обработки данных

⭐️Веб-приложения (динамический контент, пользовательские сессии)
L7-балансировщик (F5 BIG-IP) с алгоритмом Sticky Sessions определяет пользователя по cookie и направляет его запросы на один сервер. Данные сессии (корзина, авторизация) не потеряются

⭐️БД
Кластер PostgreSQL с мастером и 3 репликами
➡️L4-балансировщик (например, Pgpool-II) с алгоритмом Least Connections отправляет запросы на чтение (SELECT) на реплики, чтобы снизить нагрузку на мастер
➡️запросы INSERT/UPDATE идут на мастер


📎 Материалы
1. Балансировка нагрузки: основные алгоритмы и методы
2. Load Balancer и Reverse Proxy в микросервисной архитектуре
3. Load Balancers для систем оркестрации
4. Балансировка нагрузки в Облаках
5. Сетевой балансировщик нагрузки
6. DNS Балансировка нагрузки: что это такое
7. Как работает L3 балансировщик нагрузки
8. Балансировка нагрузки на L3, L4 и L7
9. Что такое Envoy, зачем он нужен и как работает

#проектирование #инфраструктура



🧑‍🎓 Больше полезного в базе знаний по системному анализу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥6🤔32😁2