Fix style in ADR
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
## Контекст
|
||||
|
||||
`rivendell-v2` жил на VM в Yandex Cloud. Одновременно копились три
|
||||
`rivendell-v2` жил на виртуальной машине в Yandex Cloud. Одновременно копились три
|
||||
проблемы:
|
||||
|
||||
- **Цена.** ≈ 2 887 ₽/мес за конфигурацию, которую другие провайдеры
|
||||
@@ -17,7 +17,7 @@
|
||||
HDD вместо SSD/NVMe — страдала отзывчивость (Gitea, Outline, тёплый
|
||||
старт контейнеров, restic check/forget).
|
||||
|
||||
Это личный сервер — допустим мягкий даунтайм.
|
||||
Это личный сервер — допустимы небольшие простои.
|
||||
|
||||
## Рассмотренные варианты
|
||||
|
||||
@@ -37,16 +37,18 @@
|
||||
|
||||
Рамки решения:
|
||||
|
||||
- Переезжает **только compute** (VM с приложениями). S3 (restic, бекапы),
|
||||
- Переезжает **только сам сервер с приложениями** (compute). S3 (restic, бэкапы),
|
||||
Container Registry, Postbox SMTP и DNS-зона `vakhrushev.me` остаются
|
||||
в Yandex и используются с новой машины.
|
||||
- Стратегия — **cold cutover**: погасить сервисы на источнике, раскатать
|
||||
- Стратегия — **холодное переключение** (cold cutover): погасить сервисы
|
||||
на источнике, раскатать
|
||||
ansible на новом сервере без запуска приложений (сохраняя uid/gid), перенести
|
||||
данные `rsync`'ом, запустить, переключить DNS.
|
||||
- Диск: фаза 1 — один 80 ГБ NVMe (всего 22 ГБ данных + 17 ГБ системных, влезает с
|
||||
запасом). «Холодный» второй диск под крупные данные — отдельная
|
||||
фаза 2, не на критическом пути.
|
||||
- Источник не удаляется сразу после cutover: держим «холодным запасным»
|
||||
- Источник не удаляется сразу после переключения: держим «холодным
|
||||
запасным»
|
||||
пару недель ради отката.
|
||||
|
||||
Детальный план — [`../drafts/timeweb.md`](../drafts/timeweb.md),
|
||||
@@ -59,7 +61,7 @@
|
||||
закрыты все три исходные проблемы.
|
||||
- `+` Запас по RAM убирает OOM-риск при всплесках нагрузки.
|
||||
- `+` Диверсификация по облакам: раньше сервер и данные были в одном
|
||||
аккаунте Yandex Cloud, теперь compute в Timeweb, а бэкапы (S3) — в
|
||||
аккаунте Yandex Cloud, теперь сам сервер в Timeweb, а бэкапы (S3) — в
|
||||
Yandex. Если заблокируют или потеряем доступ к одному провайдеру,
|
||||
данные остаются доступны через другой.
|
||||
- `-` Диск меньше (80 ГБ NVMe против 120 ГБ HDD), но сейчас занят
|
||||
@@ -67,13 +69,14 @@
|
||||
- `-` Сохраняется зависимость от Yandex Cloud (S3, Container Registry,
|
||||
Postbox SMTP, DNS) — переезд её не устраняет.
|
||||
- `-` Timeweb активно блокирует Telegram (в отличие от YC) — интеграция
|
||||
отвалилась. Затронуты `transcriber`, `remembos` и нотификации о
|
||||
бэкапах. Ожидаемо; нотификации остались через почту, второй канал
|
||||
отвалилась. Затронуты `transcriber`, `remembos` и уведомления о
|
||||
бэкапах. Ожидаемо; уведомления остались через почту, второй канал
|
||||
рассматривается через Matrix.
|
||||
- `-` Из-за тех же блокировок Timeweb перестали обновляться некоторые
|
||||
RSS-фиды в `miniflux`.
|
||||
- `-` Для доступа к `cr.yandex` вне YC появился долгоживущий OAuth-токен
|
||||
Яндекса в vault (`yc_oauth_token`) с широким blast radius. При желании
|
||||
сузить — IAM-ключ сервисного аккаунта отдельной итерацией.
|
||||
Яндекса в vault (`yc_oauth_token`): при утечке он открывает доступ ко
|
||||
всему аккаунту Яндекса. Сузить можно IAM-ключом сервисного аккаунта —
|
||||
отдельной итерацией.
|
||||
- Инвентарь временно раздвоен (`production.yml` + `timeweb.yml`); после
|
||||
стабилизации источник удаляется, `timeweb.yml` → `production.yml`.
|
||||
|
||||
Reference in New Issue
Block a user