Все проекты

Registry Platform

EPP-сервер + платёжный backend для премиум-зоны. Два канала продаж: B2C (сайт + Stripe/PayPal) и B2B (регистраторы через EPP).

RFC 5730–5734Сотни TLS-сессийStripe + PayPal

Бизнес-задача

Компания владеет премиум-доменом и продаёт домены третьего уровня (example.domain.com). Два канала продаж: B2C — конечные пользователи покупают через сайт, оплата Stripe/PayPal. B2B — крупные регистраторы (GoDaddy, Namecheap) подключаются по EPP (RFC 5730).

Ключевая задача

Реализовать EPP-сервер с нуля (RFC 5730–5734) для работы с долгоживущими TLS-сессиями и синхронизацией с Cloudflare DNS API одновременно с обработкой платежей B2C.

Архитектура

┌─────────────────┐                          ┌─────────────────────┐
│   Web Portal    │───HTTP───┐          │ External Registrars │
│   (Angular)     │          │  TCP/TLS │ (GoDaddy, 101Domain) │
└─────────────────┘          │          └──────────┬──────────┘
                             ▼                     ▼
                    ┌───────────────┐   ┌───────────────────┐
                    │    Backend    │   │    EPP Server      │
                    │ (Spring Boot) │   │(Spring Integration)│
                    └───────┬───────┘   └─────────┬─────────┘
                            │                    │
       ┌───────────────┼───────────────────┤
       ▼                ▼                    ▼
┌───────────┐  ┌───────────┐   ┌───────────┐
│ PostgreSQL│  │Stripe/    │   │ Cloudflare│
│ (domains) │  │PayPal     │   │  DNS API  │
└───────────┘  └───────────┘   └───────────┘

EPP-сервер (RFC 5730–5734)

Реализация серверной части стандарта с нуля.
  • Сетевой слой: Spring Integration TCP/NIO для удержания сотен долгоживущих TLS-сессий
  • Парсинг: XPath + XSD валидация входящих команд. Строгая проверка синтаксиса
  • Команды: полная поддержка жизненного цикла (Check, Create, Renew, Transfer, Delete, Restore)
  • Механизм опроса: очередь сообщений EPP (poll req/ack) для уведомления регистраторов
  • Расширение Fee: тарификация по уровням для премиум-имён
  • B2B-биллинг: депозитная система. Списание с внутреннего баланса партнёра при domain:create

Cloudflare (авторитетный DNS)

Зона обслуживается в Cloudflare. При регистрации поддомена:
  • Синхронно: запись в PostgreSQL (источник истины)
  • Асинхронно: вызов Cloudflare API для создания NS-записей (делегирование) или A-записей
  • Результат: домен начинает резолвиться глобально через секунды после EPP-команды

Платежи (B2C)

Полный цикл обработки платежей для конечных пользователей сайта.
  • Stripe: Checkout Sessions, Payment Intents, Setup Intents для сохранённых карт
  • PayPal: Orders API v2, OAuth авторизация
  • Вебхуки: асинхронная обработка статусов платежей
  • Saga: холдирование средств → регистрация в БД → асинхронный provisioning. Автоматический возврат при сбоях

Технологии

Core

Java 17Spring BootSpring Integration (TCP)NIO (non-blocking)

Data

PostgreSQLRedisLiquibase

Integrations

Cloudflare APIStripe APIPayPal API

Infra

DockerNginx (TCP stream)

Моя роль

  • Реализовал EPP-сервер с нуля (RFC 5730) поверх TCP-сокетов
  • Интегрировал Cloudflare DNS API для автоматического создания зон
  • Реализовал платёжный модуль Stripe + PayPal с обработкой вебхуков
  • Обеспечил транзакционную целостность: оплата → домен → DNS