Spring Boot 시작하기 ②

양현지·2023년 8월 14일
1

Web

목록 보기
5/10

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는 소문자로 작성

다음 게시글에서는 스프링 부트 기반 프로젝트 생성 및 개발 환경구축에 대해 다루도록 한다.

0개의 댓글

관련 채용 정보