2.1 서버 간 통신
마이크로서비스 아키텍처(MSA: Microservice Architecture): 서비스 규모를 작게 나누어 구성한 아키텍처
- 애플리케이션을 기능별로 나누어 개발
- A ↔ B 각 서비스 간에 통신해야 함.
- 서버를 업데이트 하거나 애플리케이션을 유지보수할 때 용이**
2.2 스프링부트 동작 방식
서블릿
- 서블릿: 클라이언트의 요청을 처리하고 결과를 반환하는 자바 웹 프로그래밍 기술로 서블릿 컨테이너에서 관리한다.
- 서블릿 컨테이너는 서블릿 인스턴스를 생성하고 관리하는 역할을 수행하는 주체로서 톰캣은 WAS의 역할과 서블릿 컨테이너의 역할을 수행하는 대표적인 컨테이너이다.
- 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리
- 서블릿 객체는 싱글톤 패턴으로 관리
- 멀티 스레딩을 지원
스프링

- spring-boot-starter-web 모듈을 사용하면 기본적으로 톰캣을 사용하는 스프링 MVC 구조를 기반으로 동작.
- 스프링에서는 DispatcherServlet이 서블릿 역할을 수행.
- 일반적으로 톰캣을 임베드(embed)해 사용
- 서블릿 컨테이너와 DispatcherServlet은 자동 설정된 web.xml의 설정값을 공유
DispatcherServlet 동작
1. DispatcherServlet으로 요청(HttpServletRequest)이 들어오면 DispatcherServlet은 핸들러 매핑 (Handler Mapping)을 통해 요청 URI에 매핑된 핸들러를 탐색합니다. (핸들러: Controller)
(1) 핸들러 매핑: 요청 정보를 기준으로 어떤 컨트롤러를 사용할지 선정하는 인터페이스. 여러 구현체를 가진다.
BeanNameUrlHandlerMapping
- 빈 이름을 URL로 사용하는 매핑 전략
- 빈을 정의할 때 슬래시(’/’)가 들어가면 매핑 대상이 된다.
- ex) @Bean(”/hello”)
ControllerClassNameHandlerMapping
- URL과 일치하는 클래스 이름을 갖는 빈을 컨트롤러로 사용하는 전략
- 이름 중에 Controller를 제외하고 앞부분에 작성된 suffix를 소문자로 매핑
SimpleUrlHandlerMapping
- URL 패턴에 매핑된 컨트롤러를 사용하는 전략
DefaultAnnotationHandlerMapping
- 어노테이션으로 URL과 컨트롤러를 매핑하는 방법
2. 핸들러 어댑터로 컨트롤러를 호출
3. 핸들러 어댑터에 컨드롤러의 응답이 돌아오면 ModelAndView로 응답을 가공해 반환
4. @Controller 방식: 뷰 형식으로 리턴하는 컨트롤럴를 사용할 때는 뷰 리졸버를 통해 뷰를 받아 리턴

5. @RestController에서 return 하는 방식: MessageConverter를 거쳐 JSON 형식 변환

2.3 레이어드 아키텍처
- 애플리케이션의 컴포넌트를 유사 관심사를 기준으로 레이어로 묶어 수평적으로 구성한 구조를 의미
- 3계층 또는 4계층 구성을 의미

프레젠테이션 계층
- 최상단 계층으로, 클라이언트의 요청을 해석하고 응답
- UI나 API를 제공
- 별도의 비즈니스 로직을 포함하고 있지 않으므로 비즈니스 계층으로 요청을 위임하고 받은 결과를 응답하는 역할만 수행
비즈니스 계층
- 기능을 정의, 세부 작업을 수행하는 도메인 객체를 통해 업무를 위임하는 역할을 수행
- DDD 기반의 아키텍처에서는 비즈니스 로직에 도메인이 포함되기도 하고, 별도를 도메인 계층을 두기도 합니다.
데이터 접근 계층
- 데이터베이스 접근하는 일련의 작업을 수행

Spring MVC는 Model-View-Controller 구조로 View와 Controller는 프레젠테이션 계층 영역이며, Model은 비즈니스와 데이터 접근 계층의 영역으로 구분할 수 있다.
비즈니스 계층에 서비스를 배치해 엔티티와 같은 도메인 객체의 비즈니스 로직을 조합하도록 하고 데이터 접근 계층에는 DAO를 배치해 도메인을 관리한다.
- 프레젠테이션 계층
- 유저 인터페이스 계층이라고도 한다.
- 클라이언트와의 접점이 된다.
- 클라이언트로부터 데이터와 함께 요청을 받고 처리 결과를 응답으로 전달하는 역할 - 비즈니스 계층
- 서비스 계층이라고도 한다.
- 핵심 비즈니스 로직을 구현
- 트랜잭션 처리나 유효성 검사 등의 작업도 수행 - 데이터 접근 계층
- 영속 계층이라고도 한다.
- 데이터베이스에 접근해야 하는 작업을 수행
2.4 REST API
REST API를 통해 클라이언트는 서버에 접근하고 자원을 조작할 수 있다.
REST 아키텍처를 따르는 인터페이스.
2.4.1 REST란?
‘Representational State Transfer’, 월드 와이드 웹(WWW)과 같은 분산 하이퍼미디어 시스템 아키텍처의 한 형식. 주고받는 자원
주고받는 자원(Resource)에 이름을 규정하고 URI에 명시해 HTTP 메서드(GET, POST, PUT, DELETE)를 통해 해당 자원의 상태를 주고받는 것을 의미
REST 아키텍처를 구현하는 웹 서비스를 ‘RESTful’라고 표현합니다.
2.4.2 REST의 특징
- 유니폼 인터페이스
- 무상태성
- 캐시 가능성
- 레이어 시스템
- 클라이언트-서버 아키텍처
2.4.3 REST의 URI 설계 규칙
URL 규칙
- URI의 마지막에는 ‘/’를 포함하지 않는다.
- 언터바(_)는 사용하지 않는다. 대신 하이픈(-)을 이용
- URL에는 행위(동사)가 아닌 결과(명사)를 포함
- URI는 소문자로 작성
- 파일의 확장자는 URI에 포함하지 않는다.
'Software > Spring Boot 핵심 가이드' 카테고리의 다른 글
05_스프링부트 API 작성하기 (0) | 2023.05.07 |
---|---|
04_인텔리제이에서 스프링 부트 프로젝트 생성하기(애플리케이션 개발) (0) | 2023.05.07 |
03_2 인텔리제이 IDEA 설치하기 (0) | 2023.05.07 |
03_Mac OS에서 자바 JDK 설치하기 (0) | 2023.01.13 |
01_스프링 부트란? (0) | 2022.11.13 |
댓글