TIL

24.09.27 TIL - 이미지 처리 모듈 생각 정리

개발공명 2024. 9. 30. 04:02

오늘 배운 것

  • 백엔드에서 이미지 처리 시 불편한 점, 고려할 점
  • 이미지 모듈에서 있으면 좋을 것 같은 기능

 

백엔드에서 이미지 처리 시 불편한 점, 고려할 점

  • 대용량 이미지 업로드, 다운로드 시 시간이 오래 걸림
  • 여러 이미지를 차례로 업로드, 다운로드 하면 오래 걸림
  • 업로드, 다운로드 시 중간에 오류 발생하면 전체 취소됨
  • 업로드, 다운로드 시 중간에 오류 발생하면 취소된 곳부터 다시 하는 것이 어려움
  • 이미지 조회 시 권한 체크를 고려해야 함
  • 이미지를 resize해서 여러 size로 저장해야 함
  • 이미지 메타데이터 정보를 고려해야 함
  • 원본 이미지 이름은 그대로 넣지 않는 것이 좋음
  • 확장자를 제한해서 받아야 함
  • 이미지 업로드, 다운로드를 동기, 비동기로 처리할 것인지 고려해야 함

 

이미지 모듈에서 있으면 좋을 것 같은 기능

  • 업로드, 다운로드 작업 진척도를 알려주는 기능
  • 업로드, 다운로드 작업 완료 시 알려주는 기능
  • 업로드, 다운로드 작업 중 오류 발생 시 어디에서 오류 났는지 알려주는 기능
  • 업로드, 다운로드 작업 중 오류 발생 시 오류난 것부터 재개하는 기능
  • 업로드, 다운로드 작업 중 오류 발생 시 성공, 실패한 이미지 알려주는 기능
  • 지역 기반 CDN
  • 이미지 외의 다른 것들 업로드, 다운로드 (ex: mp4, gif)
  • 이미지 조회 시 메타데이터도 반환 기능
  • 이미지 권한 공유 기능

 

필요 기능

위의 조사들을 바탕으로 개발하려는 이미지 모듈에서 필요한 기능들을 생각해 봤다. 

 

주요 기능 

  • 대용량 업로드, 다운로드를 위한 비동기/배치 처리 기능
  • 업로드, 다운로드 작업 진척도 알려주는 기능
  • 업로드, 다운로드 작업 완료 및 실패 여부 알려주는 기능
  • 업로드, 다운로드 작업 중 오류 발생 시 실패한 부분부터 retry 하는 기능 (오류 발생 시 fallback 로직)
  • 이미지 사이즈별 resizing 하는 기능 (해상도, 사이즈 최적화 관련)
  • 이미지 업로드 시 원본 이미지 정보 관련 처리 기능 (이름 등등)
  • 파일 처리 관련 기능
    • 메타 데이터 관련
    • 확장자 관련
  • client에게 serving하는 기능
    • CDN
    • cache
    • S3 or minio

 

부가 기능

  • 이미지 업데이트 여부에 따른 다른 캐싱 전략 적용 (업데이트 적은 이미지는 캐싱 시간 길게….)
  • 추후 추가 예정...

 

정리

이러한 기능들을 생각해봤다. 

 

아직 이미지 처리 관련된 것들을 잘 몰라서 보통 어떻게 처리하는지, 어떤 아키텍처로 진행이 되는지 알아보기로 했다. 

 

또한 주요 기능들도 굉장히 복잡하고 어려울 것으로 생각되고 CDN에 관한 것도 잘 모르고 있다.

 

그렇기 때문에 주요 기능을 잘 구현하고 추가로 CDN 관련된 것도 해보려고 한다.