📝 서론: 수업을 앞두고
Spring REST API 수업을 듣던 중, 강사님께서 앞으로 배울 핵심 기술들에 대해 미리 키워드를 던져주셨다. 궁금해서 미리 개념과 전체적인 흐름을 정리해 보고자 한다.
오늘 정리할 내용은 백엔드 개발의 핵심인 **데이터 처리 방식(ORM, JPA, DDD)**과 파일 처리를 위한 AWS S3의 역할이다.
1. 데이터를 다루는 흐름: ORM → JPA → DDD
이 세 가지는 서로 다른 기술이라기보다, "데이터 중심 개발에서 비즈니스 로직 중심 개발로 나아가는 단계"라고 이해하면 쉽다.
(1) ORM (Object-Relational Mapping)
- 개념: 객체(Java Class)와 관계형 DB(SQL) 사이의 통역사.
- "DB 테이블을 자바 객체처럼 다루고 싶다"는 아이디어에서 출발했다.
(2) JPA (Java Persistence API)
- 역할: 자바 진영의 ORM 표준 인터페이스다. (구현체로는 주로 Hibernate를 사용)
- 개발자가 지루하게 SQL을 직접 짜는 대신, save(), findAll() 같은 자바 메서드로 DB를 조작하게 해준다.
Java
// JPA를 쓰면 SQL 없이 인터페이스만으로 DB 조작 가능
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByName(String name);
}
(3) DDD (Domain-Driven Design)
- 철학: "데이터베이스 테이블 설계보다 비즈니스 로직(도메인)의 본질에 집중하자."
- 연결: JPA가 SQL 작업을 대신 처리해주기 때문에, 개발자는 domain 패키지 안에서 순수한 비즈니스 규칙(Entity 설계)에 온전히 집중할 수 있게 된다. 즉, JPA는 DDD를 실현하기 위한 강력한 도구다.
2. 무거운 파일은 밖으로: AWS S3
DB는 텍스트 데이터를 저장하는 데 최적화되어 있다. 이미지나 동영상 같은 대용량 파일을 DB에 직접 넣으면 성능이 급격히 떨어진다.
- AWS S3: 클라우드 파일 저장소.
- 동작 방식:
- Spring Boot에서 파일(MultipartFile)을 받아 AWS S3로 업로드한다.
- S3는 업로드된 파일의 **URL(인터넷 주소)**을 반환한다.
- DB에는 파일 자체가 아니라, https://s3.aws.../profile.jpg 같은 **가벼운 주소(String)**만 저장한다.
3. 결론: 모든 기술이 합쳐지는 Spring REST API 구조
이 모든 기술은 Spring의 계층형 구조(Layered Architecture) 속에서 유기적으로 작동한다.

[요청 처리 흐름]
- Controller: 사용자의 요청을 받음
- Service (DDD): 비즈니스 로직 수행 (이 과정에서 S3 업로드 로직도 실행)
- Repository (JPA): DB에 데이터 저장/조회 요청
- DB (HikariCP): 미리 준비된 커넥션으로 빠르게 데이터 처리
이번 정리를 통해 각 기술이 왜 필요한지, 프로젝트의 어느 부분에서 동작하는지 명확해졌다. 이제 실습 코드에서 @Entity나 MultipartFile이 나와도 당황하지 않고 이해할 수 있을 것 같다.
'Engineering > Backend Core' 카테고리의 다른 글
| [Code Review] Spring Boot 영화 감상일지 프로젝트 리뷰: 아키텍처와 JPA 의존성 분리 (0) | 2025.12.22 |
|---|---|
| [Code Review] Spring Boot 칵테일 프로젝트: JPA 설계의 모범 사례와 보안 취약점 개선 (0) | 2025.12.15 |
| [Backend] DB 성능 최적화: 커넥션 풀(Connection Pool)과 HikariCP의 등장 (0) | 2025.12.09 |
| TIL: MVC 패턴의 본질과 Service 인터페이스의 진실 (0) | 2025.12.09 |
| 코딩테스트 연습 - 홀짝 구분하기 (0) | 2025.09.30 |