1. 스프링 부트 동작 방식
1) 서버 간 통신 : MSA(Microservice Architecture)
여러 사이트를 하나의 서비스로 개발할 때?
: 예를 들어 네이버는 블로그, 카페, 메일 등의 기능을 하나의 어플리케이션에 통합하여 개발
- 이러한 큰 규모의 서비스의 개발적 한계를 극복하고자 서비스 규모를 작게 나누어 구성한 아키텍쳐
- 하나의 사이트(서비스)에서 다수의 기능을 제공하는 대신 MSA의 경우 다수의 기능을 독립적인 어플리케이션으로 개발
- 이러한 경우 각 서비스간의 통신이 필요
e.g. '메일'서비스를 사용하기 위해 '로그인'서비스를 사용해야함
- 이때 사용하는 통신 방식(프로토콜)이 HTTP/HTTPS
2) 스프링 부트의 요청 처리 방식
① 'spring-boot-starter-web' 모듈을 사용하면 톰캣을 사용하는 스프링 MVC 구조 기반 동작
⑴ DispatcherServlet으로 요청(HttpServerRequest)이 들어오면 핸들러 매핑(Handler Mapping)을 통해 요청 URI에 매핑된 핸들러를 탐색(Handler = Controller)
⑵ Handler Adapter로 컨트롤러 호출
⑶ Handler Adapter에 컨트롤러의 응답이 돌아오면 ModelAndView로 응답을 가공해 반환
⑷ 뷰 형식으로 리턴된 응답을 View Resorlver를 통해 View를 받아 리턴
Handler Mapping
: 요청을 토대로 어떤 컨트롤러를 사용할지 선정하는 인터페이스
Servlet (Dispatcher Servlet)
: 클라이언트의 요청을 처리 및 결과를 반환하는 자바 웹 프로그래밍 기술
-> Servlet Container에서 관리
Servlet Container
: 서블릿 인스턴스를 생성 및 관리
2. 레이어드 아키텍쳐
: 어플리케이션의 컴포넌트를 유사 관심사를 기준으로 레이어로 묶어 "수평적"으로 구성한 구조
① 프레젠테이션 계층
- 어플리케이션의 최상단 계층
- 클라이언트의 요청을 해석 및 응답
- UI나 API 제공
② 비즈니스 계층
- 어플리케이션이 제공하는 기능을 정의하고 세부 작업을 수행하는 도메인 객체를 통해 업무를 위임
③ 데이터 접근 계층
Independence (레이어간) 이 핵심
3. REST API
- 어플리케이션 인터페이스로, REST API를 통해 서버에 접근 및 자원 조작이 ㄱ4ㅏ능
1) REST란?
: Representational State Transfer
- 주고받는 자원에 이름을 규정하고 URI에 명시해 HTTP 메서드(GET, POST, PUT, DELETE)을 통해 해당 자원의 상태를 주고 받는 것
2) REST API란?
REST 아키텍처를 따르는 시스템/어플리케이션 인터페이스
- REST 특징
① 유니폼 인터페이스
② 무상태성
③ 캐시 가능성
④ 레이어 시스템
⑤ 클라이언트-서버 아키텍쳐
※각각의 내용은 추후 다룰 예정
- REST API 설계 규칙
① URI의 마지막에 '/'를 포함하지 않음
② 언더바를 사용하지 않고 하이픈(-)을 사용
③ URL에는 명사를 사용
④ URI는 소문자로 작성
다음 게시글에서는 스프링 부트 기반 프로젝트 생성 및 개발 환경구축에 대해 다루도록 한다.