Спроектировала и разработала с нуля Go-сервис для потоковой передачи файлов между сервисами и конечным пользователем.
Основная задача — передавать крупные файлы и формировать архивы без предварительной загрузки всего содержимого в память и без создания временного ZIP-файла на диске.
Сервис создаёт временные одноразовые ссылки, умеет передавать отдельный файл или собирать ZIP-архив непосредственно во время HTTP-ответа.
Реализовала:
— REST API для создания и управления потоками
— HTTP streaming файлов
— ZIP generation on the fly
— временные одноразовые URL
— lifecycle потоков и автоматическое завершение по timeout
— конкурентную работу клиентов через channels и sync.RWMutex
— buffered transfer данных
— recovery и обработку ошибок
Передача выполняется частями, поэтому сервису не требуется хранить весь файл или архив целиком в оперативной памяти.
Стек: Go, fasthttp, channels, sync, HTTP streaming, ZIP, Docker.