Jhipster 프로젝트 생성하기

Divide & Conquer·2024년 10월 13일

Microservice들을 만들기 전 Gateway 프로젝트 먼저 생성합니다.

MSA에서 gateway는 microservice의 앞단에서 API 라우팅, 로드 밸런싱, 권한 정책 관리(Policy Management), 사용자 인증(Consumer Identity Provider) 등을 수행하는 수문장 역할을 담당합니다.

디렉토리 생성

우선 게이트웨이 애플리케이션을 만들 디렉토리를 생성합니다.

mkdir gateway

jhipster 실행

생성한 디렉토리로 이동해 jhipster를 실행해 합니다.

# 디렉토리 이동
cd gateway/
# jhipster 실행
jhipster

실행하면 여러가지 선택 옵션을 입력하는 prompt가 노출되는데 각각을 선택하고 나면 애플리케이션 생성을 시작합니다.

설치 옵션

설치가 완료되면 설치 성공 메세지가 콘솔에 출력됩니다.

개발환경 구성

Gateway를 실행하기 위해서는 필수 서비스 설치가 필요합니다.
Mariadb, keycloak, redis, kafka, zookeeper가 제가 선택한 jhipster gateway 애플리케이션 생성 옵션의 필수 서비스 입니다.
애플리케이션 실행에 앞서, 해당 필수 서비스를 먼저 설치합니다.

한번에 필수 서비스 모두 설치하기

프로젝트 생성 시 선택 한 옵션에 따른 Mariadb, keycloak, redis, kafka, zookeeper를 한번에 설치할 수 있는 docker-compose yaml 파일입니다.

docker compose -f src/main/docker/services.yml up -d
services.yml 내용
# This configuration is intended for development purpose, it's **your** responsibility to harden it for production
name: gateway
services:
  mariadb:
    extends:
      file: ./mysql.yml
      service: mysql
  elasticsearch:
    extends:
      file: ./elasticsearch.yml
      service: elasticsearch
  keycloak:
    extends:
      file: ./keycloak.yml
      service: keycloak
  redis:
    extends:
      file: ./redis.yml
      service: redis
  kafka:
    extends:
      file: ./kafka.yml
      service: kafka
  zookeeper:
    extends:
      file: ./kafka.yml
      service: zookeeper

개별 설치

Keycloak 설치

docker compose -f src/main/docker/keycloak.yml up -d

9080 포트로 keycloak 실행 여부 확인

Oauth2.0 설정 확인

src/main/resources/config/application.yml

 security:
    oauth2:
      client:
        provider:
          oidc:
            issuer-uri: http://localhost:9080/realms/jhipster
        registration:
          oidc:
            client-id: web_app
            client-secret: web_app
            scope: openid, profile, email, offline_access # last one for refresh tokens

테스트 완료 후 realm과 client-id, client-secret 변경 예정

ElasticSearch 설치

docker compose -f src/main/docker/elasticsearch.yml up -d

Redis 설치

docker compose -f src/main/docker/redis.yml up -d

mysql 설치

docker compose -f src/main/docker/mysql.yml up -d

Kafka 설치

docker compose -f src/main/docker/kafka.yml up -d

추가 서비스 설치

필수 서비스 외에 모니터링 및 Swagger-editor 서비스를 추가로 설치합니다.

Monitoring 도구 설치(Grafana, Prometheus, Zipkin)

docker compose -f src/main/docker/monitoring.yml up -d
docker compose -f src/main/docker/zipkin.yml up -d

Swagger-Editor 설치

Swagger-Editor는 Swagger api.yml 파일 편집을 위한 도구입니다.
https://www.jhipster.tech/documentation-archive/v8.7.1/doing-api-first-development/

docker compose -f src/main/docker/swagger-editor.yml up -d

설치가 완료 되고, 브라우저로 http://localhost:7742에 접속하여 Swaager-Editor를 사용할 수 있습니다.

애플리케이션 실행하기

VSCode에서 애플리케이션 폴더열기


README.md 파일을 보면 프로젝트 구조, 환경 구성 방법, 실행 방법 등을 확인 할 수 있습니다.
작성한 실행 방법도 README.md 파일을 보고, 작성한 내용입니다.
VSCode의 devContainer와 Gradle for java extention을 이용해 실행해 봤지만, 모두 build 및 실행할 때 오류가 발생해 콘솔 창에서 직접입력하여 실행하였습니다.
오류 원인은 추후에 좀 더 Tracing해보고, 원인과 해결방법을 작성해 보겠습니다.

openapi-generator 실행

./gradlew openApiGenerate

npm 종속성 설치

JHipster는 npm을 주 빌드 시스템으로 사용합니다.

./npmw install

애플리케이션 실행

./gradlew -x webapp


실행 도중에 에러가 발생 하는데 원인은 알지 모르겠지만, 도커 관련 에러인거 같습니다.

하지만, 서비스는 정상 실행이 됩니다.

콘솔에 찍은 url을 브라우저에서 호출하면 관리자 화면이 뜹니다.

계정 > 인증 메뉴를 클릭하면 아래 화면 처럼 keycloark(인증서버)의 로그인 페이지로 이동합니다.
로그인 페이지의 username, password에 "admin"을 입력하고, Sign in 버튼을 클릭합니다.

로그인 된 홈 화면을 노출됩니다.

관리자 메뉴의 gateway 메뉴로 들어가니, 설치한 consul 서비스가 노출되네요.

마무리

진행 결과

  1. 필수 서비스 설치 완료
  • Consul, mysql, keycloak, redis, kafka, zookeeper
  1. 추가 서비스 설치 완료
  • Swagger-editor, Grafana, Prometheus, Zipkin
  1. gateway 애플리케이션 설치 및 실행
  • 실행 시 도커 관련 에러 존재, 실행 성공, 관리자 화면 기능 확인

다음 진행 순서

  1. 도커 콘솔 오류 원인 확인
  2. VSCode devContainer 오류 원인 확인
  3. Gradle for java 실행 오류 확인
  4. Microservice 애플리케이션 추가 설치해 보기
  5. 신규 API 생성해 보기
  6. Gateway를 통해 신규 API 접근해 보기
profile
IT의 어려운 난제를 작은 단위로 분할하여 정복해 나간다.

0개의 댓글