본문 바로가기
해피 코딩/Today I Learned

Chapter 5. 팀 프로젝트 2주차 WIL

by happy-coding 2024. 10. 6.

 Weekly I Learned


  • 2주 차 간단 요약
    • 프로젝트 개발 시작 단계

2024. 09. 30
  • 인프라 아키텍처 & ERD 설계

  • 최종 인프라 설계도

  • 흐름 정리
ImageUploadServer
  • Backnd Client에서 이미지 업로드 요청 / BackendClient ➡️ ImageUploadServer
  • ImageUploadServer에서 요청된 이미지 데이터의 정보를 serverdataDB에 저장 / ImageUploadServer ➡️  server data DB
    • DB에 저장 성공 시 사용자에게 "이미지 업로드 중" 과 같은 메시지를 반환한다. (사용자 편의성 위해) 
  • ImageUploadServer에서 MINIO에 이미지 업로드 /  ImageUploadServer ➡️  MINIO
    • 문제❗❗: S3와 달리 MINIO는 스토리지에 저장된 이미지의 URL을 반환하지 못하는 것 같다. 이름으로 저장 시 저장된 이미지의 이름이 겹칠 수 있는 문제가 발생 한다.
    • 해결: 원본 이름을 그대로 저장하지 않고, UUID를 부여하여 이미지의 이름이 겹치는 문제 해결
    • MINIO에 업로드 성공 시 사용자에게 "이미지 업로드 성공" 과 같은 메시지를 반환한다.
ImageInternalServer
  • ImageUploadServer에서 치환된 이미지의 UUID를 Kafka를 통하여 ImageInternalServer로 전달 / ImageUploadServer ➡️  ImageInternalServer
  • 전달받은 이미지의 메타 데이터 수정
  • 전달받은 이미지를 크기별로 리사이징
    • 이미지를 각각의 리사이징 된 크기에 맞는 MINIO 스토리지에 업로드
  • MINIO에 데이터 업로드 /  ImageInternalServer ➡️  MINIO
    • 리사이징 된 이미지 업로드 시 WebP타입으로 변환 후 MINIO에 업로드하기로 결정되었다.
ImageURLServer
  • 이미지 업로드 및 다운로드 요청이 들어온다.
  • MINIO에 WebP타입으로 저장된 타입을 요청 타입에 맞게 변환
  • 데이터를 CDNServer에 전달 / ImageURLServer ➡️ DNServer
CDNServer
  • 클라이언트에서 요청된 이미지가 있을경우 바로 반환
  • 클라이언트 에서 요청된 이미지가 없을 경우 ImageURLServer에 다운로드 요청 / CDNServer ➡️ ImageURLServer
  • Nginx를 사용하여 구현할 것으로 예상 중

2024. 10. 01 ~ 2024. 10. 02
  • GitHub Organization 생성
  • 팀 규칙 설정
    • ground rule
    • git convention
    • issue 및 PR
    • branch 전략
  • 파트 분배
    • ImageUploadServer : 안지연
    • ImageInternalServer : 서병준
    • ImageURLServer : 노민경
    • CDNServer : 최준
  • Basic Class S3 특강
    • 차후에 배포 시 MINIO에서 S3로 바꿔서 배포할 계획이 있다.

2024. 10. 03
  • 개천절
  • SpringBoot, MINIO 연동
  • 이미지 업로드 및 다운로드 구현

2024. 10. 04
  • 리사이징 하는 방법 서치
    • thumbnailator을 사용하여할 예정이다
  • MINIO에 이미지 저장 시 WebP파일로 변환 후 저장하기로 결정
    • JPEG, PNG 타입으로 저장하지 않고 WebP로 저장하는 이유 ➡️ 저장 공간 절감, 빠른 전송 및 로딩
    • 파일 최적화