Jhipster로 Microservice Application 개발하기 2편
Updated:
Jhipster로 개발 시작하기
Jhipster로 Microservice Application을 개발시 순서는 아래와 같다.
- gateway 만들기
- Registry 만들기
- Microservice 만들기
- 생성한 Microservice에 Entity 생성하기
- 생성된 Entity를 gateway가 인식할 수 있도록 gateway에 등록하기
생각보다 어렵진 않지만, 어떻게 옵션을 선택하느냐에 따라, 어떤 방식으로 Entity를 생성하고 개발하느냐에 따라 Jhipster를 활용하는 방법은 무궁무진해진다.
우선, 지금은 말 그대로 Jhipster가 무엇인지 보여주기 위한 것이므로 가장 쉽게 접근할 수 있는 것으로 해보겠다. Docker와 아주 잘 연동되어있기 때문에 Docker를 활용해서 Jhipster Registry를 띄울 예정이며, Docker를 설치하지 않는 경우 github에서 Jhipster-Registry를 다운 받아 실행시켜 사용할 수 도 있다.
Gateway 생성하기
- gateway 폴더 생성
- gateway 폴더를 jhipster 프로젝트로 변경
mkdir gateway
cd gateway
jhipster
-
옵션 선택
Registry 실행
- gateway 폴더 내에서 아래 command를 실행시킨다.
docker-compose -f src/main/docker/jhipster-registry.yml up
-
결과 확인
위 이미지처럼 실행되었다면 정상이다.
-
Jhipster Registry 접속해보기
http://localhost:8761로 접속해보면 아래와 같은 이미지를 확인할 수 있다.
Login Info : Id - admin / Pw - admin
Jhipster Registry
Jhipster Registry는 크게 3가지 목적으로 사용된다.
- Eureka Server
- Spring Cloud Config
- Monitoring Dashboard
즉, Jhipster Registry를 통해 프로젝트에 사용되는 모든 Application을 자동으로 등록하고 Application의 Config정보를 제공할 뿐 아니라, Application의 상태와 로그 또한 확인할 수 있다.
Gateway 실행
- 새로운 terminal을 열고 gateway를 실행시켜보자. (Jhipster Registry가 실행중인 창은 닫으면 안된다!!)
./mvnw
분명, terminal을 열기 귀찮아서 IDE를 통해 Spring boot Run을 실행시키는 분들도 있을 듯한데, ./mvnw
로 실행시키지 않으면 정상적으로 build가 되지 않아 수많은 오류를 맛볼 수 있다.^0^
아래 이미지처럼 보이면 정상적으로 실행된 것이다.
- gateway 주소로 접속
http://localhost:8080으로 접속해보자.
위 이미지와 같은 창이 뜰 것이다. Registry와 마찬가지로 Id와 Pw 둘다 admin을 입력해 로그인이 가능하다. admin은 관리자 권한을 가지고 있으며, admin으로 로그인 시 상단 메뉴 바에 관리자
가 추가된 것을 볼 수 있다.
관리자 탭을 클릭 시 위와 같은 메뉴들을 볼 수 있다. 각각 들어가보면, Gateway에 User 관리(권한관리 포함), Swagger, 관리 매트릭스 등이 구현되어있음을 확인할 수 있다.
User관리와 Swagger 구현만 있어도 사실 엄청난 편리함을 맛볼 수 있다!
-
User관리는 특히 Spring Security와 함께 구현되어있다. Spring Security를 예전에 적용해본 적이 있었는데, 편리하긴 편리했지만 너무나도 복잡한 환경 설정과 엄청난 양의 코드량 등 직접 구현하기엔 무척 어렵다. 하지만 Jhipster는 이부분을 모두 구현해주었기 때문에 Spring Security만 어느정도 알고 있으면 개발자 입맛대로 세부적인 Custom이 가능하다.
-
Swagger는 REST API 테스트를 할 때 무척 유용하다. 작년에 Swagger를 적용해보았을 때, 최신 버전의 Spring에서는 Swagger 연동이 제대로 되지 않아 애를 먹기도 했다. 그런데 여기선 그런 것을 걱정할 필요가 없다. :) Jhipster가 모두 설정해두었기 때문에!
Microservice Application 만들기
이제 Microservice를 한번 만들어보자.
예시로 Book Service를 만들어보았다.
- 서비스 정보:
- port: 8081
- package : com.skcc.book
- book 폴더 생성
- book 폴더를 jhipster 프로젝트로 변경
mkdir book
cd book
jhipster
-
옵션 선택
Entity 생성하기
book Directory에 들어가 아래 command를 입력하여 book Entity를 생성한다.
생성 시, author, title, description으로 책 저자, 책 이름, 책 설명을 변수로 선언하고 이는 반드시 입력되어야하는 값이기 때문에 required로 하였다.
cd book
jhipster entity book
그 다음 옵션 선택으로 entity에 추가할 변수와 그 변수의 자료형, 옵션, 다른 entity와의 관계를 설정할 수 있다.
entity생성과 변수 설정 완료 후, 추가적인 옵션을 선택할 수 있는데 그 선택은 아래와 같이 한다.
마지막으로 master.xml을 overwrite할 것이냐는 옵션이 나오는데, 이때 y를 선택해야한다.
추가한 Entity를 gateway에 등록시키기
마지막으로 추가한 entity를 gateway에 등록시켜야한다.
cd gateway
jhipster entity book
위 command입력을 통해 book entity를 gateway에 추가시킬 수 있다.
입력 후, 몇가지 옵션을 선택하게 되는데 아래 이미지와 같이 선택한다.
이때 Entity의 path는 각 microservice가 존재하는 path로 수정해야한다.
재실행 후, 테스트
이제 entity 생성까지 모두 마쳤으니, 다시 모든 application을 재실행시켜 제대로 동작하는지 확인한다.
먼저, Jhipster Registry 및 gateway를 실행 중이었다면 모두 중단 시킨 후, 다시 gateway 폴더에서 아래와 같은 command를 입력한다.
docker-compose -f src/main/docker/jhipster-registry.yml up
새로운 terminal 창에서 다시 gateway 폴더에 들어가 아래 command를 입력한다.
./mvnw
book서비스 또한 실행시켜준다.
cd book
./mvnw
이제 모두 잘 동작하는지 확인해본다.
- Jhipster Registry 확인
-> localhost:8761로 접속하여 admin으로 로그인하고, gateway와 book이 등록되어있는지 확인
- Gateway 확인
-> localhost:8080에 접속하여 admin으로 로그인하고, Entity 탭 아래 book에 들어갔을 때 이미지처럼 뜨는지 확인
위 이미지를 확인해보면 넣지도 않은 데이터들이 무작위로 들어가있음을 볼 수 있다. 바로 Entity를 생성할 때, Jhispter가 임의로 fake data를 입력해준것이다!
실제로 수정, 삭제, 등록 등을 실행시켜보면 매우 잘 작동하는 것을 알 수 있다.
Jhipster 사용 간략 후기
이렇게 Jhipster로 간단하게 Microservice Application을 맛 볼 수 있다.
1편에서 얘기했듯이 Business Logic을 구현하는 것, 추가적인 Front View를 개발하는 것 등은 개발자의 몫이다.
자동으로 생성해주는 것이 많은만큼 직접 Business Logic을 구현하거나 새로운 Library를 추가하려고 할 때 생각보다 고쳐야할 부분, 삭제해야할 부분이 많다. 또, 꽤 삽질을 해야할지도 모른다. 왜냐하면 하나하나 열어보지 않으면 절대 알 수 없는 config 파일과 폴더들이 한번에, 꽤 많은 양이 담겨있기 때문이다.
물론, spring boot를 제대로 이해하고 있다는 가정하에, 차근차근 폴더를 열어보고 코드를 들여다보면 무엇을 어떻게 고치고 추가해야할 지 대략적인 감이 온다.
애초에 Jhipster의 목적은 처음부터 끝까지 완벽한 Application을 만들어주는 게 아니다. Jhipster는 MSA를 구현할 때 많은 사람들이 어려워하는 환경설정이나 package 구조, gateway, Eureka 개발, Spring Security, Docker Compose 등을 자동화 해줌으로써 MSA 개발을 좀 더 쉽게, 편리하게, 최적화된 성능으로 Cloud 환경에 맞는 애플리케이션을 구축하는데 도움을 주는 도구 일 뿐이기 때문이다.
따라서, Jhipster를 정말 잘 활용하려면 Spring Boot와 MSA에 대한 이해, Front, DB를 잘 알고 있어야한다. 잘 모르면 우선 Jhipster로 무엇이든 만들어보고 하나하나 뜯어보며 알아가는 것도 하나의 방법이기도 하다.
좀 무섭게 말하긴 했지만, 막상 해보면 꽤 재미있다. 만약 Microservice Application을 한번도 구현해보지 않았다면 한번쯤 시도해보면 좋겠다. 내가 이런 것들을 몰랐구나를 알게 되면, 그만큼 뭘 배워야겠다 라는 것도 알게 되기 마련이니까.
이렇게 해서 Jhipster를 활용한 MSA 개발 편을 마친다. :)