프로젝트발행일 2025. 9. 22.원본 https://blog.naver.com/jword_/224017393092 ↗

이미지 처리 서버 생성하기

이미지 처리 서버 생성하기 — #SpringAWS #SpringAWSS3 #SpringS3 #S3서버생성 #개발자의도구들 목표(MVP) S3에 이미지...

#Projects#Naver Blog

#SpringAWS #SpringAWSS3 #SpringS3 #S3서버생성 #개발자의도구들

목표(MVP)

S3에 이미지를 저장하는 단일 서버를 만들어서 연결하자.

🎯 단일 프로젝트로 이미지 처리서버 만들기

  1. 이미지 저장하기
  2. 이미지 반환하기

​

\* 이미지 메타 데이터는 일반 DB에 저장하기.

  • 이미지 메타데이터 저장하기
  • 이미지 메타데이터 반환하기

​

서버 생성 후 프론트 서버와 연결 하기

​

Steps

  1. spring boot 프로젝트 새로 생성

​

2, 이미지 & metadata 컨트롤러 생성

  • save
  • get
  • delete

​

2.1. Table 생성 ✅

-

  • Database 나누기
  • DB 커넥션 수정하기
  • profile\_image\_metadata 테이블
  • advertisement\_image\_metadata 테이블
text 코드 예제
                                    # profile_image_metadata
id(Long)
userType(String)
userId(Long)-logical FK
image_type(background, profile)(String)
update_at
last_modified_at
originam_file_name
content_type
size

bucket_name  # 🎯 저장 bucket이름/경로
s3_key       # 🎯 저장 고유 식별자

# ad_image_metadata
id
advertisement_id
isThumbnail (True/False)
update_at
last_modified_at
origin_file_name
content_type
size

bucket_name   # 🎯 저장 bucket 이름/경로
s3_key        # 🎯 저장 고유 식별자

2.2 Exposed 도메인 생성

  • Table
  • Basic table for autoupdate fields: create\_at, last\_modified\_at
  • millsec까지 저장하자 -> 일반적(?)
text 코드 예제
                                    profile_image_meta ✅

​

  • DAO
  • method
  • update
  • Search

​

​

​

  1. S3에 업로드하는 서비스 만들기
  • AWS SDK ✅
  • AWS IAM 생성
  • 전용 Policy 생성 후 붙이기
  • key 발급
  • Key yaml 나누기 - gitignor에 등록(유출 방지)

​

🚀 S3 버킷 관리

  • 일단은 리소스를 최대한 아끼기 위해서 metadata 혹은 S3 버킷 실패시 강제로 데이터 모두 지우는 로직 추가

​

  1. 이미지 메타데이터 서비스 만들기
  • upload
  • Image ✅
  • meta ✅
  • get
  • bucket public 상태 ✅
  • 회원가입 안해도 볼 수 있도록

​

📌 지속적으로 점검 하고, 최종적으로 글로 정리하기

>> 정리된 글

​

AntiPattern 조심하기

⚠️ DAO를 Service에 노출하지 말 것!

  • DB Layer와 Business Layer가 강하게 묶여버린다.
  • DTO를 사용하여 DB Layer로 넘긴 후 DAO를 사용하라.

​

🤔 ENUM을 Controller에서 받을 수 있는가?

  • 가능하다
  • 그냥 문자열 처럼 사용 가능함

​

고치기

  • image 저장시 duplicated 체크
  • RDBMS랑 S3 동기화
  • 하나가 실패하면 자동으로 rollback 하도록