개발/[MSA] 마스터링 스프링 클라우드-내용 정리

제2장 마이크로서비스를 위한 스프링 (1) - 마이크로서비스를 위한 스프링

sheriff 2019. 1. 23. 18:01


마이크로서비스를 위한 스프링

요즘 개발중인 샘플 프로젝트(SSO 관련) 역시 스프링부트로 진행하고 있고 버전 역시 2.0.1-RELEASE를 사용하고 있다.
마침 이 책에서도 같은 버전을 사용하고 있어서 다행이다.

이 책에서 스프링에 대해서 다루는 이유는 당연히 스프링으로 예제를 만들었기 때문이다.
따라서 이미 스프링에 대해서 잘 알고 있다면 스킵해도 될 것 같다.

하지만 읽는 것을 추천한다.

안다고 생각했던 것들 중에서 잘 모르고 있거나 잘못 알고 있는 것들이 꽤 있기 때문이다.


스프링 부트 소개

    • 애플리케이션을 java -jar 명령어로 실행한다.
    • 표준 스프링 컨피규레이션보다 간단하게 실행 가능하다.

Spring starter

    • 프로젝트 의존성에 포함될 수 있는 아티팩트(Artifact)
    • 애플리케이션에 포함해야 하는 다른 의존성을 제공한다.
    • Auto Configuration을 통해 기본 설정이 적용된다.
    • 예를 들어 spring-boot-start-web을 포함하면 기본 웹 컨테이너를 내장한 애플리케이션으로 시작한다.
      • 기본 웹 컨테이너는 Tomcat이고 8080포트를 사용한다.
      • 포트는 속성 파일에 지정된 필드를 선언하여 쉽게 변경 가능하다.
      • spring-boot-starter-jetty 또는 spring-boot-starter-undertow를 사용하여 웹 컨테이너를 변경 가능하다.



Spring-boot-starter-*


 이름

설명 

spring-boot-start 

자동 컨피규레이션 지원, 로깅, YAML을 포함하는 핵심 스타터 

spring-boot-start web

RESTful과 스프링 MVC를 포함하는 웹 애플리케이션 개발,  톰캣(Tomcat)을 기본 컨테이너로 내장

spring-boot-start web-jetty

기본 내장 서블릿 컨테이너로 제티(Jetty)를 프로젝트에 포함 

spring-boot-start web-undertow

 기본 내장 서블릿 컨테이너로 언더토우(Undertow)를 프로젝트에 포함 

spring-boot-start web-tomcat

내장 서블릿 컨테이너로 톰캣을 프로젝트에 포함. spring-boot-starter-web에 사용되는 기본 서블릿 컨테이너 

spring-boot-start web-actuator

애플리케이션 모니터링 및 관리 기능을 제공하는 스프링 부트 액추에이터 프로젝트를 포함 

spring-boot-start web-jdbc 

Tomcat Connection Pool을 포함하는 스프링 JDBC를 포함. 특정 데이터베이스의 드라이버는 직접 제공해야 함

spring-boot-start web-data-jpa

JPA 또는 Hibernate를 이용해 관계형 데이터베이스에 상호작용하기 위해 필요한 모든 아티팩트를 포함 

spring-boot-start web-data-mongodb

몽고디비와 상호작용하고 로컬 호스트의 몽고에 대한 클라이언트 연결을 초기화하기 위한 모든 아티팩트를 포함

spring-boot-start web-data-security

프로젝트에 스프링 시큐리티를 포함하고 애플리케이션에 기본 시큐리티를 활성화 

spring-boot-start web-data-test 

JUnit, Hamcrest, Mockito 와 같은 라이브러리를 활용한 단위 테스트의 생성을 허가

spring-boot-start web-data-amqp 

스프링 AMQP를 프로젝트에 추가하고 기본 AMQP 브로커로서 래빗엠큐를 시작


스프링 프레임워크의 표준 Configuration과 스프링 부트의 주요 차이점

웹 애플리케이션의 경우,
    • 스프링 부트를 사용하면 웹 컨테이너를 애플리케이션에 포함할 수 있다.
      • 애플리케이션 속에 있는 웹 컨테이너
    • 표준 스프링 Configuration 을 사용하면 애플리케이션을 WAR 형태로 웹 컨테이너에 배포한다.
      • 웹 컨테이너에 속해 있는 애플리케이션(WAR)