Streaming API

BACKEND · AI · SYSTEM CASE STUDY

A streaming service connecting a React browsing and playback UI with Spring Boot, AWS S3, Lambda, and MediaConvert.

Role Personal project · upload, media pipeline, post API, playback UIValidation Large-file upload and HLS playback tests

Key Screens

Content library and video exploration screen
Upload screen for large video files
Playback screen using a stored video URL

Troubleshooting

1. Uploading and converting large videos through the Spring server held requests for too long

The browser uploads raw video to S3, then an S3 trigger invokes Lambda and MediaConvert for transcoding. The application manages metadata and lifecycle states instead of carrying the raw file through the API server.

Direct-upload and multipart boundary

2. Large browser uploads were blocked even after AWS had been configured

The failure was server-side CORS. WebConfig permits the browser origin and maps /files/** to the runtime upload directory so post-upload resources are served from the files actually written by the controller.

CORS and upload-file serving configuration

3. A raw video file still needed to appear as a searchable post

The post record stores title, author, description, and videoUrl as metadata. The playback screen resolves the media through that URL without storing the video binary in the database.

Technology Choices

TechnologyWhy it was used
ReactFor content discovery, upload, and playback interactions.
Spring BootFor post metadata, API boundaries, and upload lifecycle handling.
S3 · Lambda · MediaConvertTo separate large-file transfer and transcoding from the application server.
HLSTo deliver converted video segments for browser playback.

System Flow

Streaming API system flow

  1. The client obtains an upload target and sends raw media to S3.
  2. S3 triggers Lambda and MediaConvert to create HLS output.
  3. Spring Boot persists the post metadata and result URL.
  4. The library and player load metadata first, then resolve media at playback.

Next Implementation Plan

  • Add queue-backed conversion status and retry visibility.
  • Collect playback, conversion, and storage-cost metrics.
Hwang Seon-woo
Hwang Seon-woo
Student

Developing games/web applications.