Spring#1_2_SpringBoot 및 서버 이해
소프트웨어 디자인 패턴
소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다. 소스나 기계 코드로 바로 전환될 수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿이다. 디자인 패턴은 프로그래머가 어플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데에 쓰이는 형식화된 가장 좋은 관행이다.
복잡한 문제를 해결하는 방법 - 문제를 나눈다.
서버는 데이터를 처리하는 부분 / 서비스 로직을 처리하는 부분 / 기존의 데이터를 이용하는 부분
실제로 각 부분은 스프링과 스프링부트에서 각각의 레이어로 나뉘어져 있습니다.
레이어드 아키텍쳐 패턴
Presentation 계층 (spring에서는 @Controller 어노테이션을 사용하여 표현)
사용자와 상호 작용 처리 계층
CLI, HTTP 요청, HTML 처리 등을 담당한다.
HTTP 요청 처리 및 HTML 렌더링에 대해 알고 있는 웹 계층
흔히 말하는 MVC (Model / View / Controller) 도 이 계층에 속한다.
(더 이상 유능한 서버프레임워크를 써도 활용성 낮음)
Domain(Business or Service)계층 (spring에서는 @Service 어노테이션을 사용하여 표현)
서비스/시스템의 핵심 로직
유효성 검사 및 계산을 포함하는 Business 논리 계층
애플리케이션이 수행해야하는 도메인과 관련된 작업들을 담당한다.
입력/저장된 데이터를 기반으로 계산
Presentation 계층에서 받은 데이터의 유효성 (Validation) 검사
어떤 Data Access 를 선택할지 결정
(전체 중에서 도메인 계층이 비대해지는 것이 가장 효과적임)
Data Access(Persistence)계층 (spring에서는 @Repository 어테이션을 사용하여 표현)
Database / Message Queue / 외부 API와의 통신 등 처리
데이터베이스 또는 원격 서비스에서 영구 데이터를 관리하는 방법을 분류하는 데이터 접근 계층
(데이터 베이스가 서버 외부에 별개로 존재하는 경우가 많고, 그러한 데이터 소스와의 소통을 해주는 계층)