Ingestion
Objects in S3 trigger SQS messages to start asynchronous processing.
Streaming service
Event-driven pipeline for media processing with Go, SQS, S3, FFmpeg, and Kafka.
Technical vision
The flow separates ingestion, processing, and delivery using S3, SQS, Go workers, FFmpeg, and Kafka.
asynchronous processing and progress flow
Objects in S3 trigger SQS messages to start asynchronous processing.
Go workers run FFmpeg and produce chunks and artifacts.
Kafka events are published after each processed chunk upload is confirmed.
Execution flow
The flow separates ingestion, processing, and delivery using S3, SQS, Go workers, FFmpeg, and Kafka.
UPLOAD -> CLAIM JOB -> FFMPEG -> ARTIFACTS -> EVENT PUBLISHED
Processing starts through SQS instead of being tied to a synchronous request.
The job generates chunks and artifacts while keeping the message active during long processing.
After upload to S3, Kafka events communicate processing progress.
Engineering decisions
S3, SQS, Go, FFmpeg, S3, and Kafka define clear stages between ingestion and delivery.
The message is removed from the queue only after processing completes successfully.
Kafka events are emitted after the upload of each processed chunk is confirmed.
Risk controls
Visibility timeout renewal prevents in-progress jobs from being lost during long processing.
Prometheus, health checks, and structured logs support operational visibility.
Stack
Outcome
The project demonstrates event-driven processing with progress confirmation and controls for long-running jobs.