← [Раздел](README.md) · [Главная](../README.md)

# Lab 04 — Архитектурный review

## Цель

Провести **структурированный архитектурный review** учебной системы по чеклисту: надёжность, безопасность, observability, deploy — и оформить отчёт с находками, рисками и рекомендациями по приоритету.

## Предварительно

- [Lab 01–03](README.md)
- [Антипаттерны](../11-patterns/anti-patterny-i-smells.md)
- Артефакты ShopLite в репозитории

## Время

~90 минут

---

## Шаг 1 — Объект review

Review **своей** системы ShopLite после Lab 01–03 **или** эталонной схемы ниже (если лабы 01–03 не готовы).

Эталон «с ошибками» (`docs/reviews/target-v1.md`):

```markdown
- Один pod API, без HPA
- PostgreSQL без реплики
- Секрет БД в git в api/config.yaml
- Нет correlation ID
- Синхронный вызов pay.example.com без timeout
- Логи: print всего request body
```

Скопируйте в репозиторий и пометьте как fictional.

---

## Шаг 2 — Чеклист review

Создайте `docs/reviews/checklist.md` с разделами:

1. **Границы и контекст** (C4 актуален?)
2. **Надёжность** (SPOF, retry, DR)
3. **Безопасность** (секреты, TLS, PII)
4. **Observability** (логи, метрики, трейсы, алерты)
5. **Deploy** (CI, образы, k8s readiness)
6. **NFR** (измеримы? traceability?)
7. **Smells** (distributed monolith и др.)

Шкала: ✅ OK · ⚠️ Risk · ❌ Blocker

---

## Шаг 3 — Проход по чеклисту

Заполните `docs/reviews/report-YYYY-MM-DD.md`:

```markdown
# Architecture Review — ShopLite v1

## Резюме
2 blocker, 4 risk, 3 ok

## Blockers
| ID | Находка | Риск | Рекомендация |
|----|---------|------|--------------|
| B-01 | Секрет в git | Утечка БД | Vault + gitleaks |
```

Минимум **2 blocker**, **3 risk**, **3 ok** (для учебной схемы это легко).

---

## Шаг 4 — Risk matrix

`docs/reviews/risk-matrix.md`:

| ID | Вероятность | Влияние | Приоритет |
|----|-------------|---------|-----------|
| B-01 | High | High | P0 |
| R-02 | Med | High | P1 |

Используйте шкалу Low/Med/High.

---

## Шаг 5 — ADR на главную рекомендацию

Один ADR `docs/reviews/adr-001-fix-secrets.md`:

```markdown
# ADR-001: Убрать секреты из репозитория

## Статус
Принято (review lab04)

## Контекст
config.yaml содержит DATABASE_URL с паролем.

## Решение
Env из k8s Secret; локально — .env в .gitignore; gitleaks в CI.

## Последствия
+ NFR-S02 выполним
- Нужен документ для разработчиков
```

---

## Шаг 6 — План remediation

`docs/reviews/remediation-plan.md` — таблица на 2 спринта:

| Задача | Owner (роль) | Sprint | Критерий готовности |
|--------|--------------|--------|---------------------|
| Gitleaks в CI | Platform | 1 | Падает PR с fake secret |
| Timeout + CB на pay | Backend | 1 | Integration test |
| RED dashboard | SRE | 2 | Grafana JSON в git |

Роли можно вымышленные: `@backend`, `@sre`.

---

## Шаг 7 — Презентация 5 минут

Напишите `docs/reviews/executive-summary.md` (½ страницы):

- для кого: тимлид / продакт;
- топ-3 риска;
- что делаем в этом месяце;
- что сознательно откладываем (Won't).

Без жаргона или с расшифровкой.

---

## Шаг 8 — Саморевью качества отчёта

- [ ] Каждая находка ссылается на NFR или smell
- [ ] Рекомендации actionable (глагол + артефакт)
- [ ] Нет реальных секретов в примерах
- [ ] Есть приоритет P0/P1

---

## Шаг 9 — Коммит

```bash
git add docs/reviews
git commit -m "lab04: architecture review report for ShopLite"
```

Финальная запись в `LAB-JOURNAL.md`: главный урок курса одним абзацем.

---

## Самопроверка

1. Чем blocker отличается от risk в отчёте?
2. Сколько минимум находок каждого типа в лабе?
3. Зачем ADR в рамках review?
4. Что входит в executive summary?

---

## Дальше

→ [Раздел 13 — Pro](../13-pro-uroven/README.md)  
← [Lab 03 — Compose](lab-03-docker-compose.md)
