마이크로 서비스를 구성하기에 앞서 , 사용하고 있는 빌드툴의 라이브러리 의존성 설정을 잘 이해해야
의존성이 스파게티처럼 꼬이지 않고 구조적 설계가 가능해집니다.
원문문서 : https://spring.io/guides/gs/multi-module/
의존성 단순화:
Spring Boot INITIALIZER 을 이용한 Spring 의존요소 단순화
link :https://start.spring.io/
Spring 은 여러가지 오픈소스의 집합체입니다. Rest를 사용하기위해 A 를 JSON을 사용하기위해 B를
데이터베이스를 사용하기위해 C를 사용할수가 있습니다. 하지만 각 오픈소스는 별개로 업그레이드가되며
A-1 , B-3 , C-5 와같이 버젼의 분기가일어나며 각각 다른 버젼조합을 사용하게되며 그 조합에다른 문제파악은
순전히 그것을 사용하는 개발자가 파악해야하는 부분입니다.
stater의 그룹 집합은 spring boot에서 그 조합을 충분히 검증을 하고 그룹화한 사항이며 각 버젼을 뭘로 쓸지
알필요가 없습니다. 단지 메이져 버젼만을 선택하고 , 웹요소에 사용되는 수많은 의존성을 우리는 'spring-boot-starter-web' 만 사용하면 됩니다.
이것은 여러가지 파편화된 라이브러리 의존성을 쉽게 관리할수 있게합니다.
이것은 마이크로 서비스를 가기위해 아주 중요합니다. 단지 하나의 어플리케이션에서만 수백라인의 의존 복잡성을 관리해야하고
그것이 어플리케이션마다 다르다고 해봅시다. 클러스터 서비스로 구성하기전에 우리는 대부분의 시간을 메이븐 설정에 메달려야할것입니다.
Spring Boot 의 웹요소를 사용하기위한 메이븐 셋팅예...
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
그 외 gradle,sbt 등 최근 빌드툴을 사용하는것도 설정을 단순화 할수 있는 방법입니다.
위 xml은 두줄의 코드로만 관리될수도 있습니다.
하지만 메이븐이 너무 오랫동안 사용되어 왔고 데브옵스에서 거의 이것만 사용되며 자동배포등 기존 시스템과 호환성을
무시할수 없기때문에 메이븐으로 쭈욱 진행해보겠습니다.