Перейти к содержанию

How-to

Пошаговые рецепты для типовых задач PR-автора. Каждая страница — готовая последовательность действий, со ссылками на conventions/patterns для reference-деталей.

Если ты только учишь стек — сначала ../onboarding/01-setup.md и ../onboarding/02-first-pr.md, потом возвращайся сюда.

Daily ops (стандартные PR)

  • add-http-endpoint.md — добавить новый HTTP-endpoint: DTO, handler, service, тесты, OpenAPI.
  • add-kafka-event.md — добавить новое Kafka-событие: payload, envelope, outbox-publisher, consumer-handler.
  • add-new-service.md — завести новый сервис от нуля до зелёного CI и первого make bootstrap.
  • onboard-new-dependency.md — как добавить новую Go-зависимость: vetting, лицензия, govulncheck, SBOM, PR-шаблон.

Data (БД и миграции)

  • add-migration.md — добавить миграцию: expand-contract, advisory lock, индексы, rolling-deploy.
  • rollback-migration.md — откатить миграцию в prod через forward-fix. Стратегии A/B/C, восстановление данных, incident log.

Security

  • rotate-jwt-key.md — ротация HMAC/JWT-ключа без downtime: PRIMARY/PREVIOUS, окно, last resort (instant rotation).

Resilience

  • handle-redis-outage.md — поведение сервиса при недоступном Redis: fail-open/closed per operation, /readyz, timeouts, stale fallback.

Observability (debugging и метрики)

  • add-metric-and-alert.md — объявить Prometheus-метрику, подключить alert-rule, завести dashboard.
  • debug-outbox-lag.md — runbook: сработал alert на outbox_forwarder_lag_seconds, как локализовать и починить.
  • read-logs.md — LogQL-шпаргалка, типовые запросы, correlation с trace'ами.
  • read-traces.md — Tempo / OpenTelemetry, distributed flow, correlation с logs и metrics.
  • profile-service.mdpprof для CPU/memory/goroutine profiling, continuous profiling.
  • load-test.md — k6-сценарии, интерпретация результатов, baseline SLA, где запускать, red flags.

Правило

Если делаешь задачу, которой нет в списке выше, — скорее всего, нужен новый how-to (или расширение существующего), а не «разовая» реализация. Открой PR, добавь файл в соответствующую группу.