INDOORKA
ПРОЕКТ В ДЕТАЛЯХ
001 // INDOORKA

Стабилизация и организация Производственная инфраструктура InDoorka

Rust / Actix-вебNext.jsPostgreSQL 18DockerTraefikТуннели облачных вспышекДействия GitHubDragonflyDB
indoorka.co.uk
БИЗНЕС-ПРОБЛЕМА

InDoorka проводит мероприятия и продает билеты онлайн. Его серверная часть могла выйти из строя из-за неправильного ввода, изображения и логины ломались за прокси-сервером, а каждый выпуск требовал около 20 минут ручной работы на сервере.

РЕШЕНИЕ

Я укрепил серверную часть, чтобы ошибки обрабатывались вместо сбоев, исправил обработку мультимедиа и сеансов и заменил ручные выпуски автоматическим конвейером.

РЕЗУЛЬТАТ

Релиз занимает около 90 секунд после одной отправки кода, сервер не предоставляет общедоступные входящие порты, а некорректные запросы больше не приводят к отключению службы.

Пользовательский интерфейс для живого производства // ШЕЙДЕР СМЕЩЕНИЯ: АКТИВНЫЙ
indoorka.co.uk
INDOORKA главный экран сайта
┌─[КРАТКОЕ РЕЗЮМЕ]───────────────────────┐

InDoorka — это платформа премиум-класса для организации мероприятий и привлечения талантов, основанная на высокопроизводительном Rust / Actix-веб серверный API и редакционная статья Next.js/ТипСкрипт внешний интерфейс.

CMS охватывает диджеев, мероприятия, билеты, товары, места проведения, отзывы и аналитику. Моя работа была сосредоточена на стабилизации уровня производственных данных, рефакторинге механизмов проверки Actix, защите сеансовых файлов cookie с помощью обратных прокси-серверов и внедрении надежного архитектура CI/CD с нулевым портом используя Cloudflare Tunnels, Traefik, Docker и GitHub Actions.

└──────────────────────────────────────────┘
РОЛЬИнженер по инфраструктуре и бэкэнду
ГОД2024
БЭКЭНДRust / Actix-веб
ВНЕШНИЙ ИНТЕРФЕЙСNext.js/ТипСкрипт
БАЗА ДАННЫХPostgreSQL 18 + DragonflyDB
РАЗВЕРТЫВАТЬDocker + Traefik + CF-туннели
//Ключевые результаты и показатели
~90s
Цикл развертывания
Снижение с ~20 минут вручную
100%
Автоматизированная CI/CD
Релизы, запускаемые Git-push
0
Публичные входящие порты
Только исходящие туннели Cloudflare
Безопасный
Распространение результата<T,E>
Устранены паники unwrap().
//Проблемы
01
ИСПЫТАНИЕ 01

Нестабильная целостность серверной части

Неверные входные данные могут привести к панике путей проверки Actix-web вместо возврата контролируемых ответов об ошибках HTTP, что подвергает службу неожиданным сбоям.

02
ИСПЫТАНИЕ 02

Сломанные клиентские активы

Медиа-конвейеры ссылались на внутренние местоположения сети Docker вместо правильных общедоступных путей, что приводило к сбоям в доставке ресурсов в разных средах.

03
ИСПЫТАНИЕ 03

Потери сеансов за прокси

Файлы cookie безопасного сеанса требовали правильной настройки, когда запросы проходили через инфраструктуру обратного прокси-сервера HTTPS, что приводило к прерыванию сеансов.

04
ИСПЫТАНИЕ 04

Ручная оркестровка VPS

Развертывания зависели от ручных операций VPS, что увеличивало риск отклонения конфигурации и требовало ненужной общедоступной инфраструктуры SSH/HTTP.

//Архитектура системы
[РАЗРАБОТЧИК]
СовершитьФункциональная ветка
Git Push→ main
Действия GitHubтриггер CI
↓
[CI/CD]
Линт + ТестКачественные ворота
СтроитьОптимизированный вывод
Туннель Облачного СветаТолько исходящие
↓
[ИНФРАСТРУКТУРА]
VPS-раннерСамостоятельное размещение
Траефик ПроксиSSL + маршрутизация
DockerСлой контейнера
↓
[ПРИЛОЖЕНИЕ]
Фронтенд Next.jsТС/CMS/Лендинг
Руст/Актикс APIМероприятия, Диджеи, Билеты
PostgreSQL 18DragonflyDB + Том.
//Инженерные действия
01 /Усиление безопасности серверной части Rust API
Устранение паники

Переработаны потоки аутентификации и проверки, заменены шаблоны Force-unwrap() безопасным распространением Result<T, E>, поэтому Actix-web возвращает контролируемые ответы о состоянии HTTP вместо сбоя.

Синхронизация базы данных и перечислений

Реализованы точные миграции SQL и синхронизированы варианты приложений со строгими перечислениями PostgreSQL, чтобы предотвратить сериализацию или сохранение недействительных записей.

02 /Медиаконвейеры, заботящиеся об окружающей среде
Относительное разрешение пути

Стандартизированная обработка общедоступных носителей с помощью динамической интерфейсной утилитыsolveMediaUrl, отделяющая общедоступные маршруты от внутренней сети Docker.

Динамическая изоляция домена

Правильно определены пути мультимедиа в средах разработки и производства, что исключает утечку внутренних сетевых адресов Docker в публичные ответы.

03 /Безопасность и настройка прокси
Безопасные сеансы

Настроены сеансы Actix-web для безопасного поведения файлов cookie за обратными прокси-серверами HTTPS, включая cookie_secure(true) и соответствующую обработку SameSite.

Блокировка учетных данных

Конфиденциальная конфигурация, секреты сеанса, учетные данные кэша и конфигурация развертывания перемещены в переменные защищенной среды, которые никогда не раскрываются на внешнем уровне.

04 /Конвейер CI/CD с нулевым портом
Ноль входящих портов

Настроил автономный исполнитель GitHub Actions на VPS для выполнения исходящих заданий развертывания через Cloudflare Tunnel, удалив ненужные общедоступные порты SSH/HTTP.

Автоматизированные выпуски

Созданы рабочие процессы развертывания на основе YAML, охватывающие проверки зависимостей, анализ, сборки, автономный вывод Next.js, замену слоев Docker, миграцию БД и производственное развертывание.

ПРОИЗВОДСТВО // ЖИТЬ
Посмотреть производственную платформу можно на сайтеdoorka.co.uk.
indoorka.co.uk
Узнать стоимость

Есть идея проекта?

Расскажи мне, чего ты пытаешься достичь. Вам не нужно знать, какая технология вам нужна: я помогу определить технический подход, объем, сроки и стоимость до начала разработки.

Откроется ваше почтовое приложение с заполненными данными. Ничего не будет отправлено, пока вы не нажмете «Отправить».