주특기 입문 주차가 시작되어 드디어 Spring을 배우기 시작했다.
Spring Boot로 시작하게 되었는데, 긴장했던 것 보다 세팅에 드는 시간이 들지 않았다.
강의를 들으면서 여러가지 의문이 생겼지만, 그 중에서도 중요하다고 생각했던 개념들에 대해서 회고해보고자 한다.
HTTP
서버와 클라이언트가 정보를 주고 받는 규칙 HTTP message 로 데이터를 교환한다.
HTTP message
Start line - 항상 첫번째 줄에 위치하며, 요청 또는 요청 수행에 대한 결과가 명시된다.
HTTP headers : 요청에 대한 설명, 메시지 본문에 대한 설명이 들어간다.
Body : 요청에 관련된 내용이나, 응답에 관련된 본문이 들어간다.
Startline 과 HTTP header를 묶어 head 라 부르고,body는 payload 라 부른다.
HTTP method
요청 또는 응답 데이터를 전송하는 방식. 서버가 수행해야할 동작을 지정한다.
GET- 리소스 조회(Read) 데이터를 쿼리스트링으로 주고 받는다. (정보가 URL 상에 드러난다.)
POST - 리소스 생성(Create) 요청 데이터를 Body에 담아 서버에 전달한다.
PUT - 리소스 수정(Update) 기존에 데이터가 있으면 대체하고, 없으면 새로 생성한다. (완전 대체)
PATCH - 리소스 수정(Update) 요청 데이터를 일부만 수정한다.
DELETE - 리소스 삭제(Delete)
클라이언트의 요청이 서버에 도달하면, API 라는 서버의 창구로 오게 된다.
API - API(application programming interface)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙
Spring
레이어드 아키텍처 패턴
Presentation 계층
사용자와 상호 작용 처리 계층
CLI, HTTP 요청, HTML 처리 등을 담당한다.
HTTP 요청 처리 및 HTML 렌더링에 대해 알고 있는 웹 계층
흔히 말하는 MVC (Model / View / Controller) 도 이 계층에 속한다.
@Controller 어노테이션 사용
URL을 매핑해서 특정 메서드가 해당 URL로 요청이 올때마다 호출되도록 처리함.
Domain(Business or Service) 계층
서비스/시스템의 핵심 로직
유효성 검사 및 계산을 포함하는 Business 논리 계층
애플리케이션이 수행해야하는 도메인과 관련된 작업들을 담당한다.
입력/저장된 데이터를 기반으로 계산
Presentation 계층에서 받은 데이터의 유효성 (Validation) 검사
어떤 Data Access 를 선택할지 결정
@Service 어노테이션 사용
비즈니스 로직을 수행하기 위한 별도의 계층(Layer).
Data Access(Persistence) 계층
DAO 계층
Database / Message Queue / 외부 API와의 통신 등 처리
데이터베이스 또는 원격 서비스에서 영구 데이터를 관리하는 방법을 분류하는 데이터 접근 계층
@Repository 어노테이션 사용
데이터 소스와의 소통을 해주는 계층
Controller
클라이언트와 백엔드 사이에서 중간 다리 역할을 수행함.
어노테이션에 따라 매핑방식을 달리할 수 있고, 데이터를 받아오는 형식도 정할 수 있다.
➞ Service 계층과 직접 소통
Service
비즈니스 로직이 들어감. 클라이언트 혹은 DB에서 전달받은 데이터를 가공 혹은 유효성 검사를 진행하여 어떤 Data Access를 선택할지 결정한다.
➞ Repository 계층과 직접 소통
Repository (JPA 기준)
JPARepository를 상속받아 DB에 데이터 CRUD를 진행한다. 기본 메서드 외에, 일정 규칙에 따라 추상메서드로 원하는 명령어를 조합할 수도 있다. 해당 인스턴스로 호출한 메서드에 따라 DB에 접근하여 쿼리를 대신 날려준다.
MVC 패턴
Model / View / Controller 의 약자.
- 사용자가 웹사이트에 접속 (Users)
- Controller는 사용자가 요청한 웹페이지를 서비스하기 위해서 모델을 호출 (Manipulates)
- Model은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후 그 결과를 Return
- Controller는 Model이 리턴한 결과를 View에 반영 (Updates)
- 데이터가 반영된 View는 사용자에게 보여짐 (Sees)
Spring 과 Spring Boot의 차이
세팅의 편리함. WAS가 내장되어 Tomcat 등 설치 불필요
Boot는 RESTful API를 사용하여 코드가 더 간결함.
하지만 규모가 큰 프로젝트에서는 스프링이 더 어울림.
느낀 점
복습을 진행하면서 레어이드 패턴, MVC 패턴 별로 정의하는 범위가 어디까지인지 명확하게 이해하진 못한 것 같다.
예를 들어, 그럼 레이어드 패턴의 Domain, Repository 계층이 MVC로 치면 Model 계층에 속하는 건지?? 등의 의문이다. 우선적으로는 실습한 예제를 보면서 Request부터 Response까지 어떤 계층과 로직을 거쳐 데이터가 전달되는지 흐름을 파악해보고자 한다. 그 이후에 드는 의문들은 기술 매니저 순회시간을 이용해야겠다.
'항해99' 카테고리의 다른 글
항해 99 - 2023.02.09 TIL (0) | 2023.02.10 |
---|---|
항해 99 - 2023.02.07 TIL (0) | 2023.02.07 |
항해 99 - 2023.02.01 TIL (1) | 2023.02.01 |
항해 99 - 2023.01.31 TIL (0) | 2023.01.31 |
항해 99 - 2023.01.30 TIL (1) | 2023.01.31 |