Лекция 6. Принципы построения систем
Эта лекция
В этой лекции мы рассмотрим требования ГОСТ к созданию автоматизированных систем, изучим архитектуры систем (монолит, микросервисы, serverless), разберём API и форматы данных, а также познакомимся с методологиями Agile, Scrum и DevOps.
Цель
Сформировать представление о требованиях ГОСТ к созданию автоматизированных систем, архитектурах систем, API-интеграциях и методологиях разработки Agile/Scrum/DevOps.
Содержание
- Лекция 6. Принципы построения систем
- Эта лекция
- Цель
- Содержание
- 6.1 Требования ГОСТ и принцип первого руководителя
- 6.2 Архитектуры систем: монолит, микросервисы, serverless
- 6.3 API, форматы данных и интеграции
- 6.4 Agile, Scrum и DevOps
- Кейс АРК: BI-аналитика и дашборды
- Транспортный контекст
- Заключение и выводы для специалиста
- Вопросы для самопроверки
6.1 Требования ГОСТ и принцип первого руководителя
ГОСТ РД 50-680-88
ГОСТ РД 50-680-88 — стандарт для автоматизированных систем на транспорте. Определяет основные требования к проектированию и созданию АС.
| Требование | Содержание |
|---|---|
| Системность | АС рассматривается как часть более крупной системы (отрасль, экономика) |
| Развитие | АС должна иметь резерв мощности для масштабирования |
| Современность | Применение современных технологий и методов |
| Стандартизация | Использование стандартизированных компонентов и интерфейсов |
| Эффективность | Экономическая и социальная эффективность внедрения |
ГОСТ 34.601-90
ГОСТ 34.601-90 — стандарт, описывающий этапы создания автоматизированных систем:
graph LR
A[1. ТЗ] --> B[2. Проект]
B --> C[3. Рабочий]
C --> D[4. Внедрение]
D --> E[5. Эксплуатация]
style A fill:#ff9,stroke:#333
style E fill:#bfb,stroke:#333
| Этап | Результаты |
|---|---|
| Техническое задание | Документ с требованиями к системе |
| Проектная документация | Архитектура, алгоритмы, интерфейсы |
| Рабочая документация | Программный код, инструкции |
| Внедрение | Установка, настройка, обучение |
| Эксплуатация | Поддержка, развитие, обновления |
Принцип первого руководителя
Принцип первого руководителя — условие успеха автоматизации является активная поддержка топ-менеджмента.
Без поддержки первого лица (генерального директора, технического директора) автоматизация обречена.
Почему это важно:
| Причина | Объяснение |
|---|---|
| Ресурсы | Только руководитель может выделить бюджет и персонал |
| Изменения | Автоматизация меняет процессы — только топ может обязать меняться |
| Конфликты | Межфункциональные конфликты решает только руководитель |
| Мотивация | Личный интерес руководителя — главный драйвер успеха |
6.2 Архитектуры систем: монолит, микросервисы, serverless
Монолитная архитектура
Монолит — единое приложение, где все компоненты связаны и развёртываются вместе.
| Плюсы | Минусы |
|---|---|
| Простота разработки и тестирования | Сложность масштабирования |
| Простота развёртывания | Один компонент влияет на всё приложение |
| Понятная структура | Долгая разработка при росте команды |
Применение в ТЛК: Небольшие ТЛК с 1–2 пользователями, простые системы учёта.
Микросервисная архитектура
Микросервисы — архитектура, где приложение состоит из независимых сервисов, каждый решает свою задачу.
graph TD
A[API Gateway] --> B[CRM-сервис]
A --> C[TMS-сервис]
A --> D[WMS-сервис]
A --> E[Документооборот]
A --> F[Аналитика]
B --> G[(БД CRM)]
C --> H[(БД TMS)]
D --> I[(БД WMS)]
style A fill:#4facfe,stroke:#333,color:#fff
| Плюсы | Минусы |
|---|---|
| Независимое масштабирование | Сложность управления |
| Независимое развёртывание | Сложность отладки |
| Технологии под задачу | Требует DevOps-культуры |
| Отказоустойчивость | Сетевые задержки |
Применение в ТЛК: Средние и крупные ТЛК, облачные платформы (как АРК).
Serverless-архитектура
Serverless — архитектура, где разработчик пишет код, а инфраструктурой управляет провайдер.
| Характеристика | Описание |
|---|---|
| Event-driven | Код выполняется при наступлении события |
| Автоматическое масштабирование | От нуля до миллионов вызовов |
| Оплата за вызов | Платите только за время выполнения |
| Нет серверов | Провайдер управляет инфраструктурой |
Применение в ТЛК: Webhook-уведомления, обработка файлов, API-интеграции.
6.3 API, форматы данных и интеграции
API как основа интеграции
API (Application Programming Interface) — интерфейс, позволяющий различным приложениям обмениваться данными.
| Тип API | Описание | Пример |
|---|---|---|
| REST | Простой, на основе HTTP | REST API АРК |
| GraphQL | Гибкий запрос данных | API социальных сетей |
| gRPC | Высокая производительность | Внутренние микросервисы |
HTTP REST: методы и статус-коды
HTTP-методы REST API:
| Метод | Описание | Пример |
|---|---|---|
| GET | Получить данные | GET /api/clients — список клиентов |
| POST | Создать ресурс | POST /api/clients — создать клиента |
| PUT | Обновить ресурс | PUT /api/clients/123 — обновить клиента |
| DELETE | Удалить ресурс | DELETE /api/clients/123 — удалить клиента |
HTTP-статус-коды:
| Код | Значение | Описание |
|---|---|---|
| 200 | OK | Успешный запрос |
| 201 | Created | Ресурс создан |
| 400 | Bad Request | Неверный запрос |
| 401 | Unauthorized | Нет авторизации |
| 403 | Forbidden | Нет доступа |
| 404 | Not Found | Ресурс не найден |
| 500 | Internal Server Error | Ошибка сервера |
Форматы данных
Сравнение форматов данных:
| Формат | Размер | Читаемость | Сложность | Применение |
|---|---|---|---|---|
| JSON | Средний | Высокая | Низкая | REST API, веб-приложения |
| XML | Большой | Высокая | Высокая | ЭДО, корпоративные системы |
| Protobuf | Маленький | Низкая | Высокая | Микросервисы, IoT |
Пример JSON-запроса к API АРК:
{
"client": {
"name": "ООО «ТрансЛог»",
"inn": "7701234567",
"type": "legal"
},
"contact": {
"email": "info@translog.ru",
"phone": "+7(495)123-45-67"
}
}
Webhooks — механизм обратной связи: приложение АРК отправляет HTTP POST-запрос на указанный URL при наступлении события (новая заявка, изменение статуса).
6.4 Agile, Scrum и DevOps
Agile Manifesto
Agile — семейство методологий разработки, основанных на итеративном подходе и адаптивности.
Четыре ценности Agile Manifesto:
| Ценность | Значение |
|---|---|
| Люди и взаимодействие > Процессы и инструменты | Команда важнее инструментов |
| Работающий продукт > Исчерпывающая документация | Результат важнее планов |
| Сотрудничество с заказчиком > Согласование условий | Обратная связь важнее контрактов |
| Готовность к изменениям > Следование плану | Адаптивность важнее следования |
Методология Scrum
Scrum — фреймворк Agile для управления разработкой продукта.
Роли Scrum:
| Роль | Ответственность |
|---|---|
| Product Owner | Определяет «что» делать — бэклог продукта |
| Scrum Master | Обеспечивает «как» — процесс Scrum |
| Development Team | Реализует — «кто» делает |
Артефакты Scrum:
| Артефакт | Описание |
|---|---|
| Product Backlog | Список всех задач по продукту |
| Sprint Backlog | Задачи на текущий спринт (1–4 недели) |
| Increment | Готовый результат спринта |
Церемонии Scrum:
flowchart LR
A[Sprint Planning] --> B[Daily Scrum]
B --> C[Разработка]
C --> D[Sprint Review]
D --> E[Retrospective]
E --> A
style A fill:#ff9,stroke:#333
style D fill:#bfb,stroke:#333
style E fill:#4facfe,stroke:#333,color:#fff
| Церемония | Цель | Длительность |
|---|---|---|
| Sprint Planning | Планирование спринта | До 2 часов |
| Daily Scrum | Ежедневная синхронизация | 15 минут |
| Sprint Review | Демонстрация результата | До 1 часа |
| Retrospective | Улучшение процесса | До 1 часа |
DevOps-практики
DevOps — культура и практика взаимодействия разработки (Development) и эксплуатации (Operations).
CI/CD (Continuous Integration / Continuous Delivery):
graph LR
A[Код в репозиторий] --> B[Автоматическая сборка]
B --> C[Автоматическое тестирование]
C --> D[Деплой на staging]
D --> E[Проверка качества]
E --> F[Деплой на production]
style A fill:#ff9,stroke:#333
style F fill:#bfb,stroke:#333
Ключевые практики DevOps:
| Практика | Описание | Выгода |
|---|---|---|
| CI/CD | Автоматическая сборка и доставка | Быстрые релизы, меньше ошибок |
| Автоматизация тестирования | Unit, интеграционные, E2E тесты | Качество кода |
| Мониторинг | Отслеживание работы в реальном времени | Быстрое выявление проблем |
| Infrastructure as Code | Управление инфраструктурой через код | Воспроизводимость |
Кейс АРК: BI-аналитика и дашборды
Встроенная BI-аналитика АРК предоставляет руководителям инструменты для принятия решений на основе данных.
Основные компоненты BI-модуля АРК:
| Компонент | Описание |
|---|---|
| Информационные панели | Настраиваемые дашборды с KPI-виджетами |
| KPI-виджеты | Выручка, расходы, доходность, EBITDA, маржинальность |
| Фильтры и срезы | По датам, клиентам, направлениям, менеджерам |
| Drill-down | Детализация от общего к частному |
Показатели в дашбордах АРК:
| Показатель | Описание | Формула |
|---|---|---|
| Выручка | Общая сумма по перевозкам | Сумма счетов |
| Расходы | Переменные и постоянные затраты | Сумма расходов по заявкам |
| Доходность | Прибыль по периоду | Выручка - Расходы |
| EBITDA | Операционная прибыль | EBITDA по всем заявкам |
| Маржинальность | Процент прибыли | (Выручка - Расходы) / Выручка |
| Простои | Время простоя транспорта | Сумма часов простоев |
ABC/XYZ-анализ во встроенной аналитике:
flowchart TD
A[ABC/XYZ-анализ] --> B[Клиенты]
A --> C[Грузы]
A --> D[Маршруты]
B --> E[Категория A: 20% → 80% выручки]
B --> F[Категория B: 30% → 15% выручки]
B --> G[Категория C: 50% → 5% выручки]
C --> H[Стабильный спрос X]
C --> I[Сезонный спрос Y]
C --> J[Нестабильный спрос Z]
style A fill:#4facfe,stroke:#333,color:#fff
Yandex DataLens — внешний BI-инструмент:
DataLens позволяет подключаться к данным АРК через API/HTTP REST и строить внешние дашборды:
- Получение API-ключа в настройках АРК
- REST API запрос к эндпоинтам АРК (
GET /api/reports/...) - Подключение DataLens к API АРК
- Построение визуализаций: графики, диаграммы, таблицы
- Настройка обновлений в реальном времени
Практическое задание: Постройте дашборд со встроенной аналитикой АРК и подготовьте внешний дашборд в DataLens для лабораторной работы 6.
Транспортный контекст
Примеры из «Управления процессами перевозок»
На железнодорожном транспорте принципы построения систем включают:
- Соответствие ГОСТ РД 50-680-88 при создании АС управления перевозками
- Микросервисная архитектура для интеграции с системами РЖД
- REST API для обмена данными с грузовладельцами
Примеры из «Транспортной логистики»
В автомобильной логистике Agile/Scrum применяется для:
- Итеративной разработки мобильных приложений для водителей
- Быстрого реагирования на изменения рынка
- Регулярных релизов новых функций каждые 2 недели
Связь с ФГОС 23.05.04 «Эксплуатация железных дорог»
| Код компетенции | Описание компетенции |
|---|---|
| УК-4 | Способен оценивать архитектуры информационных систем и выбирать оптимальную для ТЛК |
| ПК-7 | Способен проектировать API-интеграции и выбирать форматы данных для обмена |
| ПК-12 | Способен применять методологии Agile/Scrum и DevOps при разработке ИС для транспорта |
Заключение и выводы для специалиста
-
ГОСТ — не бюрократия, а проверенный путь. Стандарты ГОСТ 34.601-90 и РД 50-680-88 обеспечивают системный подход и снижают риски провала проектов.
-
Архитектура определяет возможности. Монолит подходит для малого бизнеса, микросервисы — для масштабируемых платформ, serverless — для event-driven задач.
-
API — язык общения систем. Без понимания REST API невозможно построить интеграцию между системами ТЛК.
-
Agile/Scrum — стандарт индустрии. Итеративная разработка с регулярными релизами позволяет быстрее реагировать на изменения рынка.
-
BI-аналитика — основа принятия решений. Дашборды с EBITDA, маржинальностью и ABC/XYZ-анализом дают полную картину бизнеса.
Вопросы для самопроверки
-
Какие пять требований ГОСТ РД 50-680-88 к автоматизированным системам вы знаете?
-
В чём различие между монолитной, микросервисной и serverless архитектурой? Когда какая применяется?
-
Какие четыре HTTP-метода REST API вы знаете? Для чего каждый из них?
-
Какие четыре ценности Agile Manifesto вы знаете?
-
Какие компоненты BI-аналитики предоставляет система АРК?