[스프링부트핵심가이드] 02.개발에 앞서 알면 좋은 지식( + 03. 개발환경구성)

오늘내일·2023년 10월 22일
0

책 리뷰

목록 보기
2/11

2.1 서버 간 통신

어떤 서비스를 제공할 때 한가지 전체의 서비스를 제공하기 보다, 전체의 서비스를 세부적으로 나누어 서비스를 제공한다. 이러한 형태를 마이크로서비스 아키텍쳐(MSA : MicroService Architecture)라고 한다. 마이크로서비스 아키텍쳐를 선택하는 이유는 하나의 서비스를 유지, 보수를 하는 동안 다른 서비스는 별개로 사용가능하기 위함이다. 이러한 마이크로서비스 아키텍쳐에서는 각 서비스 서버 간 통신이 필요할 경우가 있을 것이다. 가령 카카오페이를 사용할 때 카카오톡과 연동해서 로그인 등등 기능을 사용하는 것과 같다. 서버 간 통신이 필요한 경우 가장 많이 사용되는 통신 방식은 HTTP/HTTPS 방식이다.

2.2 스프링 부트의 동작방식


서블릿은 클라이언트의 요청을 처리하고 결과를 반환하는 자바 웹 프로그래밍 기술이다. 서블릿 컨테이너에서 주로 서블릿을 생성 및 관리한다.
서블릿 컨테이너 특징 :

  • 서블릿 객체 생명주기 관리(생성, 초기화, 호출 종료)
  • 서블릿 객체를 싱글톤 패턴(객체의 인스턴스가 오직 1개만 생성)으로 관리
  • 멀티 스레딩 지원

싱글톤 패턴을 적용하면 고객의 요청이 올 때마다 생성하지 않고 이미 만들어진 것을 공유해서 사용하므로 효율적이다. 스프링에서는 DispatcherServelet이 서블릿의 역할을 수행한다.

위 그림을 간단히 설명하면 DispatcherServelet으로 요청이 들어오면 핸들러 매핑을 통해 해당 요청에 해당하는 핸들러를 탐색해서, 핸들러어댑터를 통해 컨트롤러를 호출한다.
컨트롤러를 통해 요청에 대한 응답이 오면 핸들러 어댑터에서 ModelAndView로 응답을 가공해 반환한다. 뷰형식으로 리턴하는 컨트롤러를 사용할 때는 뷰리졸버를 통해 뷰를 받아 리턴한다.

최근 백엔드는 뷰가 없는 REST형식의 @ResponseBody를 사용하는 경우가 많고, 이와 같은 경우 뷰리졸버를 호출하지 않고 MessageConverter를 거쳐 JSON형식으로 변환해서 응답한다.

2.3 레이어드 아키텍처

레이어드 아키텍처란 애플리케이션의 컴포넌트를 레이어로 묶어 계층적 구조로 구성한 것을 의미한다. 보통 프리젠테이션 계층, 비즈니스 계층, 데이터 접근 계층으로 나뉜다.

출처: https://velog.io/@gayeong39/SPRING-%EB%A0%88%EC%9D%B4%EC%96%B4%EB%93%9C-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98

  1. 프리젠테이션 계층
    • 클라이언트 요청을 해석하고 응답하는 역할(API 제공)
    • @Controller가 많이 사용됨.
  2. 비즈니스 계층
    • 애플리케이션이 제공하는 기능을 정의하고 세부작업을 수행하는 도메인 객체를 통해 업무를 위임하는 역할(핵심기능)
    • @Service가 많이 사용됨.
  3. 데이터 접근 계층
    • 데이터베이스에 접근하는 일련의 작업을 수행
    • @Repository가 많이 사용됨.

2.4 디자인 패턴

디자인패턴은 소프트웨어를 설계할 때 자주 발생하는 문제들을 해결하기 위해 고안된 해결책이다.
GoF 디자인 패턴이 있는데 생성패턴, 구조패턴, 행위패턴으로 나뉜다.

  • 생성패턴 : 객체 생성에 사용되는 패턴
  • 구조 패턴 : 객체를 조합해서 더 큰 구조를 만드는 패턴
  • 객체 간의 알고리즘이나 책임 분배에 관한 패턴

2.5 REST API

2.5.1 REST(Representational State Transfer)란?
주고받는 자원에 이름을 규정하고 URI에 명시해 HTTP메서드(GET, POST, PUT, DELETE)를 통해 해당 자원의 상태를 주고받는 것을 의미한다. GET메서드는 보통 조회의 목적으로 사용되고, POST는 생성 및 저장, PUT은 수정, DELETE는 삭제의 목적으로 주로 사용된다.

2.5.2 REST API란?
REST아키텍처를 따르는 시스템/어플리케이션 인터페이스이다. REST아키텍처를 구현하는 웹서비스를 'RESTful 하다'라고 표현한다.

2.5.3 REST의 특징

  • 유니폼 인터페이스
    REST 서버는 HTTP 표준 전송 규약을 따르기 때문에 타 언어, 플랫폼, 기술 등과 호환 가능하여 일관된 인터페이스이다. 일관된 인터페이스를 유니폼 인터페이스라 한다.

  • 무상태성
    무상태성이란 서버에 상태 정보를 따로 보관하거나 관리하지 않는다는 의미이다.

  • 캐시 가능성
    REST는 HTTP의 캐싱 기능을 적용할 수 있다. 캐싱이 가능한 경우는 클라이언트에서 캐시에 저장해두고 같은 요청에 대해서는 해당 데이터를 가져다 사용한다. 캐시를 사용하면 서버의 트랜잭션 부하를 줄여 효율적이며, 클라이언트 입장에서 응답시간을 줄일 수 있다.

  • 레이어드 시스템
    REST 서버는 네트워크 상의 여러 계층으로 구성될 수 있다.

  • 클라이언트-서버 아키텍처
    REST 서버는 API를 제공하고 클라이언트는 사용자 정보를 관리하는 구조로 분리해 설계한다.

2.5.4 REST의 URI설계규칙
-URI의 마지막에는 '/'를 포함하지 않는다.

  • 언더바는 사용하지 않는다. 하이픈을 사용한다.
  • URL에는 행위가 아닌 결과를 포함한다.
  • URI는 소문자로 작성한다.
  • 파일 확장자는 URI에 포함하지 않는다.

03. 개발환경 구성

  • 본인 환경에 맞게 자바 JDK설치 IDE(인텔리제이, 이클립스 등)를 설치한다.
profile
다시 시작합니다.

0개의 댓글