7.8 KiB
7.8 KiB
MSA 템플릿 (교육용)
'클라우드 네이티브 기반 행정·공공 서비스 확산 지원(2021)' 사업의 일환으로 제작된 MSA(Microservices Architecture) 템플릿의 교육 소스코드이다.
디렉토리 구조
├─backend
│ ├─apigateway
│ ├─board-service
│ ├─config
│ ├─discovery
│ ├─module-common
│ ├─portal-service
│ ├─reserve-check-service
│ ├─reserve-item-service
│ ├─reserve-request-service
│ └─user-service
├─config
├─docker-compose
│ ├─app
│ │ ├─mesh
│ │ └─service
│ ├─elk
│ │ ├─kibana
│ │ │ └─config
│ │ └─logstash
│ │ ├─config
│ │ └─pipeline
│ ├─mysql
│ │ └─init
│ └─opensearch
│ └─logstash
│ ├─config
│ └─pipeline
├─frontend
│ ├─admin
│ │ ├─public
│ │ │ ├─images
│ │ │ └─locales
│ │ ├─server
│ │ ├─src
│ │ │ ├─@types
│ │ │ ├─components
│ │ │ ├─constants
│ │ │ ├─hooks
│ │ │ ├─libs
│ │ │ ├─pages
│ │ │ ├─service
│ │ │ ├─stores
│ │ │ ├─styles
│ │ │ └─utils
│ │ └─test
│ ├─portal
│ │ ├─public
│ │ │ ├─locales
│ │ │ └─styles
│ │ ├─src
│ │ │ ├─@types
│ │ │ ├─components
│ │ │ ├─constants
│ │ │ ├─hooks
│ │ │ ├─libs
│ │ │ │ └─Storage
│ │ │ ├─pages
│ │ │ ├─service
│ │ │ ├─stores
│ │ │ ├─styles
│ │ │ └─utils
│ │ └─test
│ └─practice-image
└─k8s
├─applications
│ ├─backend
│ │ ├─apigateway
│ │ │ └─ingress
│ │ ├─board-service
│ │ ├─config
│ │ ├─discovery
│ │ │ └─ingress
│ │ ├─portal-service
│ │ ├─reserve-check-service
│ │ ├─reserve-item-service
│ │ ├─reserve-request-service
│ │ └─user-service
│ └─frontend
│ ├─admin
│ │ └─ingress
│ └─portal
│ └─ingress
└─environments
├─configmaps
├─databases
│ └─mysql
│ └─init
├─jenkins
├─logging
│ └─elk
│ ├─elasticsearch
│ ├─kibana
│ │ └─ingress
│ └─logstash
├─nfs
├─rabbitmq
│ └─ingress
├─storage
├─vagrant
└─zipkin
└─ingress
백앤드 구동 방법
- 개발환경 Eclipse IDE 를 실행한다.
- Eclipse IDE 메뉴에서 File>Import… 를 클릭한다.
- Import 창이 열리면 Gradle>Existing Gradle Project 를 선택하고 Next 버튼을 클릭한다.
- Import Gradle Project 창이 열리면 Next 버튼을 클릭한다.
- Project root directory 에서 ${home}/workspace.edu/egovframe-msa-edu/backend/config를 선택하고 Finish 버튼을 클릭한다.
- 위의 과정을 반복하여 아래의 프로젝트를 import 한다. (소규모는 1-6, 대규모는 1-9)
- config : 별도의 통합된 설정 관리 서비스 제공을 통해 환경 독립적 서비스 제공 (service mesh)
- discovery : 서비스에 대한 물리적 위치 정보 대신 논리적 서비스 위치 정보 제공 (service mesh)
- apigateway : Microservice에 대한 API 관리 및 모니터링 서비스 (service mesh)
- user-service : 사용자 서비스 (로그인, 회원가입, 비밀번호 찾기, 관리자)
- portal-service : 포털 공통 서비스 (메뉴, 코드, 컨텐츠, 권한, 인가, 배너, 첨부파일 관리)
- board-service : 게시판 서비스 (게시판, 게시물, 첨부파일 관리)
- reserve-check-service : 예약 확인 서비스 (non-blocking)
- reserve-item-service : 예약 물품 서비스 (non-blocking)
- reserve-request-service : 예약 신청 서비스 (non-blocking)
- 모든 프로젝트를 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 파일을 참조한다.)
프론트앤드 구동 방법
node : 14.8.0
npm : 6.14.7
Visual Studio Code : latest
- https://nodejs.org/en/download 에서 다운로드 후 설치하고 버전을 확인한다.
node -v
npm -v
- Visual Studio Code 에서 frontend/admin 폴더를 연다.
- Terminal 에서 다음을 실행한다.
npm install
npm run dev
- 로그인 화면에서 email 란에 '1@gmail.com', password 란에 'test1234!' 입력 후 로그인한다.
(기타 상세한 내용은 03.MSA템플릿_프론트엔드구성및실습.pdf 파일을 참조한다.)
참조 화면
01.MSA템플릿_개요및개발환경_실습.pdf
01.MSA템플릿_개요및개발환경_이론.pdf
02.MSA템플릿_백엔드구성및실습.pdf
03.MSA템플릿_프론트엔드구성및실습.pdf
04.MSA템플릿_이벤트스트림구성및 실습.pdf