워밍업 클럽 4기 - 백엔드 Day 16 미션
Layered Architecture는 3 tier(4tier)라고도 하며, 계층적으로 레이어(Persistence Layer, Business Layer, Presentation Layer)를 나누어 책임을 구분하는 방식이다.
하지만 규모가 커질수록 하위 계층에 강하게 결합될 수 있어 헥사고날 아키텍처가 사용된다.
Persistence Layer
특징:
데이터베이스에 직접 접근하는 계층이며, 주로 Mapper, repository등이 담당한다.
비즈니스 로직이 들어가면 안되고 오직 crud같은 디비 작업을 위한 작업만 수행해야 한다.
테스트 방법:
-서비스 DB 환경이랑 테스트 DB 환경이 다를 경우 프로파일 분리를 해서 테스트 환경을 서비스와 다르게 구성해서 사용할 수 있다.(@ActiveProfiles 사용 필요)
-@SpringBootTest vs @DataJpaTest
DataJpaTest가 jpa 관련 빈들만 주입해 주기 때문에 더 가볍다.
Business Layer
특징:
핵심 비지니스 로직을 구현하는 계층으로,
Persistence Layer과 상호작용하며, 여러 Repository 들이 조합되기 때문에 롤백에 대한 문제가 발생할 수 있다.
따라서 이를 위해 트랜잭션 관리를 잘 해주어야 한다.
테스트 방법:
-단위 형태로 작성하되, 각각의 테스트가 분리될 수 있는 조치를 해야 한다. (TearDown Method 구현을 구현하여 @AfterEach로 각 테스트 종료시 생성된 데이터들을 지워주어야 한다.)
-@SpringBootTest vs @DataJpaTest
:@DataJpaTest는 자동 롤백이 된다.
Presentation Layer
특징:
외부 세계 요청을 가장먼저 받는 계층으로 프론트엔드에서 넘겨준 값을 먼저 받거나, 최종 가공 데이터를 전달해 주는 계층,
비즈니스 로직을 들어가면 안되고 데이터에 대한 검증이 필요한 계층이다.
테스트 방법:
-@WebMvcTest + MockMvc를 이용한 테스트
-실제 요청/응답 흐름을 시뮬레이션
-Controller 단에서 validation, 응답 포맷 등을 검증
강의 출처
Practical Testing: 실용적인 테스트 가이드
댓글을 작성해보세요.