architect/standards/7-typology/typology-service-types.md

type: standard
aspect: typology
title: "Стандарт: Сервис (Обеспечивающая система)"
version: 1.0.0
date: 2026-02-19
status: active


Стандарт: Сервис (Обеспечивающая система)

Версия: 1.0.0
Тип системы: Обеспечивающая
Вопросов: 7


ОПРЕДЕЛЕНИЕ

Сервис — обеспечивающая система, предоставляющая функциональность другим системам через API.


ПОСЛЕДОВАТЕЛЬНОСТЬ ВОПРОСОВ

ЧТО? → КТО? → КАК? → ЧЕМ? → ГДЕ? → КОГДА? → СКОЛЬКО?
  │      │      │       │       │        │         │
Компон. Потреб. Протокол Стек Endpoint Lifecycle Лимиты

ПОЧЕМУ/ЗАЧЕМ = принципы и миссия сервиса (указываются отдельно).


БАЗОВЫЕ ПОЛЯ (навигация)

Поле Описание Обязательно
name Название сервиса ДА
type CODE (subtype: service) ДА
status active, development, draft ДА
version Версия ДА
parent Родительский проект ДА
children Дочерние модули ДА
depends_on Зависимости ДА
provides_to Что предоставляет ДА
hub Путь в Hub (S3) ДА
description Краткое описание ДА

СМЫСЛОВЫЕ ПОЛЯ (7 вопросов)

Вопрос Поле Описание Обязательно
ЧТО? components Из чего состоит Рекомендуется
КТО? consumers Кто использует Рекомендуется
КАК? protocol API, протоколы Опционально
ЧЕМ? stack Технологии Опционально
ГДЕ? endpoints URL, порты Опционально
КОГДА? lifecycle Запуск, остановка Опционально
СКОЛЬКО? limits Лимиты, квоты Опционально

Дополнительно:
| Поле | Описание |
|------|----------|
| principles | ПОЧЕМУ так устроен |
| mission | ЗАЧЕМ существует |


СТРУКТУРА ПАПКИ

{service}/
├── index.yaml          ← Метаданные
├── CLAUDE.md           ← Инструкции для AI
├── design/             ← Архитектура
├── solution/           ← Код, реализация
├── management/         ← TODO, STATUS
└── reports/            ← Выходные данные

ШАБЛОН index.yaml

# ═══════════════════════════════════════════
# БАЗОВЫЕ ПОЛЯ (обязательно)
# ═══════════════════════════════════════════
name: "{название}"
type: "CODE"
subtype: "service"
status: "development"
version: "1.0.0"

parent: "../"
children: []

depends_on:
  - "infra/@server/"
  - "../_shared/"

provides_to:
  - "../@other-module/"

hub: "projects/{project}/{service}/"
description: "Краткое описание сервиса"

# ═══════════════════════════════════════════
# СМЫСЛОВЫЕ ПОЛЯ (рекомендуется)
# ═══════════════════════════════════════════
# ЧТО? - Компоненты
components:
  - name: "api"
    description: "REST API"

# КТО? - Потребители
consumers:
  - "Система 1"

# ═══════════════════════════════════════════
# СМЫСЛОВЫЕ ПОЛЯ (опционально)
# ═══════════════════════════════════════════
# КАК? - Протокол
# protocol:
#   type: "REST"
#   format: "JSON"

# ЧЕМ? - Стек
# stack:
#   runtime: "Docker"
#   language: "Python"

# ГДЕ? - Endpoints
# endpoints:
#   internal: "localhost:8080"

# КОГДА? - Lifecycle
# lifecycle:
#   start: "docker-compose up -d"

# СКОЛЬКО? - Лимиты
# limits:
#   requests: "100/min"

ПРИМЕРЫ

PIM Service (@pim.service)

# БАЗОВЫЕ ПОЛЯ
name: "PIM Service"
type: "CODE"
subtype: "service"
status: "development"
version: "1.0.0"

parent: "../"
children: []

depends_on:
  - "infra/@dev-pro.server/"
  - "../_shared/"

provides_to:
  - "../@pirotehnika.spb.ru/"
  - "../@ozon.api/"

hub: "projects/pirotehnika/pim/"
description: "Product Information Management + интеграция 1C"

# СМЫСЛОВЫЕ ПОЛЯ
components:
  - name: "drupal"
    description: "CMS для управления товарами"
  - name: "api"
    description: "REST API для интеграций"

consumers:
  - "Сайт @pirotehnika.spb.ru"
  - "Интеграция @ozon.api"

ЖИЗНЕННЫЙ ЦИКЛ

Deploy → Start → Running → Healthcheck → Stop → Update → Restart
           │         │          │
         КОГДА     ГДЕ      СКОЛЬКО

СВЯЗИ


Версия: 1.0.0