Отчет по архитектуре системы (УП.05)

1. Обоснование выбора типа архитектуры

Для веб-приложений, таких как интернет-магазин, наиболее распространена трехуровневая (трехзвенная) архитектура. Она обеспечивает модульность, масштабируемость и безопасность.

2. Декомпозиция архитектуры на модели (диаграммы)

Модель 1: Контекстная диаграмма (Диаграмма окружения)

Задача: Показать взаимодействие системы с внешними системами и субъектами.

Пример для интернет-магазина:

Модель 2: Компонентная диаграмма (Логическая архитектура)

Задача: Показать основные программные модули и связи между ними.

Frontend (React, Vue.js)
  |
API Gateway
  |
+-------------------+-------------------+-------------------+-------------------+
|                   |                   |                   |                   |
Auth Module       Catalog Module     Order Module       Payment Module
                      |                   |                   |
                  База данных (PostgreSQL/MySQL)
                  Redis (кеш)
                  S3 (хранилище изображений)

Модель 3: Физическая архитектура (Деплоймент-диаграмма)

Задача: Показать, на каких серверах развёрнуты компоненты.

flowchart TD
    subgraph Internet [Интернет]
        direction LR
        A1[Пользователи]
        A2[Администраторы]
    end

    subgraph DMZ [Демилитаризованная зона]
        B1[Балансировщик нагрузки]
    end

    subgraph InternalNetwork [Внутренняя сеть]
        subgraph WebTier
            C1[Веб-сервер 1 (Nginx)]
            C2[Веб-сервер 2 (Nginx)]
        end
        subgraph AppTier
            D1[Сервер приложений 1 (Node.js/Docker)]
            D2[Сервер приложений 2 (Node.js/Docker)]
        end
        subgraph DataTier
            E1[Кластер БД (PostgreSQL)]
            E2[Сервер кеша (Redis)]
        end
    end

    A1 --> B1
    A2 --> B1
    B1 --> C1
    B1 --> C2
    C1 --> D1
    C2 --> D2
    D1 --> E1
    D2 --> E1
    D1 --> E2
    D2 --> E2

Модель 4: Модель данных (ER-диаграмма)

Пример структуры базы данных:

erDiagram
    USERS {
        int id PK
        string email
        string password_hash
        string name
    }

    PRODUCTS {
        int id PK
        string name
        text description
        decimal price
        int category_id FK
    }

    CATEGORIES {
        int id PK
        string name
    }

    ORDERS {
        int id PK
        int user_id FK
        datetime order_date
        string status
        decimal total_amount
    }

    ORDER_ITEMS {
        int id PK
        int order_id FK
        int product_id FK
        int quantity
        decimal price
    }

    USERS ||--o{ ORDERS : "places"
    CATEGORIES ||--o{ PRODUCTS : "contains"
    ORDERS ||--o{ ORDER_ITEMS : "includes"
    PRODUCTS }o--o{ ORDER_ITEMS : "part of"

3. Оформление в отчете по УП.05

1. Введение

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

2. Диаграммы

Все четыре модели с подробными пояснениями к каждому компоненту. Включая описание взаимодействия и особенности реализации.

3. Связь с требованиями

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

4. Вывод

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