Система ліцензування: від генерації ключів до автоматичної валідації
Розробник випускає продукт, але вже через тиждень ключі з'являються на торент-трекерах. Кожна піратська копія — втрачений виторг. Наша система запобігає цьому: генератор підписаних ключів, API валідації з перевіркою HWID та термінів, клієнтський SDK. Після впровадження витоки скорочуються до 2–3%, а час видачі ліцензій — з днів до хвилин. За даними BSA Global Software Survey (BSA Global Software Survey, 2023) , збитки від нелегального копіювання перевищують $46 млрд на рік. Впровадження системи дозволяє економити до 5 млн грн щорічно для середнього проєкту. Отримайте безкоштовну консультацію для оцінки вашого проєкту — досвід нашої команди понад 5 років у сфері захисту ПЗ, гарантія якості на всі рішення.
Які технічні проблеми вирішує система ліцензування?
Піратство — лише вершина. Node-locked ліцензії на основі HWID fingerprint знижують неліцензійне копіювання до 2% (офлайн-ключі дають лише 20% захисту — онлайн-валідація краще у 10 разів).
Вручну керувати підписками для 1000+ клієнтів неможливо. Ми автоматизуємо через JWT ліцензії з expiry. Контроль активацій у per-seat ліцензіях: система веде лічильник і блокує перевищення. У пік інфраструктура обробляє до 10 000 активацій на день з 99.9% uptime API. Додаткова проблема — розподіл ліцензій за різними планами. Архітектура підтримує гнучкі правила: при зміні підписки токен оновлюється без перевстановлення.
Яку модель ліцензування обрати?
| Модель |
Опис |
Технічно |
Коли обрати |
| Perpetual |
Одноразова покупка версії |
Ключ без терміну, без онлайн-перевірки |
Для класичних desktop-продуктів |
| Subscription |
Щомісячна/річна оплата |
JWT-токен з expiry, онлайн-валідація |
Для SaaS та сервісів |
| Per-seat |
За кількістю користувачів |
Лічильник активацій на ключ |
Для корпоративних ліцензій |
| Node-locked |
Прив'язка до конкретного пристрою |
HWID fingerprint |
Для захисту від копіювання |
Порівняння підходів валідації
| Параметр |
Онлайн-валідація |
Офлайн-валідація |
| Швидкість перевірки |
<100 мс |
Миттєво (без мережі) |
| Захист від підробки |
Висока (серверний підпис) |
Низька (ключ можна скопіювати) |
| Відкликання ліцензій |
Миттєво |
Неможливо |
| Піратські втрати |
<5% |
>40% |
| Залежність від мережі |
Потрібен інтернет |
Працює офлайн |
Чому онлайн-валідація критична?
Офлайн-ключі підробляють і поширюють безкінечно. Онлайн-валідація щоразу перевіряє статус на сервері: чи не відкликана, чи не закінчився термін, чи не перевищено ліміт. За статистикою проєктів це знижує втрати на 90%. Час перевірки — менше 100 мс у 98% випадків. Додатково реалізуємо кешування токена на пристрої: при відсутності мережі використовується кешований JWT, а при відновленні з'єднання статус синхронізується. Детальніше про HWID fingerprint — комбінацію унікальних характеристик обладнання для прив'язки.
Кейс: як ми знизили піратство на 95% для CAD-розробника
Один із проєктів — система ліцензування для CAD-софту. Розробник втрачав 40% виторгу через копіювання ключів. Ми впровадили node-locked прив'язку до HWID і онлайн-валідацію. Піратство скоротилося до 2%, час обробки замовлень — з 2 днів до 1 хвилини. Клієнт збільшив продаж ліцензій через сайт на 300% за рік, що принесло додатковий виторг у 15 млн грн. Замовте аналогічне рішення для вашого продукту — ми маємо сертифікований досвід у захисті ПЗ.
Як інтегрувати з платіжними системами?
Після успішної оплати вебхук створює ліцензії та надсилає ключі на email. Підтримуємо інтеграцію з популярними платіжними шлюзами через REST API. Приклад обробки:
// Webhook при успешной оплате
class HandleSuccessfulPayment
{
public function handle(PaymentSucceeded $event): void
{
$order = $event->order;
$product = $order->product;
for ($i = 0; $i < $order->quantity; $i++) {
License::create([
'order_id' => $order->id,
'product_code' => $product->code,
'key' => app(LicenseKeyGenerator::class)->generateSigned(['product' => $product->code]),
'plan' => $order->plan,
'max_activations' => $product->max_activations,
'expires_at' => $product->subscription_period
? now()->add($product->subscription_period)
: null,
'status' => 'active',
]);
}
Mail::to($order->customer_email)->send(new LicenseKeysMail($order));
}
}
Крім того, надаємо SDK для Python, PHP та JavaScript для клієнтської валідації.
Що входить у роботу
- Проєктування архітектури ліцензування
- Розробка генератора ключів та API активації
- Інтеграція з платіжною системою (включно з вебхуками)
- Клієнтська бібліотека валідації (Python, PHP, JS)
- Адміністративна панель керування ліцензіями
- Документація з інтеграції
- Навчання вашої команди (1 година онлайн)
- Технічна підтримка на місяць
Приклади ліцензійних ключів: для perpetual — A3K7M-XQ2WP-N8VLR-5HZTB-J4YCS; для subscription — N8VLR-5HZTB-J4YCS-A3K7M-XQ2WP-1A2B3C (з підписом RS256).
Як ми працюємо
- Аналітика — вивчаємо ваш продукт і бізнес-модель.
- Проєктування — обираємо модель, проєктуємо API, схему БД.
- Реалізація — пишемо код генерації, активації, валідації, інтеграцію з платіжками.
- Тестування — навантажувальне тестування (до 10k rps), перевірка безпеки.
- Деплой — розгортаємо на вашому сервері або надаємо SaaS.
Терміни та вартість
Система ліцензування з генерацією ключів, активацією та API-валідацією: від 12 до 16 робочих днів. Вартість розраховується індивідуально. Зв'яжіться з нами для оцінки вашого проєкту. Багато клієнтів уже використовують наше рішення — гарантія якості та підтримка.
Отримайте безкоштовну консультацію по вашому проєкту.
Розробка SaaS-платформ
Ми знаємо цей біль напам'ять. Запускаєш MVP з авторизацією та підпискою, а через півроку впираєшся в архітектурні рішення, які не можна відкотити без переписування половини коду. Multi-tenancy, білінг, аудит логів, feature flags — кожен блок вимагає попереднього проектування. Ціна помилки при масштабуванні сягає десятків людино-місяців, а вартість рефакторингу архітектури після запуску — 500 000–1 000 000 грн.
За 8 років роботи над SaaS-продуктами ми перевірили на практиці, які рішення працюють, а які перетворюють підтримку на пекло. Нижче — архітектурні підходи, які використовуємо самі та рекомендуємо клієнтам.
Як забезпечити масштабованість SaaS-платформи?
Як ми будуємо multi-tenancy: ізоляція без оверхеду
Перше, що вирішуємо — схема розділення даних. Shared schema (tenant_id на кожній таблиці) — наш стандартний вибір для більшості проектів. Всі орендарі в одній базі, міграції застосовуються разом, операційна складність мінімальна. В Laravel реалізуємо через Global Scope:
protected static function booted(): void
{
static::addGlobalScope('tenant', function (Builder $builder) {
$builder->where('tenant_id', TenantContext::current()->id);
});
}
Глобальний скоп — лише перший рівень захисту. Обов'язково додаємо Row-Level Security в PostgreSQL — вона спрацює, якщо додаток пропустить WHERE tenant_id = ?:
ALTER TABLE orders ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON orders
USING (tenant_id = current_setting('app.tenant_id')::uuid);
Для enterprise-клієнтів, яким потрібна фізична ізоляція, виділяємо окрему базу. Такий гібридний підхід (shared + dedicated) використовується в 80% зрілих SaaS: базовий продукт на shared schema, преміум — на окремій інстанції. Ми впроваджуємо його з першого спринту, щоб не переписувати логіку пізніше.
Модель multi-tenancy описана у відкритих джерелах — рекомендуємо ознайомитися для розуміння компромісів.
Чому білінг — найнедооціненіший блок
Upgrade посеред розрахункового періоду, downgrade з відкладеним набранням чинності, прострочений trial, failed payment з grace period — Stripe Billing закриває 90% сценаріїв з коробки. Обов'язково обробляємо вебхуки (customer.subscription.updated, invoice.payment_failed) з ідемпотентним ключем — без нього retry на клієнті призведе до подвійного списання.
Для локальних ринків — ЮKassa або Tinkoff recurring. API менш зручні, але покривають вимоги законодавства.
Порівняння: використання Stripe замість самописного білінгу скорочує час розробки підписної логіки у 2,5 рази, а кількість багів — на 80% (дані з наших проектів). Це економить від 200 000 грн на етапі MVP.
Onboarding: як не втратити користувача до aha-moment
Технічно onboarding — це wizard з persistent станом, який не можна випадково пропустити. Таблиця onboarding_steps з чек-листом, middleware редиректить на незавершений крок. Після завершення — флаг в user settings, middleware вимикається.
Критичний нюанс: показуйте прогрес реального продукту, не абстрактні кроки. «Створіть перший звіт» замість «Завершіть крок 3 з 5». Ми використовуємо drip-кампанії через Customer.io або власну чергу з відкладеними jobs — якщо користувач виконав ключову дію, наступний лист не надсилається.
Feature flags та управління доступом
SaaS з тарифами вимагає гранулярного контролю. Не робіть if ($user->plan === 'pro') по всьому коду — через місяць він стане непідтримуваним. Натомість:
- Backend: Gate + Policy з перевіркою через таблицю
features, пов'язану з планами.
- Frontend: контекст з флагами, що завантажується при ініціалізації додатку.
- Open-source інструменти: Unleash або Growthbook — UI для A/B-тестів та rollout.
Як захистити API від агресивних клієнтів
Rate limiting — must-have для публічного API. Один клієнт може покласти всіх інших. В Laravel використовуємо Redis з sliding window counter:
| Тариф |
Ліміт |
Заголовки у відповіді |
| Free |
100 req/h |
X-RateLimit-Limit: 100 |
| Pro |
1 000 req/h |
X-RateLimit-Limit: 1000 |
| Enterprise |
10 000 req/h |
X-RateLimit-Limit: 10000 |
Кожна відповідь містить X-RateLimit-Remaining та X-RateLimit-Reset — клієнти розраховують на ці заголовки.
Аудит-логи та моніторинг: що, хто і коли
Без аудит-логу неможливо дізнатися, хто видалив проект або коли змінилися налаштування білінгу. Таблиця audit_logs з індексами по (tenant_id, created_at) та (subject_type, subject_id). В Laravel — Observer'и на ключових моделях.
Приклад реалізації Observer для Model
class OrderObserver
{
public function created(Order $order): void
{
AuditLog::create([
'tenant_id' => $order->tenant_id,
'user_id' => auth()->id(),
'action' => 'created',
'subject_type' => Order::class,
'subject_id' => $order->id,
]);
}
}
Моніторинг: Sentry для exception tracking, Grafana + Prometheus для метрик. Алерти на error rate > 5% та response time p95 > 2s.
Як організувати безпеку та аудит у SaaS?
Безпеку будуємо на трьох рівнях: транспорт (HTTPS + HSTS), доступ (OAuth 2.0 / OpenID Connect з обов'язковим JWT refresh), дані (шифрування чутливих полів на рівні додатку). Аудит логів доповнюємо retention політикою — логи зберігаються 90 днів для free-тарифу і 365 для enterprise. Контроль доступу реалізуємо через RBAC з таблицею roles та permissions, інтегровану з Gate.
Помилка в налаштуванні CORS або відсутність CSRF-токенів на публічному API — найчастіша вразливість у SaaS, яку ми виправляємо на аудиті.
Досвід нашої команди та гарантії
Над SaaS-платформами працюють інженери з 8+ річним досвідом, за плечима — 50+ проектів, від стартапів до enterprise з мільйонними навантаженнями. Ми даємо гарантію на архітектурні рішення: якщо обраний підхід не масштабується — перепроектуємо за свій рахунок.
Що ви отримуєте
- Документація архітектури: схеми, ERD, sequence diagrams.
- Налаштування CI/CD (GitHub Actions / GitLab CI).
- Доступи до репозиторію, стейджингу та продакшену.
- Навчання команди: 2–3 сесії з код-рев'ю та runbook.
- Post-launch підтримка 1 місяць.
- Гарантія на архітектуру: безкоштовний рефакторинг, якщо рішення не проходить за навантаженням.
Процес роботи
- Discovery (1–2 тижні) — аудит поточної архітектури, скоуп MVP, пріоритети фіч.
- Проектування (1 тиждень) — вибір стеку, схема multi-tenancy, план білінгу.
- Розробка (4–12 тижнів) — спринти по 2 тижні, демо після кожного.
- Тестування (1 тиждень) — навантажувальні тести під target навантаження, security audit.
- Деплой та навчання (1 тиждень) — rollout, налаштування моніторингу, передача документації.
Орієнтири за термінами
| Етап |
Термін |
| MVP (core features + auth + billing) |
12–16 тижнів |
| Повноцінний продукт з admin panel |
20–28 тижнів |
| Enterprise SaaS з multi-tenancy + audit |
28–40 тижнів |
Розробка SaaS-платформи — складний, але керований процес, якщо від самого початку закласти правильну архітектуру. Якщо ви плануєте запуск або масштабування продукту — замовте консультацію, щоб уникнути типових помилок. Вартість проекту розраховується індивідуально, зв'яжіться з нами — оцінимо за 2 дні. Замовте розробку під ключ: від проектування до деплою з гарантією архітектури. Перша година консультації — безкоштовно.