실습 내용

개발 환경 구축하기

WinSCP에서 Putty실행하여 개발 환경 구축 진행

 

java 설치

sudo su
apt install default-jdk

 

깃 클론

cd /var/www
git clone [깃허브 주소]

 

default 파일 수정

vim /etc/nginx/sites-available/default

#이 부분을 변경
root /var/www/udemy_server_practive_springboot;

#재시작
service nginx restart

default 파일에서 root를 깃 클론한 폴더를 가리키도록 변경

 

application.yml 수정

vim /var/www/udemy_server_practice_springboot/src/main/resources/application.yml

사용할 DB 정보에 따라 url, username, password를 수정

 

build

cd /var/www/udemy_server_practice_springboot

./gradlew clean build

 

java 실행

java -jar build/libs/demo-0.0.1-SNAPSHOT.jar

 

이때 빌드가 안되고 오류가 나기에 찾아보니 메모리가 부족해서 생기는 일이라고 함

메모리 부족 현상은 1) 실제 메모리 2) swap 메모리를 모두 사용한 상태에서 발생된다고 하는데, 일시적으로 메모리가 부족하면 swap 파일의 크기를 늘려서 해결이 가능

#swap 비활성
sudo swapoff -v /swapfile

#swap을 8GB로 저장
sudo fallocate -l 8G /swapfile

#권한 설정
sudo chmod 600 /swapfile

#swap file 생성
sudo mkswap /swapfile

#swap file 활성화
sudo swapong /swapfile

#swap file 마운트하기 위해 이동
sudo vi /etc/fstab

#파일 끝에 해당 코드 새로 추가
/swapfile swap swap defaults 0 0

#사용현황 확인
free -m

 

 

POSTMAN에서 테스트하기

proxy 설정

vim /etc/nginx/sites-available/default

#이 부분을 주석 처리 후 새로 코드 추가
location {
		~~~
        #try_files ....
        proxy_pass http://127.0.0.1:9000; #9000번 포트를 명시하지 않아도 사용 가능
}

#재시작
service nginx restart

proxy_pass : 요청이 오면 http://127.0.0.1:9000로 전달

 

무중단 서비스 배포

nohub java -jar build/libs/demo-0.0.1-SANPSHOT.jar

무중단 배포란?

서비스를 정지시키지 않고 배포를 계속하는 것

 

 

프레임워크 사용하기 실습

model

GetUserRes

userIdx : 유저 idx

name : 유저 이름

nickname : 유저 닉네임

email : 유저 이메일

 

 

UserController

getUserByIdx

GET 메소드 사용

1. userIdx를 받아와 userProvider의 getUsersByIdx를 userIdx와 함께 호출

2. getUserByIdx의 반환값을 getUsersRes에 저장하여 반환

 

UserProvider

getUsersByIdx

1. 매개변수로 받아온 userIdx를 userDao의 getUsersByIdx와 함께 호출

2. getUsersByIdx에서 받아온 값을 getUsersRes에 넣어 반환

 

UserDao

getUsersByIdx

매개변수 userIdx에 해당하는 유저 정보 조회 쿼리문 

 

챌린지 과제

Spring-Boot 템플릿으로 유저 삭제 api 구현하기

UserController

 

UserProvider

 

UserDao

 

Postman

 

=> 유저의 정보를 삭제하는 것 대신 유저 DB의 active값을 'INACTIVE'로 변경하여 유저의 삭제를 구현함

따라서, DELETE 메소드가 아닌 PATCH 메소드를 사용

 

후기

우선 개발 환경 구축하는 부분은 오류가 있어서 시간이 정말 많이 걸렸다. 

오타도 많았고, 특히 java를 실행하는 부분에 있어서 2시간동안 실행 준비만 되는 오류가 있었다.

해결하는 데 시간이 많이 걸렸지만, 결국 문제점과 해결책을 발견하였고 이후 스터디원들께 해결 방안을 공유할 수 있어서 뿌듯하였다.

이론 수업을 끝내고 본격적인 api 작성 실습에 들어갔는데, 그 당시에는 해당 수업에서 배운 지식만을 가지고 챌린지 과제인 유저 삭제 api를 생성하였기에 지금 보면 불필요한 부분들이 많이 보인다.

postman 사용을 통해 개발한 api 코드가 올바르게 동작하는 지를 확인할 수 있었고, 올바르게 동작한 결과값을 api 명세서에 작성해보며 어떻게 클라이언트 개발자와 백엔드 개발자가 정보를 주고 받는지 알 수 있던 시간이었다. 

복사했습니다!