Усі статті
12 хв читання

Self-hosted vs хмарний трекер: реальна вартість володіння

Self-hosted vs хмарний трекер: гід з вибору для медіабаєра

Через три місяці на self-hosted Keitaro-боксі по-справжньому боляче стає не рахунок за VPS на $30. Боляче від одинадцяти годин, які розробник витратив на перенесення бази кліків на більший диск, коли логи перевалили за 40 ГБ, плюс дев’яносто хвилин тихого даунтайму під час п’ятничного сплеску трафіку, який ніхто не помітив, поки байєр не запитав, чому перестали прилітати постбеки. Сам сервер коштує майже нічого. А обслуговування сервера коштує тиждень чиєїсь уваги — а увага це той самий ресурс, який команда медіабаїнгу не може витратити двічі.

Ось справжнє питання, яке ховається за “self-hosted чи хмарний трекер”. Річ рідко в тому, який редирект-двигун швидший — Keitaro, Binom, Voluum і десяток opensource-форків однаково пристойно роутять кліки й ловлять постбеки. Питання в тому, хто бере на себе операційний ризик, коли щось ламається посеред масштабування, і чи не варто ці години витратити на оптимізацію кампаній, а не на патчинг серверів.

Що насправді означає self-hosted

Коли Keitaro, Binom чи подібний трекер крутиться на власному VPS або виділеному сервері, ви отримуєте повний контроль над стеком — власні домени, базу даних, логіку редиректів і кліковi дані на інфраструктурі, яку обрали особисто ви. Для технічно сильної команди, що вже ганяє серйозні обсяги через перевірених провайдерів, цей контроль дійсно цінний. Ніхто зверху не чіпає ваші логи, ви самі вирішуєте, коли апгрейдити залізо, і можете побудувати логіку редиректів, яку жоден вендорський інтерфейс ніколи не винесе в налаштування.

Але є нюанс: ви також назавжди берете на себе все, що може піти не так, а не тільки на день налаштування. Трекер під реальним навантаженням — це не проєкт “налаштував і забув”, а постійне DevOps-зобов’язання: подовження SSL, зростання бази, яку рано чи пізно доведеться партиціонувати, ротація логів до того, як диск забʼється посеред кампанії, захист від DDoS, коли конкурент чи знуджений скрипт вирішить, що ваш редирект-домен вартий атаки, рантайм-патчі для софта трекера й ОС під ним, і дзвінок у найнезручнішу годину, коли домен зафлагали або CPU впирається в стелю саме під час того сплеску, якого ви так чекали.

Справжня вартість self-hosted — те, що ховається за рахунком за сервер

VPS чи виділений сервер — найменший рядок у сукупній вартості володіння self-hosted-рішенням, і саме на нього найлегше вказати, виправдовуючи рішення — тому сам по собі він вводить в оману. Ось що зазвичай ховається під трекером, який тягне реальний обсяг трафіку:

  • Обчислювальні потужності — розраховані на пікове навантаження, а не на середнє. Недооціните — і кампанії захлинаються саме в той сплеск, на який ви розраховували масштабуватись.
  • Redis — більшість трекерів спираються на нього для кешування й черг; йому потрібен окремий моніторинг, свій ліміт памʼяті і свій план відновлення, коли він падає під навантаженням.
  • ClickHouse чи MySQL на масштабі — логи кліків і конверсій ростуть швидко. Кілька мільйонів кліків на місяць — це ще керована таблиця; десятки мільйонів — це вже проблема партиціонування й retention-політики, яка сама себе не вирішить.
  • Бекапи, які реально протестовані — бекап, з якого ніхто ще не відновлювався, це віра, а не бекап. Тестування відновлення коштує часу щомісяця, а не один раз.
  • Патчинг безпеки — софт трекера, ОС, движок бази даних, reverse proxy — у кожного свій графік релізів і своя історія CVE, за якою треба стежити.
  • Чергування (on-call) — хтось має бути на звʼязку, коли потік перестає слати постбеки о 2 ночі в суботу, посеред масштабування.
  • Ризик втрати даних — конфігурація з одним регіоном і одним сервером має одну точку відмови. Пошкодження диска, невдала міграція чи збій у провайдера можуть коштувати історії атрибуції, яку потім дорого пояснювати афілейт-менеджеру, чий payout більше не збігається з вашими цифрами.

Нічого з цього не потрапляє в рахунок за хостинг. Натомість це годинники, вирвані з роботи над кампаніями, або аутедж, який ніхто не закладав у бюджет. Приблизна ілюстративна щомісячна розкладка для невеликої команди, що веде кілька десятків потоків:

Self-hosted, ілюстративний приклад (не кошторис):
  VPS / виділений сервер ............ $40 - $150
  Зберігання бекапів ................. $10 - $30
  Ротація доменів / SSL .............. $5 - $20
  Обслуговування Redis + ClickHouse .. 6 - 15 год/міс
  Патчинг і безпека .................. 3 - 6 год/міс
  Реагування на інциденти, в середньому 2 - 8 год/міс
  -----------------------------------------------
  Грошові витрати: приблизно $55 - $200/міс
  Час команди: приблизно 11 - 29 год/міс, за ціною
              реальної вартості години розробника
              для вашого бізнесу, а не тієї, що
              вказана в рахунку

Рядок із грошима виглядає дешево. А ось рядок із часом — це те місце, де self-hosted тихо перестає бути безкоштовним, особливо коли година розробника оцінюється за реальною вартістю для бізнесу, а не за тим, що показує дашборд хостингу.

Айсберг, що виступає над водою лише невеликою вершиною, тоді як шестерні, труби та інструменти заховані глибоко в масивній підводній частині

Коли self-hosted справді виграє, а коли це хибна економія

Усе це не робить self-hosted поганим вибором — це робить його поганим дефолтом для певного типу команд. Компроміс зазвичай стає очевидним у кількох конкретних ситуаціях.

Self-hosted справді виграє, коли:

  • Дані з регуляторних причин фізично мають зберігатися в конкретній юрисдикції, а жоден вендор не пропонує потрібний регіон.
  • Ваша команда вже має власний DevOps для іншої інфраструктури, тож трекер — це маргінальна вартість, а не дисципліна, яку треба будувати з нуля.
  • Вам потрібна настільки специфічна логіка редиректів чи роутингу, що жоден вендорський інтерфейс, хоч би яким гнучким він був, ніколи не винесе її в налаштування.

Це хибна економія, коли:

  • Двоє-пʼятеро медіабаєрів перетворюються на сисадмінів за сумісництвом, бо більше нікому патчити сервер.
  • “Економія” від дешевого VPS зникає в перший же раз, коли масштабування збігається з аутеджем, який ніхто вчасно не помітив.
  • Бекапи є, але з них ще ніколи не відновлювалися, тож реальний час відновлення після збою невідомий, поки його не перевірили під тиском.
  • Партиціонування ClickHouse чи виправлення ліміту памʼяті Redis постійно відкладається, бо завжди знаходиться кампанія, яка здається терміновішою — поки одного дня вибору вже не залишається.

Два верстаки поруч — один завалений заплутаними кабелями, запчастинами й відкритим мануалом з ремонту, на другому стоїть один-єдиний загерметизований апарат, що рівно гуде

Що насправді означає “хмара” (managed) — і кому ви довіряєте

Managed хмарний трекер працює на інфраструктурі, яку вендор сам експлуатує, масштабує й моніторить — ви отримуєте робочий простір, підключаєте потоки й офери, а редирект-шар, база даних і ротація доменів перестають бути вашою проблемою. Uptime, планування потужностей і патчинг закладені в підписку, а не оплачуються годинами розробника.

Чесний мінус нікуди не зник: ви довіряєте третій стороні дані про кліки, конверсії та фінанси, а самі привʼязані до їхнього roadmap і цінової політики. У зрілої платформи з резервованою інфраструктурою в кількох регіонах поганих днів має бути значно менше, ніж у одиночного self-managed сервера — але “менше” не означає “нуль”, тож варто напряму спитати будь-якого вендора, як він обробляє відмову регіону і експорт даних, перш ніж заходити на серйозний обсяг.

Нюанс, який часто губиться в цій дискусії: managed не означає, що ваші дані автоматично стають даними вендора. Добре побудована managed-платформа все одно обробляє й зберігає дані про кліки, конверсії та фінанси на серверній стороні, привʼязані до вашого воркспейсу, і їх можна експортувати за запитом — ви орендуєте операції, а не віддаєте актив.

Тертя при міграції: що насправді відбувається під час переходу

Жоден із напрямків не робиться за вихідні, і саме вдавання, що це не так, перетворює міграції на аутеджі. Перехід між self-hosted і managed — в будь-який бік — зазвичай означає:

  • Перенаправлення кожного postback URL у кожній афілейт-мережі й офері, по одному, бо ендпоінт змінюється.
  • Перереєстрація трекінгових доменів і DNS, із затримками поширення, які можуть коштувати атрибуції у вікні переходу.
  • Експорт історичних даних про кліки й конверсії у форматі, який нова система реально зʼїсть, а не просто CSV, який ніхто не перевіряв на прогалини.
  • Перенавчання команди новим дашбордам і новим місцям, де шукати звіти, які вони перевіряють щодня.
  • Паралельне вікно перевірки, коли обидві системи логують трафік одночасно, бо перший раз, коли ви виявите розбіжність, не має бути посеред живого масштабування.

Саме цю частину вендори з обох боків люблять оминати. Жорсткий перехід — стару систему вимкнули, нову ввімкнули, сподіваємось, що всі постбеки долетіли — це рівно той спосіб, яким команди втрачають тиждень історії атрибуції посеред масштабування: той самий біль, який це рішення мало вирішити, а не відтворити.

Один човен з двома вітрилами одразу — одне вже піднято й ловить вітер, а друге піднімають поруч із ним

Self-hosted vs хмара: матриця рішень

ФакторSelf-hostedХмара (managed)
КонтрольПовний контроль над серверами, доменами, розташуванням даних, конфігурацієюОбмежений тим, що дає платформа; інфраструктуру керує вендор
Навантаження на DevOpsПостійне — патчинг, моніторинг, масштабування, реагування на інцидентиВключено в підписку; вендор бере на себе
МасштабуванняРучне — додавання серверів, тюнінг баз даних, балансування навантаження зі зростанням обсягуЕластичне — вендор поглинає сплески й масштабування
Передбачуваність витратЗмінна — сервер плюс час на обслуговування ростуть разом з обсягом та інцидентамиПередбачувана підписка; вартість обслуговування фіксована
Ризик втрати данихПовністю залежить від вашої дисципліни бекапів і резервуванняРезервування на боці вендора, зазвичай мультирегіональне
UptimeНастільки хороший, наскільки хороша ваша інфраструктура й дисципліна чергуваньЗабезпечений резервованою інфраструктурою; менше 502-х під час сплесків
Вартість переходуВисока, якщо мігруєте з сильно кастомізованої конфігураціїНижча, якщо платформа підтримує паралельну синхронізацію під час переходу

Жодна з колонок не є універсально правильною. Велика афілейт-мережа зі своїми інженерами цілком законно може віддати перевагу self-hosted вже хоча б через аргумент резидентності даних. А компактна команда з двох-пʼяти людей, що веде десятки потоків у Facebook і TikTok, зазвичай не може дозволити собі когось на чергуванні заради uptime трекера — для них накладні витрати на обслуговування тихо зʼїдають маржу, яку трекер мав захищати.

Де тут місце DarkCore — managed-хмара, ваші дані залишаються вашими, плюс синхронізація з Keitaro

DarkCore побудований як managed хмарний трекер і CRM саме для другої групи з цієї матриці: команд медіабаєрів, а не сисадмінів, які хочуть, щоб операційний ризик лежав деінде, не втрачаючи при цьому власності на дані чи контролю над власним трекінгом.

Під капотом це означає нуль server ops з вашого боку — не треба підбирати VPS, няньчити Redis чи ClickHouse, не буде дзвінка о 2 ночі, коли зафлагали домен. Але дані про кліки, конверсії та фінанси залишаються на серверній стороні, привʼязані до вашого воркспейсу, а не замкнені у форматі, який належить тільки вендору і який неможливо витягти. Ви аутсорсите операції, а не віддаєте актив.

Частина, яка реально вирішує описану вище проблему тертя при міграції: PWA-трекер DarkCore підтримує одночасну синхронізацію з Keitaro. Якщо ваша команда вже тримає self-hosted інстанс Keitaro — з міркувань комплаєнсу, через уже вкладені в інфраструктуру гроші чи тому що одна людина знає його як свої пʼять пальців — вам не треба його виривати з коренем, щоб отримати managed CRM, серверний роутинг постбеків по потоку й статусу або реальний P&L на основі депозитів. Обидва джерела живлять один і той самий шар аналітики, тож Keitaro продовжує обробляти вже побудований вами роутинг, а DarkCore зверху відповідає за фінанси, права команди й мапінг Facebook Conversions API — перевіряйте обидві системи паралельно стільки, скільки треба, перш ніж вирішувати, чи переходити повністю, якщо взагалі вирішите переходити.

Це справді інший шлях міграції, ніж звичний перехід за принципом усе-або-нічого. Детальніше порівняння функція-до-функції дивіться в DarkCore vs Keitaro і DarkCore vs Binom, якщо порівнюєте не лише модель хостингу. А якщо флаги на доменах чи надійність редирект-ланцюжків — теж частина того, що впливає на рішення, шар доменів — з ротацією і health-check на серверній стороні — зазвичай і є тією деталлю, яка переважує шальки.

Типові помилки

  • Порівнювати тільки рахунок за хостинг, а не години на обслуговування. VPS за $40/міс виглядає дешевшим за підписку, поки години, витрачені на підтримку його живим, не оцінити за реальною вартістю часу розробника для бізнесу.
  • Ніколи не тестувати відновлення з бекапу. Неперевірений бекап — це віра, а не план відновлення: перший реальний тест не повинен випадати на справжній аутедж.
  • Ставитися до міграції як до одних вихідних із жорстким перемиканням. Перенаправлення postback URL і повторна перевірка доменів без паралельного вікна перевірки — це те, як команди гублять атрибуцію посеред масштабування.
  • Вважати, що “managed” автоматично означає втрату даних. Не кожна managed-платформа замикає дані у власному форматі — перевірте, чи є експорт, перш ніж вважати self-hosted єдиним шляхом до реального володіння.
  • Обирати self-hosted заради контролю, яким ви ніколи не скористаєтесь. Повний доступ до сервера звучить цінно, поки не порахуєте, як часто команда реально чіпає логіку редиректів, яку не підтримує жоден вендорський UI — у більшості команд це рідкість, тоді як накладні витрати DevOps йдуть щодня незалежно від цього.

FAQ

Чи справді self-hosted трекер дешевший за хмарний?

Часто ні, якщо врахувати час на обслуговування. Рахунок за сервер зазвичай найменша стаття витрат; реальні гроші йдуть на години розробника, витрачені на патчинг, масштабування баз даних і обробку інцидентів — і вони зазвичай ростуть разом з обсягом трафіку, а не зменшуються.

Чи можу я одночасно тримати self-hosted Keitaro й managed хмарний трекер?

Так — саме під цю модель побудована одночасна синхронізація DarkCore з Keitaro. Зберігаєте наявний роутинг Keitaro і отримуєте CRM, фінанси й серверний трекінг конверсій DarkCore на тих самих даних, без примусового переходу.

Який найбільший ризик self-hosted трекера?

Неперевірене відновлення після втрати даних. Конфігурація з одним сервером чи одним регіоном, де бекапи ще ніхто не відновлював, — найпоширеніший спосіб, яким команди виявляють під час реального аутеджу, що план відновлення насправді ніколи не працював.

Скільки часу займає міграція між self-hosted і managed?

Залежить від того, наскільки кастомізована конфігурація, але закладайте паралельне вікно перевірки, яке вимірюється днями, а не годинами: перенаправлення postback URL, перереєстрація доменів і підтвердження, що обидві системи логують однакові конверсії, перш ніж повністю переходити.

Чесна відповідь

Жодна з колонок цієї матриці не підходить абсолютно всім командам. Велика мережа зі своїми інженерами цілком обґрунтовано може віддати перевагу власному серверу. Компактна команда байєрів так само обґрунтовано може віддати перевагу взагалі не думати про сервер. Важливо обирати усвідомлено, врахувавши години на обслуговування, а не за замовчуванням брати те, чим хтось із команди користувався на попередній роботі.

Якщо ваша поточна схема забирає більше годин на няньчення сервера, ніж на тестування креативів і масштабування, напишіть нам у Telegram і розберіть, як міг би виглядати managed-воркспейс для ваших потоків — зі збереженням наявного Keitaro поруч чи без нього.

  • self-hosted трекер
  • хмарний трекер
  • keitaro
  • афілейт-трекер
  • сукупна вартість володіння
  • медіабаїнг