diff --git a/README.md b/README.md index 66a939f..60f5ebe 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,153 @@ -# egovframe-msa-edu -[Egovframe MSA Template] 클라우드 네이티브 기반의 행정,공공기관 서비스 확산 지원 사업, 온라인 교육 소스 +# MSA 템플릿 (교육용) + +![Spring](https://img.shields.io/badge/Spring_Boot-F2F4F9?style=for-the-badge&logo=spring-boot) +![Gradle](https://img.shields.io/badge/Gradle-02303A.svg?style=for-the-badge&logo=Gradle&logoColor=white) +![React](https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB) +![Next JS](https://img.shields.io/badge/Next-black?style=for-the-badge&logo=next.js&logoColor=white) +![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge&logo=node.js&logoColor=white) +![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white) +![Kubernetes](https://img.shields.io/badge/kubernetes-%23326ce5.svg?style=for-the-badge&logo=kubernetes&logoColor=white) + +'클라우드 네이티브 기반 행정·공공 서비스 확산 지원(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) + +1. config +2. discovery +3. apigateway +4. user-service +5. portal-service +6. board-service +7. reserve-check-service +8. reserve-item-service +9. reserve-request-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 파일을 참조한다.) + +## 프론트앤드 구동 방법 + +03.MSA템플릿\_프론트엔드구성및실습.pdf 파일을 참조한다.