본문 바로가기
Web Development/MicroService Architecture

[MSA / Spring Cloud / Eclipse] MSA 구성을 위한 Eclipse와 IntelliJ의 차이(feat. 도커 도입 배경)

by 감자맹고우 2023. 4. 24.
728x90
반응형
장인은 도구를 탓하지 않는다
(물론, 내가 장인이라는 뜻은 절대 아님)

 

내 주도로 MSA를 활용해 팀 프로젝트를 하게 되었으니, 팀원이 납득할 수 있는 환경을 조성해야 했다.

습득한 환경은 IntelliJ 였지만, 팀원들에게 유료의 IntelliJ를 권할 수는 없었다. 언어도 선택이듯이, IDE도 선택이다. IDE는 도구에 불과한 것이지 환경에 종속되어서는 안된다.

그래서 팀에서 기존으로 쓰던 IDE인 Eclipse에서 MSA 개발 환경을 구축해야했다.

 

Eclipse에서 Spring Boot 프로젝트는 어떻게 생성하고, 프로젝트 관리는 어떻게 해야할까. Eclipse에서는 레거시 환경만 구성해보았기에 고민이 되었지만, 그간의 경험이 있으니 일단 부딪혀 보기로 했다.

그런데 생각보다 어렵지도 않았고, 프로젝트 관리 자체에 있어서는 큰 차이가 없어보였다.

 

그래도 차이점이 있긴 했는데, 가장 눈에 띄는 차이점은 Eclipse는 Workspace 단위이고 IntelliJ는 Project 단위라는 것이다.

Eclipse에는 Workspace 폴더 내에 여러 개의 프로젝트를 두고, 여러 개의 프로젝트를 하나의 Eclipse에서 관리할 수 있다. 반면 IntelliJ는 프로젝트 하나씩 관리를 한다. 물론 모듈을 생성해서 유사한 환경을 구성할 수 있지만, 기본 값이 그렇게 차이가 있다.

 

프로젝트 생성하는 방법을 알아보자.

먼저 IntelliJ는 간단하다.

File > New > Project를 선택해 창을 띄운 후 Spring Initializr를 선택하여 아래와 같이 진행할 수 있다.

 

 

원하는 항목을 선택하여 프로젝트를 그대로 생성하면 된다.

Eclipse에서는 어떨까?

비슷하다.

 

일단, Marketplace에서 Spring을 검색하고 가장 높은 버전을 받아준다.

 

 

이게 가장 높은 버전이니 받는다. STS를 주로 활용하는 것 같지만, 환경을 구성하는 나부터 '굳이?' 라는 생각이 들어서 Eclipse를 그대로 고수하기로 했다. 그 다음에는? 똑같다.

Project Explorer에서 New > Project를 선택해주고 Spring Boot > Spring Starter Project를 선택해준다.

 

 

그러면 IntelliJ에서 봤던 창이 그대로 출력된다.

 

 

마찬가지로 필요한 항목을 선택하여 프로젝트를 생성하면 완료된다.

 

그러나...

 

아무래도 IntelliJ에 비해 부족한 면은 확실히 있다. 코드 관리의 편의성은 당연히 제외하고 가장 핵심적으로 느껴진 차이는 '콘솔창 관리' 였다. MSA로 개발하면 여러 개의 서비스를 같이 실행시키고 각 서비스마다 콘솔을 따로 관리해야하는데 이 부분이 Eclipse에서는 너무 힘들었다.

 

일단 아래 이미지를 보면, Eclipse에서도 여러 개의 콘솔창을 생성하고 관리할 수 있다.

New Console View를 선택하여 콘솔창을 여러 개 생성 가능하고, 콘솔이 담당할 프로젝트를 지정할 수도 있다.

그러나 지정을 해도 모든 프로젝트가 실행 중이다보니, 어느 순간 콘솔창 지정이 풀리고 뒤죽박죽 섞이게 된다.

 

 

이 부분을 해결하기 위해 discovery-service나 apigateway-service 같이 코드 작업을 하지 않는 프로젝트는 mvn spring-boot:run 명령어로 cmd창에서 별도 실행시켰지만, 이렇게 손이 많이 가는 환경은 팀원 모두에게 권할 수 있는 궁극적인 해결 방법이 아니다.

(물론, Workspace를 달리하는 법도 있지만 그렇게 효율이 느껴지는 느낌은 아니다. 이것은 궁극적으로 IntelliJ도 마찬가지라는 뜻이겠지만 Default가 Workspace 단위인 Eclipse에서는 더 확실히 차이가 느껴졌다.)

 

그래서 나의 소중한 ChatGPT에게 해결방법을 물어보았다.

 

나 : { 중략 } 좋은 방법이 있을까?
ChatGPT : 네, 있습니다! Docker-Compose 기능을 사용해보세요. Docker-Compose로 서비스를 한 번에 실행하고 관리할 수 있습니다!
나 : 띠용

 

그렇게, ChatGPT님의 말씀에 따라 바로,

아직 배우지 못해서 후순위로 미루어두었던 docker를 최우선 순위로 변경해 도입해보게 되었다.

 

🤞 도움이 되셨기를 바랍니다. 한 번의 클릭과 댓글은 어딘가의 누군가에게 진실로 큰 힘이 됩니다. 🐱‍🏍

 

728x90
반응형

댓글