You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

마이크로 서비스를 구성하기에 앞서 , 서비스에 이용되는 라이브러리에대해 빌드툴에서 의존성 설정을 올바르게 해야합니다.

최근 모던 빌드툴에 비해 메이븐은 설정이 복잡하고 어렵습니다. 그래서 스프링을 웹 프레임웍으로 선택하였다고하면

스프링을 사용하는 요소만큼은 단순하게 의존성을 셋팅할 필요가 있습니다.

원문문서 : 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은 두줄의 코드로만 관리될수도 있습니다.

하지만 메이븐이 너무 오랫동안 사용되어 왔고 데브옵스에서 거의 이것만 사용되며 자동배포등 기존 시스템과 호환성을

무시할수 없기때문에 메이븐으로 쭈욱 진행해보겠습니다.


의존성 구조화:

  • 모든 프로젝트가 공통으로 참조하는것 ( 오픈소스 공통 라이브러리)
  • 특정 프로젝트만 참조하는것 ( 특정 로컬 참조)
  • 그룹 프로젝트가 공통으로 참조하는것 ( 내부공통 라이브러리)

여기서 의존성 단순화 목표는 , 우리가 사용할 스프링요소에대해서 크게 신경쓰지 않는 것입니다.

스프링 4,5 의 의존성을 모두 이해하고 있다는 작은 요소하나하나를 각각 설정해도 됩니다.

하지만 이것은 우리가 설계할 서비스보다 더 복잡해질수 있으며, 이렇게 시작되고 오랫동안 유지되는

프로젝트는 우리서비스의 복잡성보다, 사용했던 오픈 라이브러리들 사용했던 방식이  더 복잡해져서 

더이상 신규 라이브러리를 도입하기 어려운 상황이 오게됩니다.


  • No labels