240430 TIL #386 레이어드 아키텍처 패턴

김춘복·2024년 4월 30일
0

TIL : Today I Learned

목록 보기
386/543
post-custom-banner

Today I Learned

오늘은 레이어드 아키텍처 패턴에 대해 개념은 어렴풋이 알고 있지만, 제대로 정리해본 적이 없어 한번 정리해보았다.


소프트웨어 디자인 패턴

  • 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책. 완성된 디자인은 아니며 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데 쓰이는 서술이나 템플릿. 어플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데 쓰이는 형식화된 관행 중 하나.

레이어드 아키텍처 패턴

  • 복잡한 문제를 아키텍처적으로 해결하는 방법은 매우 다양하지만 주로 문제를 나누는 방식을 애용

서버는 새로운 데이터를 처리하는 부분, 서비스 로직을 처리하는 부분, 기존의 데이터를 이용하는 부분 으로 나눌 수 있다.

Presentation 계층

  • 사용자와 상호작용 처리 계층. 스프링에서는 @Controller 어노테이션을 사용하여 표현.

  • CLI, HTTP요청, HTML처리 등을 담당. HTTP요청 처리 및 HTML 렌더링에 대해 알고있는 웹 계층

  • 흔히 말하는 MVC(Model/View/Controller)도 여기 속한다.

Domain(Business of Service) 계층

  • 서비스/시스템의 핵심 로직. 스프링에서는 @Service 어노테이션으로 표현

  • 유효성 검사 및 계산을 포함하는 Business 논리 계층. 입력/저장된 데이터를 기반으로 계산

  • 애플리케이션이 수행해야하는 도메인과 관련된 작업들을 담당.

  • Presentaition 계층에서 받은 데이터의 유효성(Validation) 검사. 어떤 Data Access를 선택할지 결정.

Data Access(Persistence) 계층

  • DAO 계층. 스프링에서는 @Repository 어노테이션으로 표현

  • Database / Message Queue / 외부 API와의 통신 등 처리

  • 데이터베이스 or 원격서비스에서 영구 데이터를 관리하는 방법을 분류하는 데이터 접근 계층

기타

  • 스프링이 편한 이유? 단순반복 작업이 많은 Controller와 Repository쪽을 개발관점에서 매우 쉽고 편하게 처리해줘서 Service 레이어에 집중할 수 있게 해주기 때문.

  • 자바문법과 스프링 문법이 묘하게 다른 부분이 있는데 따로 메모하고 외우는 것이 나중에 IOC, DI 등 설계철학을 배우고 이해하는데 좋다.

profile
Backend Dev / Data Engineer
post-custom-banner

0개의 댓글