TIL

24.09.30 TIL - 이미지 모듈 시스템 설계도

개발공명 2024. 10. 1. 00:02

오늘 배운 것

  • 이미지 모듈 시스템 설계도
  • 이미지 모듈 시스템 흐름

 

이미지 모듈 시스템 설계도

 

이미지 모듈 시스템 흐름

 

시스템 큰 흐름은 2가지다. 

  • 이미지 업로드 
  • 이미지 조회 및 다운로드

 

이미지 업로드

  1. 이미지 업로드 요청
  2. 이미지에서 저장할 데이터 추출 및 가공해 DB에 저장
    1. ex: 원본 이미지 이름, storage service에 저장할 이미지 이름, 이미지 생성된 시간....
    2. DB에 저장 후 Backend Client에서 업로드한 이미지 구분에 필요한 데이터 반환 (ex: UUID??...)
    3. 왜냐하면 이미지 업로드 후 URL 반환까지 오래 걸리기 때문
  3. 원본 이미지 storage service에 저장 후 URL DB에 저장
    1. 비동기, 배치 처리??
    2. 어떻게 이미지 업로드 처리할지는 더 공부 후 상세 로직 나올듯
  4. 원본 이미지 업로드 완료라는 이벤트를 kafka에 발행
    1. kafka에는 이미지 같이 큰 데이터 넣는 것은 안 좋다고 함
  5. 이미지 메타 데이터 수정 및 이미지 resizing하는 서버에서 이벤트 구독하고 있어 이벤트 확인
  6. 이미지 메타 데이터 수정 및 이미지 resizing해 storage service에 저장
    1. 처리된 이미지를 DB에 어떻게 저장할지는 고민
    2. row를 추가해 저장할지 원본 이미지 row에 column을 추가해 저장할지 고민중

 

이미지 조회 및 다운로드

  1. 이미지 업로드 시 반환 받은 이미지 구분에 필요한 데이터로 조회 요청
  2. CDN에 해당 이미지 있는지 확인
    1. 이미지 구분에 필요한 데이터로 URL을 우리가 만들 수 있는지 고려해야 함
    2. 이미지 구분에 필요한 데이터 - key / CDN URL - value로 Redis에 저장 고려
  3. CDN에 해당 이미지 있다면
    1. CDN URL 반환 
  4. CDN에 해당 이미지 없다면
    1. DB로 가 storage service에 저장된 이미지 URL 받아옴
    2. storage service에서 해당 이미지 받아옴
    3. CDN에 해당 이미지 설정
    4. CDN URL 생성 (CDN에서 하는지 Image URL Server에서 하는지 고려 필요)
    5. CDN URL 반환
  5. CDN URL로 다운로드 요청 
    1. 다운로드는 CDN에서 하는 것이 좋음
    2. 다운로드 로직은 아직 어떻게 해야 할지 모르겠음
    3. CDN URL로 어떤 요청 오면 이미지 다운로드 할 수 있게 해야 할 것 같음