JHipster로 MSA 쉽게 구성하기
JHipster란?
JHipster는 모던 웹 애플리케이션과 마이크로서비스 아키텍처를 빠르게 구성할 수 있게 도와주는 오픈소스 개발 플랫폼이다.
JHipster - Full Stack Platform for the Modern Developer!
JHipster is a development platform to quickly generate, develop, and deploy modern web applications and microservice architectures. We support many frontend technologies, including Angular, React, and Vue. We even have mobile app support for Ionic and Reac
www.jhipster.tech
이미 많이 사용되는, 위와 같은 아키텍처를 손쉽게 구성해볼 수 있다.
처음으로 프로젝트를 설계할 때 편하게 사용할 수 있을 것 같다.
JHipster 개발 지원 영역
- 프론트엔드: Angular, React, Vue.js
- 백엔드: Spring Boot, Node.js
- 배포: Docker & Kubernetes for AWS, Azure, Google Cloud Platform
JHipster 설치하기
먼저 자바 11과 Node.js 설치가 필요하다. 그 후 JHipster 설치.
npm install -g generator-jhipster
JHipster로 MSA 개발하는 순서
- 게이트웨이 생성
- 레지스트리 생성
- 마이크로서비스 생성
- 마이크로서비스에 엔티티 생성
- 엔티티를 게이트웨이가 인식하도록 게이트웨이에 등록
1. 게이트웨이, 레지스트리 생성 및 실행
JHipster로 구성하는 게이트웨이는 모든 프론트엔드 코드를 가진다.
mkdir gateway
cd gateway
jhipster
그리고 옵션을 원하는대로 선택한다.
다 선택하면 gateway 디렉토리에 게이트웨이와 레지스트리가 생성된다.
이제 도커 컴포즈로 레지스트리를 실행한다.
(참고로 도커 컴포즈는 도커 컨테이너를 여러개 띄우기 위한 도구이다.)
docker-compose -f src/main/docker/jhipster-registry.yml up
http://localhost:8761로 접속하면 레지스트리 상태를 웹에서 확인할 수 있다.
(아이디와 패스워드는 모두 admin이다.)
게이트웨이를 실행하기 위해서는 ./gradlew를 입력한다.
게이트웨이에서 프론트엔드 기능도 수행하기 때문에 UI 화면도 제공된다.
http://localhost:8080으로 접속해 정상적으로 작동하는지 확인해본다.
2. 마이크로서비스 생성
각 서비스도 게이트웨이와 마찬가지로 명령어로 간단히 만들어 볼 수 있다.
다만 각 포트와 패키지명만 유의하여 다르게 만들도록 한다.
cd ..
mkdir product
cd product
jhipster
이렇게 생성한 서비스들은 ./gradlew 명령어로 실행할 수 있다.
다음으로 서비스들이 레지스트리에 잘 등록됐는지 http://localhost:8761에서 확인해본다.
3. 마이크로서비스 엔티티 생성
엔티티만 정의하면 JHipster가 자동으로 나머지 요소들(서비스, 리포지토리, REST 컨트롤러)을 생성해준다.
엔티티를 생성하기 위해서는 터미널 명령어를 이용하거나 온라인 모델링 도구인 JHipster Online을 이용하면 된다.
jhipster entity product
다음으로 엔티티 속성 설정을 위한 설정 내용이 나오는데 원하는대로 선택하면 된다.
간단하게 만들 때 용이한 기능이다.
이렇게 만든 엔티티는 게이트웨이에 등록해야 한다.
그러면 게이트웨이가 각 백엔드 서비스의 API를 등록하고 이미 준비된 프론트엔드 서비스와 연결한다.
cd ../gateway
jhipster entity product
여기까지 간단하게 JHipster로 MSA를 구성하는 방법을 살펴봤다.
틀에 박힌 구성에 많은 힘을 쏟지 않고 애플리케이션 작성을 더 고민할 수 있게 해주는 도구이다. 굿!
JHipster를 이용해 Kotlin 애플리케이션을 작성하고 싶다면 KHipster를 사용하면 된다.
KHipster
Set up a modern Full Stack web app by running a single command.
khipster.dev