TIL
24.09.30 TIL - 이미지 모듈 시스템 설계도
개발공명
2024. 10. 1. 00:02
오늘 배운 것
- 이미지 모듈 시스템 설계도
- 이미지 모듈 시스템 흐름
이미지 모듈 시스템 설계도
이미지 모듈 시스템 흐름
시스템 큰 흐름은 2가지다.
- 이미지 업로드
- 이미지 조회 및 다운로드
이미지 업로드
- 이미지 업로드 요청
- 이미지에서 저장할 데이터 추출 및 가공해 DB에 저장
- ex: 원본 이미지 이름, storage service에 저장할 이미지 이름, 이미지 생성된 시간....
- DB에 저장 후 Backend Client에서 업로드한 이미지 구분에 필요한 데이터 반환 (ex: UUID??...)
- 왜냐하면 이미지 업로드 후 URL 반환까지 오래 걸리기 때문
- 원본 이미지 storage service에 저장 후 URL DB에 저장
- 비동기, 배치 처리??
- 어떻게 이미지 업로드 처리할지는 더 공부 후 상세 로직 나올듯
- 원본 이미지 업로드 완료라는 이벤트를 kafka에 발행
- kafka에는 이미지 같이 큰 데이터 넣는 것은 안 좋다고 함
- 이미지 메타 데이터 수정 및 이미지 resizing하는 서버에서 이벤트 구독하고 있어 이벤트 확인
- 이미지 메타 데이터 수정 및 이미지 resizing해 storage service에 저장
- 처리된 이미지를 DB에 어떻게 저장할지는 고민 중
- row를 추가해 저장할지 원본 이미지 row에 column을 추가해 저장할지 고민중
이미지 조회 및 다운로드
- 이미지 업로드 시 반환 받은 이미지 구분에 필요한 데이터로 조회 요청
- CDN에 해당 이미지 있는지 확인
- 이미지 구분에 필요한 데이터로 URL을 우리가 만들 수 있는지 고려해야 함
- 이미지 구분에 필요한 데이터 - key / CDN URL - value로 Redis에 저장 고려
- CDN에 해당 이미지 있다면
- CDN URL 반환
- CDN에 해당 이미지 없다면
- DB로 가 storage service에 저장된 이미지 URL 받아옴
- storage service에서 해당 이미지 받아옴
- CDN에 해당 이미지 설정
- CDN URL 생성 (CDN에서 하는지 Image URL Server에서 하는지 고려 필요)
- CDN URL 반환
- CDN URL로 다운로드 요청
- 다운로드는 CDN에서 하는 것이 좋음
- 다운로드 로직은 아직 어떻게 해야 할지 모르겠음
- CDN URL로 어떤 요청 오면 이미지 다운로드 할 수 있게 해야 할 것 같음