그래서 내가 강조하고 싶은 과거의 기능들을 모아서 포트폴리오로 만들고 있다.
바이브 코딩의 시대라고 한다.
회사에서는 쓰기 어려웠던 LLM을 이용해서 코드를 생성하고, 수정하며 2주정도 만들었다.
대부분의 디자인은 LLM에 맡기고, 나는 기능 구현과 아키텍처 설계에만 집중했다.
[개발 목표]
동영상 파일을 업로드하면, 자동으로 자막 파일을 생성해주고 해당 동영상을 웹에서 자막과 함께 스트리밍하는 플랫폼
[주요 기술]
FE: React, Typescript, Axios, React-Query, Emotion
BE: Java, SpringBoot, SpringSecurity, Jwt, Spring-Data-JPA, Lombok, AssertJ, MySQL
[기능 시나리오]
1. 사용자가 사이트에 접속한다.
- 로그인 페이지로 라우팅한다.
- 로그인 된 사용자는 메인 페이지로 라우팅한다.
2. 아이디와 비밀번호를 입력하고 로그인 버튼을 클릭한다.
- 현재 특별한 제약 정책은 없다.
3. 아이디와 비밀번호를 입력해서 회원 가입을 수행한다.
- 현재 특별한 제한 정책은 없다.
4. 동영상을 조회할 수 있다.
- 페이징이 적용되어야 한다.
- 동영상은 유튜브처럼 썸네일, 업로더, 업로드 날짜, 제목 등을 포함해야 한다.
5. 동영상을 시청할 수 있다.
- 동영상은 스트리밍 형식으로 서버에서 제공한다.
- 자막과 함께 제공되어야 한다.
6. 동영상을 업로드할 수 있다.
- 사용자는 웹 UI를 통해 동영상을 업로드한다.
- 업로드된 동영상을 후처리가 완료된 후 조회 및 시청할 수 있다.
7. 썸네일, 메타정보 추출, 자막 자동 생성이 가능해야 한다.
- 사용자가 따로 제공하지 않는다면 동영상의 1초 구간의 프레임을 썸네일로 추출한다.
- 동영상의 길이, 용량, 제목, 해상도 등의 메타 정보를 추출한다.
- 자막을 생성해야 한다.
간단한 플랫폼같지만, 포폴 욕심을 내다보니 내용이 한도끝도 없이 늘어난다.
모놀로식 구조로 만들었지만, 동영상 후처리 기능과 스트리밍 기능 때문에 결국 서버가 증설되어야 할 것 같다.
ai 모델을 사용하고, DB, BE, FE 서버를 모두 한 PC에서 돌리다보니 점점 개발 PC가 힘들어하는게 느껴진다.
현재 기능 구현은 끝났고, 100명정도라도 실제로 사용할 수 있는 서버로 만들기 위해 고민중이다.
차근 차근 고민했던 내용들을 써야 포트폴리오도 만들고 이력서에 한 줄이라도 더 넣을테니...
[고민중인 내용]
1. 회원 가입과 로그인 부분은 소프트웨어 개발 보안 가이드에 따라 다양한 정책을 넣을 수 있다. 특히 민감 정보의 암호화는 회사 프로젝트를 수행하면서도 많이 진행했었지만 정말 한도 끝도 없다. 가장 간단한건 역시 사용자 기능을 넣지 않는 것이지만... 포트폴리오니까 넣어야겠지?
2. ProcessBuilder와 Docker를 사용해서 whisper 모델을 사용중이다. 마음같아서는 whisper 모델 관리 시스템으로 분리하고 싶다. 서버의 vram 사용 한도를 계산하여 병렬로 처리하고 싶은데 pc가 하나라서 불가... 그냥 단일 쓰레드로 pub/sub 구조로 만들거나 스케줄러를 이용하여 한 건씩 처리하는 방식으로 구현하게 될 것 같다.
3. 동영상 업로드 시 FE에서 서비스 워커를 이용해서 다수 개의 파일을 분할해서 서버로 전송하고 싶다. 그런데 일단 이부분도 패스... 위의 두 개가 우선인것 같다. 만약 한다면 동영상 업로드 서버도 따로 분리해야할 것 같다.
4. 스토리지 문제는 일단 Google AI Pro를 구독하며 해결되긴 했다. 2TB 용량의 온라인 스토리지를 받았다. Google Cloud Storage였으면 더 좋았겠지만, 그래도 실제 서비스용이 아니므로 GoogleDrive만으로도 충분하다. NAS 처럼 연결해서 사용하고 있다. 다만 동영상을 실제 시청할 때는 버퍼링이 심해질테니, 파일 분할 저장 등을 고민하고 있다.
'공부' 카테고리의 다른 글
[FE] Lazy Loading & Code Splitting & Tree Shaking (0) | 2025.06.03 |
---|---|
[웹] Server Sent Event (0) | 2025.06.02 |
[Spring-Data-JPA] N + 1 문제 (0) | 2025.05.26 |
[GCP] Gitea + Nginx(SSL) (0) | 2025.05.20 |
모놀리식 아키텍처 vs 마이크로서비스 아키텍처 (0) | 2025.05.15 |