이미지 처리 서버 생성하기
이미지 처리 서버 생성하기 — #SpringAWS #SpringAWSS3 #SpringS3 #S3서버생성 #개발자의도구들 목표(MVP) S3에 이미지...
#Projects#Naver Blog
#SpringAWS #SpringAWSS3 #SpringS3 #S3서버생성 #개발자의도구들
목표(MVP)
S3에 이미지를 저장하는 단일 서버를 만들어서 연결하자.
🎯 단일 프로젝트로 이미지 처리서버 만들기
- 이미지 저장하기
- 이미지 반환하기
\* 이미지 메타 데이터는 일반 DB에 저장하기.
- 이미지 메타데이터 저장하기
- 이미지 메타데이터 반환하기
서버 생성 후 프론트 서버와 연결 하기
Steps
- spring boot 프로젝트 새로 생성
2, 이미지 & metadata 컨트롤러 생성
- save
- get
- delete
2.1. Table 생성 ✅
-
- Database 나누기
- DB 커넥션 수정하기
- profile\_image\_metadata 테이블
- advertisement\_image\_metadata 테이블
# 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까지 저장하자 -> 일반적(?)
profile_image_meta ✅
- DAO
- method
- update
- Search
- S3에 업로드하는 서비스 만들기
- AWS SDK ✅
- AWS IAM 생성
- 전용 Policy 생성 후 붙이기
- key 발급
- Key yaml 나누기 - gitignor에 등록(유출 방지)
🚀 S3 버킷 관리
- 일단은 리소스를 최대한 아끼기 위해서 metadata 혹은 S3 버킷 실패시 강제로 데이터 모두 지우는 로직 추가
- 이미지 메타데이터 서비스 만들기
- upload
- Image ✅
- meta ✅
- get
- bucket public 상태 ✅
- 회원가입 안해도 볼 수 있도록
📌 지속적으로 점검 하고, 최종적으로 글로 정리하기
>> 정리된 글
AntiPattern 조심하기
⚠️ DAO를 Service에 노출하지 말 것!
- DB Layer와 Business Layer가 강하게 묶여버린다.
- DTO를 사용하여 DB Layer로 넘긴 후 DAO를 사용하라.
🤔 ENUM을 Controller에서 받을 수 있는가?
- 가능하다
- 그냥 문자열 처럼 사용 가능함
고치기
- image 저장시 duplicated 체크
- RDBMS랑 S3 동기화
- 하나가 실패하면 자동으로 rollback 하도록