2025-04-03 11:26:42 +09:00
2025-04-03 10:57:02 +09:00
2025-04-03 10:53:34 +09:00
2025-04-03 11:26:42 +09:00

IIPBS

Spring Gradle React NextJS NodeJS Docker Kubernetes

'클라우드 네이티브 기반 행정·공공 서비스 확산 지원(2021)' 사업의 일환으로 제작된 MSA(Microservices Architecture) 템플릿의 교육 소스코드이다.

디렉토리 구조

├─apigateway
├─attach-service
├─board-service
├─config-service
├─cms-service
├─discovery
├─module-common
├─user-service
├─config
├─docker-compose
│  ├─app
│  │  ├─mesh
│  │  └─service
│  ├─elk
│  │  ├─kibana
│  │  │  └─config
│  │  └─logstash
│  │      ├─config
│  │      └─pipeline
│  └─opensearch
│      └─logstash
│          ├─config
│          └─pipeline
└─k8s
    ├─applications
    │  └─backend
    │     ├─apigateway
    │     │  └─ingress
    │     ├─board-service
    │     ├─config-service
    │     ├─discovery
    │     │  └─ingress
    │     ├─cms-service
    │     ├─attach-service        
    │     └─user-service
    └─environments
        ├─configmaps
        ├─jenkins
        ├─logging
        │  └─elk
        │      ├─elasticsearch
        │      ├─kibana
        │      │  └─ingress
        │      └─logstash
        ├─nfs
        ├─rabbitmq
        │  └─ingress
        ├─storage
        ├─vagrant
        └─zipkin
            └─ingress

디렉토리 설명

  • `/: Spring Boot를 기반으로 백앤드에 올려지는 서비스들
  • /apigateway: Microservice에 대한 API 관리 및 모니터링 서비스
  • /board-service: 게시판 서비스 (게시판, 게시물, 첨부파일 관리)
  • /config-service: 별도의 통합된 설정 관리 서비스 제공을 통해 환경 독립적 서비스 제공
  • /discovery: 마이크로서비스들을 등록하여 관리하고 요청 시 해당 서비스를 찾아 호출
  • /user-service: 사용자 서비스 ( 인가, 로그인, 회원가입, 비밀번호 찾기, 관리자)
  • /cms-service: CMS 공통 서비스 (메뉴, 코드, 컨텐츠, 권한, 배너, 서비스, 사이트 관리)
  • /attach-service: TUS 첨부파일 공통 서비스 (첨부파일 관리)
  • /config: backend 의 config 서버에서 사용하는 설정 yaml 파일 모음 폴더
  • /docker-compose: Docker에 여러 컨테이너의 실행을 관리하는 yaml 구성 파일들
  • /k8s: Kubernetes 환경 배포를 위한 Resource 템플릿 yaml 파일
  • /k8s/applications: Backend와 Frontend 애플리케이션의 k8s Resource 템플릿 yaml 파일
  • /k8s/environments/configmaps: Pods에서 사용하는 환경변수로서 Key-Value 쌍의 형태로 저장된 객체 정의
  • /k8s/environments/jenkins: Jenkins 관련 객체 정의
  • /k8s/environments/logging: Centralized Logging을 위한 ELK 관련 객체 정의
  • /k8s/environments/nfs: NFS 노드 볼륨 구성
  • /k8s/environments/rabbitmq: Message Broker 관련 객체 정의
  • /k8s/environments/storage: PersistentVolumeClaim 정의
  • /k8s/environments/vagrant: 가상화 소프트웨어 개발환경의 생성을 쉽게 구성하도록 하는 Vagrant 관련 정의
  • /k8s/environments/zipkin: 분산 트랜잭션 추적을 위한 Zipkin 관련 정의

백앤드 구동 방법

  • 개발환경 Eclipse IDE 를 실행한다.
  • Eclipse IDE 메뉴에서 File>Import… 를 클릭한다.
  • Import 창이 열리면 Gradle>Existing Gradle Project 를 선택하고 Next 버튼을 클릭한다.
  • Import Gradle Project 창이 열리면 Next 버튼을 클릭한다.
  • Project root directory 에서 ${home}/config를 선택하고 Finish 버튼을 클릭한다.
  • 위의 과정을 반복하여 아래의 프로젝트를 import 한다. (소규모는 1-6, 대규모는 1-9)
  1. config-service
  2. discovery
  3. apigateway
  4. attach-service
  5. cms-service
  6. user-service
  7. board-service
  • 모든 프로젝트를 import 하고 Project Explorer 를 확인하면 board-service, portal-service, user-service 프로젝트에 오류 표시가 출력된다. querydsl 로 generate 되는 클래스들을 build path 에 추가해야 한다.
  • Window>Show View>Other 을 클릭해서 열린 창에서 Gradle>Gradle Tasks 를 선택하고 Open 버튼을 클릭하면 Gradle Tasks 탭이 열린다.
  • Gradle Tasks 오른쪽 윗부분의 View Menu 버튼을 클릭해서 Show All Tasks 를 체크한다.
  • Gradle Tasks 에서 portal-service>other>compileQuerydsl 을 더블클릭 또는 우클릭 후 Run Gradle Tasks 를 클릭하면 build 가 시작된다.
  • Project Explorer 에서 board-service, portal-service, user-service 를 선택하고 F5 또는 우클릭 후 Refresh 를 클릭해서 프로젝트를 새로고침한다.
  • Project Explorer 에서 board-service, portal-service, user-service 를 우클릭하고 Properties 를 클릭한다.
  • Properties 창이 열리면 왼쪽 메뉴에서 Java Build Path를 선택하고 오른쪽 Source 탭에서 Add Folder… 버튼을 클릭한다.
  • Source Folder Selection 창이 열리면 build>generated>querydsl 을 체크하고 OK 버튼을 클릭한다.
  • Properties 창에서 Apply and Close 버튼을 클릭하면 창이 닫히면서 프로젝트를 다시 빌드하고 오류 표시는 사라진다.

(ELK 설정, Config 설정, OAuth 2.0 설정, API 호출 및 JUnit 테스트 관련해서는 02.MSA템플릿 백엔드구성 및 실습.pdf 파일을 참조한다.)

참조 화면

Microservices Architecture Authentication/Authorization-JWT Frontend Login Admin

교육 교재

S
Description
백엔드 저장소
Readme
127 KiB
Languages
Java 99.2%
Dockerfile 0.8%