Jhipster로 Microservice Application 개발하기 2편

Updated:

Jhipster로 개발 시작하기

Jhipster로 Microservice Application을 개발시 순서는 아래와 같다.

  1. gateway 만들기
  2. Registry 만들기
  3. Microservice 만들기
  4. 생성한 Microservice에 Entity 생성하기
  5. 생성된 Entity를 gateway가 인식할 수 있도록 gateway에 등록하기

생각보다 어렵진 않지만, 어떻게 옵션을 선택하느냐에 따라, 어떤 방식으로 Entity를 생성하고 개발하느냐에 따라 Jhipster를 활용하는 방법은 무궁무진해진다.

우선, 지금은 말 그대로 Jhipster가 무엇인지 보여주기 위한 것이므로 가장 쉽게 접근할 수 있는 것으로 해보겠다. Docker와 아주 잘 연동되어있기 때문에 Docker를 활용해서 Jhipster Registry를 띄울 예정이며, Docker를 설치하지 않는 경우 github에서 Jhipster-Registry를 다운 받아 실행시켜 사용할 수 도 있다.

Jhipster Registry 링크

Gateway 생성하기

  1. gateway 폴더 생성
  2. gateway 폴더를 jhipster 프로젝트로 변경
mkdir gateway
cd gateway
jhipster
  1. 옵션 선택

    image

Registry 실행

  1. gateway 폴더 내에서 아래 command를 실행시킨다.
docker-compose -f src/main/docker/jhipster-registry.yml up
  1. 결과 확인

    image

    위 이미지처럼 실행되었다면 정상이다.

  2. Jhipster Registry 접속해보기

http://localhost:8761로 접속해보면 아래와 같은 이미지를 확인할 수 있다.

Login Info : Id - admin / Pw - admin

Jhipster Registry

Jhipster Registry는 크게 3가지 목적으로 사용된다.

  1. Eureka Server
  2. Spring Cloud Config
  3. Monitoring Dashboard

즉, Jhipster Registry를 통해 프로젝트에 사용되는 모든 Application을 자동으로 등록하고 Application의 Config정보를 제공할 뿐 아니라, Application의 상태와 로그 또한 확인할 수 있다.

Gateway 실행

  1. 새로운 terminal을 열고 gateway를 실행시켜보자. (Jhipster Registry가 실행중인 창은 닫으면 안된다!!)
./mvnw

분명, terminal을 열기 귀찮아서 IDE를 통해 Spring boot Run을 실행시키는 분들도 있을 듯한데, ./mvnw로 실행시키지 않으면 정상적으로 build가 되지 않아 수많은 오류를 맛볼 수 있다.^0^

아래 이미지처럼 보이면 정상적으로 실행된 것이다.

image

  1. gateway 주소로 접속

http://localhost:8080으로 접속해보자.

image

위 이미지와 같은 창이 뜰 것이다. 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
  1. book 폴더 생성
  2. book 폴더를 jhipster 프로젝트로 변경
mkdir book
cd book
jhipster
  1. 옵션 선택

    image

Entity 생성하기

book Directory에 들어가 아래 command를 입력하여 book Entity를 생성한다.

생성 시, author, title, description으로 책 저자, 책 이름, 책 설명을 변수로 선언하고 이는 반드시 입력되어야하는 값이기 때문에 required로 하였다.

cd book
jhipster entity book

그 다음 옵션 선택으로 entity에 추가할 변수와 그 변수의 자료형, 옵션, 다른 entity와의 관계를 설정할 수 있다.

image

entity생성과 변수 설정 완료 후, 추가적인 옵션을 선택할 수 있는데 그 선택은 아래와 같이 한다.

image

마지막으로 master.xml을 overwrite할 것이냐는 옵션이 나오는데, 이때 y를 선택해야한다.

image

추가한 Entity를 gateway에 등록시키기

마지막으로 추가한 entity를 gateway에 등록시켜야한다.

cd gateway
jhipster entity book

위 command입력을 통해 book entity를 gateway에 추가시킬 수 있다.

입력 후, 몇가지 옵션을 선택하게 되는데 아래 이미지와 같이 선택한다.

image

이때 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

이제 모두 잘 동작하는지 확인해본다.

  1. Jhipster Registry 확인

-> localhost:8761로 접속하여 admin으로 로그인하고, gateway와 book이 등록되어있는지 확인

  1. Gateway 확인

-> localhost:8080에 접속하여 admin으로 로그인하고, Entity 탭 아래 book에 들어갔을 때 이미지처럼 뜨는지 확인

image

위 이미지를 확인해보면 넣지도 않은 데이터들이 무작위로 들어가있음을 볼 수 있다. 바로 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 개발 편을 마친다. :)