[Spring] 백엔드 서비스 아키텍처

JiKwang Jeong·2022년 4월 21일
0

레이어드 아키텍쳐


레이어드 아키텍처 패턴은 애플리케이션을 구성하는 요소들을 수평으로 나눠 관리하는 것이다.
레이어 사이에 계층이 있다. 그래서 레이어는 자기보다 한 단계 하위의 레이어만 사용한다.
컨트롤러가 요청을 받는다. Controller는 Service를 쪼고 서비스는 Persistence를 쫀다.
Persistence는 요청한 데이터를 반환한다. Service는 데이터를 검토 및 가공한 후 Controller에게 반환한다. Controller 또한 데이터를 검토 및 가공한 후 응답을 반환한다.

model, entity, dto

model과 entity

  • model
    비즈니스 데이터를 담는 역할과 데이터베이스의 테이블과 스키마를 표현하는 두 역할
  • dto
    서비스가 요청을 처리하고 클라이언트로 반환할 때 모델 자체를 그대로 리턴하는 경우는 거의 없다. 보통은 데이터를 전달하는데 사용되는 오브젝트인 Data Transfer Object로 변환해 리턴한다.
    이러한 이유는
    첫번째로 비즈니스 로직을 캡슐화하기 위함이다. 외부 사용자에게 서비스 내부의 로직, 데이터베이스 구조 등을 숨길 수 있다.
    두번째로 클라이언트가 필요한 정보를 모델이 전부 포함하지 않는 경우가 많기 때문이다. 가장 대표적인 예로 에러 메시지가 있다. 서비스 실행 도중 사용자 에러가 나면 dto에 에러 메시지 필드를 선언하고 DTO에 포함한다.ㅏ

anotation 설명

  • @Builder
    오브젝트 생성을 위한 디자인 패턴 중 하나. Builder 클래스를 따로 개발하지 않고도 Builder 패턴을 사용해 오브젝트를 생성할 수 있다.
    Builder 패턴을 사용하는 것은 생성자를 이용해 오브젝트를 생성하는 것과 비슷하다.
    생성자와 비교해 장점은 매개변수 순서를 기억할 필요가 없다.
  • NoArgsContructor
    NoArgsContructor 어노테이션은 매개변수가 없는 생성자를 구현해준다.
  • AllArgsContructor
    AllArgsContructor 어노테이션은 클래스의 모든 멤버 변수를 매개변수로 받는 생성자를 구현해준다.
  • @Data
    Data 어노테이션은 클래스 멤버 변수의 Getter/Setter 메서드를 구현해준다.
profile
기억보다 기록, 난리보다 정리

0개의 댓글