Add ADR after migration to timeweb cloud
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# Переезд сервера с Yandex Cloud на Timeweb VPS
|
||||
|
||||
- Дата: 2026-05-23
|
||||
|
||||
## Контекст
|
||||
|
||||
`rivendell-v2` жил на VM в Yandex Cloud. Одновременно копились три
|
||||
проблемы:
|
||||
|
||||
- **Цена.** ≈ 2 887 ₽/мес за конфигурацию, которую другие провайдеры
|
||||
дают дешевле и мощнее.
|
||||
- **Потолок RAM.** 4 ГБ, ≈ 80 % заняты на штатной нагрузке. Любой
|
||||
всплеск (миграции БД, индексация Outline, restic) — конкуренция за
|
||||
память и риск OOM. Расти на этом тарифе дальше — только заметно
|
||||
дороже.
|
||||
- **Медленный диск.** Чтобы сдержать цену в YC, использовался дешёвый
|
||||
HDD вместо SSD/NVMe — страдала отзывчивость (Gitea, Outline, тёплый
|
||||
старт контейнеров, restic check/forget).
|
||||
|
||||
Это личный сервер — допустим мягкий даунтайм.
|
||||
|
||||
## Рассмотренные варианты
|
||||
|
||||
- **Остаться в YC, поднять тариф** (больше RAM/SSD на месте). Отвергнуто:
|
||||
YC уже дороже альтернатив, апгрейд поднимает цену непропорционально
|
||||
приросту — те же три проблемы решаются дороже, чем переездом.
|
||||
- **Свой / домашний сервер** (железо под контролем, без ежемесячной
|
||||
аренды). Отвергнуто: дома нет надёжного аптайма 24/7 (питание,
|
||||
интернет-канал, железо), а сервисы должны быть всегда доступны.
|
||||
- **Переезд на Timeweb Cloud VPS** — выбранный вариант.
|
||||
|
||||
## Решение
|
||||
|
||||
Переносим на Timeweb Cloud VPS: ≈ 1 980 ₽/мес, 8 ГБ RAM (×2), 4 ядра
|
||||
(×2, гарантия CPU 100 % вместо 50 %), 80 ГБ NVMe вместо 120 ГБ HDD.
|
||||
Один переезд закрывает все три причины сразу.
|
||||
|
||||
Рамки решения:
|
||||
|
||||
- Переезжает **только compute** (VM с приложениями). S3 (restic, бекапы),
|
||||
Container Registry, Postbox SMTP и DNS-зона `vakhrushev.me` остаются
|
||||
в Yandex и используются с новой машины.
|
||||
- Стратегия — **cold cutover**: погасить сервисы на источнике, раскатать
|
||||
ansible на новом сервере без запуска приложений (сохраняя uid/gid), перенести
|
||||
данные `rsync`'ом, запустить, переключить DNS.
|
||||
- Диск: фаза 1 — один 80 ГБ NVMe (всего 22 ГБ данных, влезает с
|
||||
запасом). «Холодный» второй диск под крупные данные — отдельная
|
||||
фаза 2, не на критическом пути.
|
||||
- Источник не удаляется сразу после cutover: держим «холодным запасным»
|
||||
пару недель ради отката.
|
||||
|
||||
Детальный план — [`../drafts/timeweb.md`](../drafts/timeweb.md),
|
||||
фактическое выполнение —
|
||||
[`../drafts/timeweb-migration-log.md`](../drafts/timeweb-migration-log.md).
|
||||
|
||||
## Последствия
|
||||
|
||||
- `+` −907 ₽/мес (≈ −31 %) при вдвое большем RAM и CPU и NVMe-диске —
|
||||
закрыты все три исходные проблемы.
|
||||
- `+` Запас по RAM убирает OOM-риск при всплесках нагрузки.
|
||||
- `+` Диверсификация по облакам: раньше сервер и данные были в одном
|
||||
аккаунте Yandex Cloud, теперь compute в Timeweb, а бэкапы (S3) — в
|
||||
Yandex. Если заблокируют или потеряем доступ к одному провайдеру,
|
||||
данные остаются доступны через другой.
|
||||
- `-` Диск меньше (80 ГБ NVMe против 120 ГБ HDD), но сейчас занят
|
||||
примерно наполовину — запас есть, фаза 2 с холодным диском не срочная.
|
||||
- `-` Сохраняется зависимость от Yandex Cloud (S3, Container Registry,
|
||||
Postbox SMTP, DNS) — переезд её не устраняет.
|
||||
- `-` Timeweb активно блокирует Telegram (в отличие от YC) — интеграция
|
||||
отвалилась. Затронуты `transcriber`, `remembos` и нотификации о
|
||||
бэкапах. Ожидаемо; нотификации остались через почту, второй канал
|
||||
рассматривается через Matrix.
|
||||
- `-` Из-за тех же блокировок Timeweb перестали обновляться некоторые
|
||||
RSS-фиды в `miniflux`.
|
||||
- `-` Для доступа к `cr.yandex` вне YC появился долгоживущий OAuth-токен
|
||||
Яндекса в vault (`yc_oauth_token`) с широким blast radius. При желании
|
||||
сузить — IAM-ключ сервисного аккаунта отдельной итерацией.
|
||||
- Инвентарь временно раздвоен (`production.yml` + `timeweb.yml`); после
|
||||
стабилизации источник удаляется, `timeweb.yml` → `production.yml`.
|
||||
+4
-3
@@ -61,6 +61,7 @@
|
||||
|
||||
Новые сверху.
|
||||
|
||||
| Дата | Запись | Статус |
|
||||
| ---------- | ------------------------------------------------------------------------------- | ------ |
|
||||
| 0000-00-00 | [Вести историю решений в виде ADR](ADR-0000-00-00-record-architecture-decisions.md) | — |
|
||||
| Дата | Запись | Статус |
|
||||
| ---------- | ------------------------------------------------------------------------------------- | ------ |
|
||||
| 2026-05-23 | [Переезд сервера с Yandex Cloud на Timeweb VPS](ADR-2026-05-23-migrate-to-timeweb.md) | — |
|
||||
| 0000-00-00 | [Вести историю решений в виде ADR](ADR-0000-00-00-record-architecture-decisions.md) | — |
|
||||
|
||||
Reference in New Issue
Block a user