요즘 클라우드 배포를 배우고 있어서 네이버 클라우드 플랫폼으로 기본 실습을 해봤다. 이걸 왜 하냐면, 결국 우리가 만든 웹 프로젝트를 실제로 외부에서 접근 가능하게 배포하려면 이 클라우드 서버라는 걸 알아야 하니까. 그 흐름을 처음부터 끝까지 한번 따라가보고 싶었다.
1. VPC와 Subnet 만들기
처음엔 VPC라는 걸 만들었는데, 쉽게 말하면 클라우드 위에 나만의 네트워크를 하나 만드는 거다. 집을 하나 통째로 빌리는 느낌.
근데 네트워크만 있다고 끝이 아니라 그 안에 방을 나누듯 subnet을 만들어야 한다. 여기에 나중에 DB, 웹서버 등을 따로 나눠서 넣을 수 있으니까.
여기서 조금 헷갈렸던 건, 몇 개의 subnet을 만들지, IP 범위는 어떻게 지정할지였다. 나중엔 그냥 기본값대로 진행했다.
2. 서버 생성
vpc랑 subnet 만들고 나서 본격적으로 서버를 생성. 리눅스 기반 서버로 만들었고, 인증키 생성도 이때 했다.
서버를 만드는 데 꽤 시간이 걸렸다. 처음에는 이게 왜 이렇게 오래 걸리나 싶었는데, 설정할 게 많아서 그랬던 듯. 운영 중으로 바뀌면 성공.
3. ACG 설정
이제 서버는 만들어졌는데, 그냥은 접근이 안 된다. ACG(Access Control Group)를 통해 인바운드/아웃바운드 규칙을 설정해야 한다. 말 그대로 어떤 IP에서 어떤 포트로 들어오는 걸 허용할지 정하는 거다.
4. MobaXterm으로 서버 접속
인증키랑 공인 IP 정보를 입력해서 MobaXterm으로 원격 접속 성공. 이 과정도 처음엔 패스워드 오류가 나서 좀 당황했는데, 알고 보니 root 계정으로 접속해야 했다.
5. JDK 설치 및 환경변수 설정
다음은 자바 설치. OpenJDK 21을 설치하고, 환경변수를 직접 vim으로 열어서 수정했다. 여기서 :wq
저장하고 나오는 것도 다시 익혔다. 변경사항 반영하려면 source /etc/profile
꼭 해줘야 한다.
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/ext:$JAVA_HOME/lib/tools.jar
6. Git에서 프로젝트 가져오기
홈 디렉토리 안에 .git 있는 걸 확인하고 git pull
해서 코드 가져왔다. 이후 mvn clean package
로 배포 파일(.jar) 생성. 테스트 에러가 나면 -DskipTests
옵션 붙여서 실행해야 한다.
7. 서버에서 스프링 프로젝트 실행
jar 파일이 만들어지면 java -jar 파일명
명령어로 실행. 실행되면 프로젝트가 포트에 뜨게 된다. 근데 여기서 끝이 아니다.
8. ACG 인바운드 규칙 추가
실제로 외부에서 접속하려면 해당 포트를 ACG에서 열어줘야 한다.
이제 http://공인IP:8086/
이런 식으로 들어가면 내 프로젝트가 띄워진다. 이 순간이 꽤 뿌듯했다.
9. 파일 업로드 경로 설정
서버에 파일 업로드하려면 application.properties
와 WebConfig의 경로도 서버 환경에 맞게 바꿔줘야 했다.
10. 프로젝트 수정 및 배포 자동화
수정사항이 있으면 다시 git push → 서버에서 git pull → mvn clean package → java -jar 순으로 반복. Git을 통한 배포 흐름이 꽤 익숙해졌다.
11. 종료 및 자원 정리
마지막으로 서버를 삭제하고 IP 반납하고, 서브넷, VPC까지 다 정리했다. 근데 VPC는 다른 자원이 남아 있으면 삭제가 안 된다. 의존관계 잘 확인해가면서 정리해야 한다.
마무리: 해보고 나니
한번 처음부터 끝까지 직접 클라우드에 배포해보니까 개념이 좀 잡히긴 했다. 생각보다 설정이 많고, 그 설정들이 다 연결되어 있어서 실수하면 원인 찾는 데 시간이 걸렸다. 다음엔 처음부터 ACG, 경로 설정, 자원 이름 정리까지 신경써서 더 깔끔하게 해봐야겠다.
댓글