Skip to content

Commit 1536502

Browse files
authored
Update 03-java.md
1 parent 4132caf commit 1536502

1 file changed

Lines changed: 126 additions & 1 deletion

File tree

docs/03-java.md

Lines changed: 126 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,134 @@ Python 개발자가 백엔드 API를 개발하고 있었습니다만, 개인적
1111
[README](../README.md) 문서를 참조하여 개발 환경을 준비합니다.
1212

1313
## 개발 과정 프롬프트
14+
Python 앱으로부터 Spring Boot 앱으로의 전체적인 마이그레이션 과정은 다음과 같습니다.
15+
* [프론트엔드 앱 및 백엔드 앱 확인](#프론트엔드-앱-및-백엔드-앱-확인)
16+
* [Spring Boot 앱으로 마이그레이션](#spring-boot-앱으로-마이그레이션)
17+
* [백엔드 앱 전환 및 확인](#백엔드-앱-전환-및-확인)
1418

15-
TBD
19+
### 프론트엔드 앱 및 백엔드 앱 확인
1620

21+
#### 프론트엔드 앱 및 백엔드 앱 실행 확인
22+
이전 세션들에서 수행했던 Python 백엔드 앱 및 Node JS 프론트엔드 앱이 실행되어 있어야 합니다. 특히, Python 백엔드 앱을 기준으로 마이그레이션이 이루어지기 때문에 [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)에 접속하여 해당 앱이 구동되어 있는지를 확인합니다.
23+
만일, 앱이 실행되어 있지 않다면, [Python 앱 가이드](../01-python.md)에 따라 앱을 구동해 주시기 바랍니다.
24+
25+
#### Rest API 확인
26+
다음 URL을 호출하여 백엔드 앱에서 제공하고 있는 Rest API들을 확인해 봅니다. 아래와 같이 12개의 REST API가 있는 것을 확인할 수 있습니다.
27+
```
28+
http://127.0.0.1:8000/docs
29+
```
30+
31+
#### Python 앱 로직 확인
32+
Python 앱에 어떤 기능들이 포함되어 있는지 확인하기 위해 GitHub Copilot에 다음과 같이 질의합니다. 해당 기능을 확인하여 대략의 Python 로직을 이해하고 파일을 생성합니다.
33+
```
34+
이 파일의 소스 내용을 설명해 주고 다이어그램을 생성해줘
35+
```
36+
다음 위치에 다이어그램 파일이 생성된 것을 확인합니다.
37+
```
38+
.../python/diagram.md
39+
```
40+
41+
### Spring Boot 앱으로 마이그레이션
42+
이제 Spring Boot 앱으로 마이그레이션 할 준비가 되었습니다. 이제부터 GitHub Copilot을 이용하여 마이그레이션을 진행하겠습니다. 이후 질의과정은 예시일 뿐이므로, 본인의 상황에 맞게 변경하여 질의하며 마이그레이션을 진행해도 됩니다.
43+
44+
#### Spring Boot 프로젝트 생성
45+
Spring Boot Initializr를 이용하면 Spring Boot 앱을 쉽게 생성할 수 있습니다. Spring Initializr 익스텐션을 사용하여 VS Code에서 초기 프로젝트를 생성해 보도록 합니다. 설정 값은 다음과 같습니다.
46+
* 프로젝트 선택: Create a Gradle Project
47+
* Spring Boot Version: 3.4.4
48+
* Project language: Java
49+
* Group Id: com.example
50+
* Artifact Id: demo
51+
* Package Name: com.example.demo
52+
* Packaging type: Jar
53+
* Java version: 21
54+
* Dependencies:
55+
* Spring Web
56+
* Spring Boot Actuator
57+
* Lombok
58+
59+
초기 Spring Boot 앱 프로젝트가 생성되었으면 우측 하단에의 "Open new project"를 클릭하여 방금 생성한 프로젝트를 오픈합니다.
60+
61+
#### 빌드 및 앱 구동
62+
최초 생성된 앱이 에러가 없는지 빌드 후 앱 구동을 통해 확인해 봅니다.
63+
```
64+
./gradlew clean build bootRun
65+
```
66+
67+
터미널에 다음과 같은 로그가 출력되면 앱이 정상적으로 구동된 것입니다.
68+
69+
![그림](http://127.0.0.1:8000/docs)
70+
71+
72+
#### Rest API 추가 및 확인
73+
디펜던시가 에러 없이 잘 추가되었는지 확인하기 위해 RestController를 추가해 봅니다. 기본 호출할 Rest API로 /hello 를 생성해 보겠습니다. GitHub Copilot을 Agent 모드로 변경하고, 모델을 "Claude 3.7 Sonnet"으로 변경한 후 다음과 같이 프롬프트를 입력합니다.
74+
```
75+
/hello Rest API를 추가해주고, Swagger 설정도 추가해줘
76+
```
77+
78+
다시 한 번 앱을 빌드하고 실행시켜 봅니다.
79+
80+
코드에 오류가 없으면 다음 URL을 이용하여 앱을 호출해 봅니다.
81+
```
82+
http://localhost:8080/hello
83+
```
84+
이번에는 Swagger UI를 접속해 봅니다.
85+
```
86+
http://localhost:8080/swagger-ui.html
87+
```
88+
앱이 정상적으로 호출되었으면 마이그레이션 준비가 완료된 것입니다.
89+
90+
#### Python에 작성된 REST API 추가
91+
Python 앱은 12개의 REST API로 이루어진 백엔드 서비스로 구성되어 있습니다. 이제 좀 전에 생성한 다이어그램 파일을 활용하여 이 REST API를 자바로 변경해 보겠습니다.
92+
93+
GitHub Copilot에 다음과 같이 프롬프트를 입력합니다.
94+
```
95+
이 다이어그램 파일을 참고해서 동일한 API 주소를 갖는 함수들을 현재 프로젝트에 추가해줘.
96+
```
97+
98+
앱을 빌드하고, Swagger UI에 접속해서 12개의 REST API가 추가되었는지를 확인합니다.
99+
만일 빌드 시 에러가 발생하거나, 원하는 API 목록이 출력되지 않는다면 다음 프롬프트를 사용해서 정상적인 결과값이 나올때까지 수정을 반복해서 이슈를 해결합니다.
100+
```
101+
빌드 시 오류가 발생해. 오류를 해결해줘
102+
```
103+
104+
#### Database URL 변경
105+
이제 기존 Python에서 사용하던 데이타베이스를 참조하도록 환경을 변경해 봅니다. 해당 파일은 다음 위치에 존재합니다.
106+
```
107+
/python/sns.db
108+
```
109+
110+
Spring Boot 프로젝트의 다음 파일을 오픈해서 파일 주소를 변경합니다.
111+
```
112+
파일 명: <project_root>/src/main/resources/application.properties
113+
```
114+
변경할 내용은 다음과 같습니다.
115+
```
116+
spring.datasource.url=jdbc:sqlite:../../python/sns.db
117+
```
118+
다시 앱을 빌드해서 데이타베이스가 제대로 참조되었는지 확인합니다.
119+
120+
### 백엔드 앱 전환 및 확인
121+
122+
#### 확인
123+
이제 모든 코드 생성이 완료되었습니다. 마막으로 Node JS로 작성된 프론트엔드 앱에서 기존 URL과 동일하게 호출할 수 있도록 Spring Boot 앱의 포트를 변경합니다.
124+
125+
변경 전 [여기](01-python.md#서비스-종료)를 참고하여 Python 앱을 구동 중지합니다.
126+
127+
128+
포트 변경을 위한 설정을 변경하기 위해 GitHub Copilot에 다음과 같이 프롬프트를 입력합니다.
129+
```
130+
앱 서비스 포트를 8000으로 변경해줘
131+
```
132+
133+
이제 앱을 다시 빌드하고 구동시켜서 다음 URL로 접속이 되는지를 확인합니다.
134+
```
135+
https://localhost:8080/swagger-ui.html
136+
```
137+
138+
앱이 정상적으로 구동되었으면 Node JS 프론트엔드 앱을 호출하여 앱에 이상이 없는지 확인합니다.
139+
```
140+
http://localhost:3000
141+
```
17142

18143
---
19144

0 commit comments

Comments
 (0)