개발에 앞선 기초 지식

정희수·2023년 1월 8일
post-thumbnail

MSA

  • Microservice Architecture 마이크로서비스 아키텍처는 말 그대로 서비스 규모를 작게 나누어 구성한다. 기능별로 구분해서 독릭접인 애플리케이션을 개발하게 되면(블로그, 메일, 카페 서비스 등) 각 서비스간에 통신해야하는 경우가 발생하는데 이를 '서버 간 통신'이라 말한다.
    가장 많이 사용되는 방식은 HTTP/HTTPS 방식이다.

스프링 부트 동작 방식

  • spring-boot-starter-web 모듈을 사용하면 기본적으로 Tomcat을 사용하는 스프링 MVC 구조를 기반으로 동작한다.
  • 서블릿: 클라이언트 요청 처리 및 결과 반환하는 자바 웹 프로그래밍 기술
    스프링에서는 Dispatcher Servlet이 서블릿 역할을 수행한다.
  • 서블릿 컨테이너: 서블릿은 서블릿 컨테이너에서 관리된다.
    톰캣은 WAS의 역할과 서블릿 컨테이너 역할을 수행하는 컨테이너이다.

서블릿 컨테이너 특징

서블릿 인스턴스(servlet instance)를 생성, 초기화, 호출, 종료하는 생명주기를 관리한다.
서블릿 객체는 싱글톤 패턴으로 관리된다.
멀티 스레딩을 지원한다.

  • DispatcherServlet의 간략한 동작
  1. DispatcherServlet으로 요청(HttpServletRequest)이 들어오면 핸들러 매핑을 통해 URI에 매핑된 핸들러를 탐색한다.(여기서 핸들러는 controller를 의미)
  • 핸들러 매핑: 어떤 컨트롤러를 사용할지 정하는 인터페이스
  1. 핸들러 어댑터로 컨트롤러 호출한다.
  2. 핸들러 어댑터에 컨트롤러 응답 돌아오면 ModelAndView로 응답을 가공해 반환단다.
  3. (뷰 형식으로 리턴하는 컨트롤러를 사용하는 경우) 뷰 리졸버를 통해 뷰를 받아 리턴한다.

레이어드 아키텍처

  • 애플리케이션의 컴포넌트를 유사 관심사를 기준으로 레이어로 묶어 수평적으로 구성한 구조를 의미한다.
  • 프레젠테이션 계층: 클라이언트 요청을 해석하고 응답하는 역할. UI나 API를 제공
  • 비즈니스 계층: 서비스 계층이라고도 한다. 핵심 비즈니스 로직을 구현하는 영역이다. 트랜잭션 처리 및 유효성 검사등의 작업도 수행한다.
  • 데이터 접근 계층: 데이터베이스에 접근하는 일련의 작업 수행. (Spring Data JPA에서는 DAO 역할을 레포지토리(Repository)가 수행하기 때문에 레포지토리로 대체할 수 있다.)

참조 도서 정보
장정우, 스프링 부트 핵심 가이드, 위키북스, 2022

profile
nonstop sw developer

0개의 댓글