참고자료 ) 클라우드 서비스 개발자를 위한 AWS로 구현하는 CI/CD 배포 입문
배포할 프로젝트 체크
프로젝트 실행

테스트 코드 실행
원래는 테스트 코드를 실행해본 뒤 test fail이 없는 걸 확인해야하지만 지금 ec2 서버에서 테스트 코드를 실행하면 서버가 뻗어버리는 현상이 생겨 테스트 파일은 우선적으로 없앤 상태로 실습한다. 실제 배포 시에는 테스트 코드는 반드시 필요하다.
프로젝트 배포
배포의 흐름
- local에서 github로 프로젝트 업로드
- EC2에서 github 프로젝트 다운로드
- 프로젝트 테스트
- 프로젝트 빌드
- nohup으로 백그라운드 실행
- 오류 로그 남기기
- 서버가 종료되면 cron으로 자동 재시작
EC2 서버
서버 생성
ec2 서버 또한 하나의 객체로써 인스턴스라고 부른다. 인스턴스 생성 후 실행 중 상태인지 상태 검사를 다 통과했는지 등을 확인한다. 이때 인스턴스의 퍼블릭 IPv4 주소는 유동적인 문제가 있다.

고정 IP
통신사에서는 인터넷이 필요한 집들의 수만큼 IP를 준비하는 것이 아니라 5개의 집이면 3-4개 정도만 준비하고 유동적으로 분배한다. 이는 가정집의 경우 보통 모든 집들이 지속적으로, 그리고 동시에 인터넷을 사용하는 것이 아니기 때문이다. 따라서 가정 집에 부여되는 IP는 계속 변하게 된다. 이를 유동 IP라고 하며 서비스를 하기 위해서는 고정 IP를 사용해야 사용자들이 접속할 수 있다.

유동적인 IP를 해결하기 위해 aws에서 고정 IP 주소인 탄력적 IP 주소를 할당한다. 그리고 탄력적 IP 주소를 내가 원하는 인스턴스에 연결한다. 이때 탄력적 ip 주소는 인스턴스에 연결되어있지 않으면 요금이 청구되므로 사용하지 않을 경우 삭제하는 것이 좋다.

배포
git으로 배포할 프로젝트 내려받기
- 먼저 git이 설치되어있는지 확인하기
- 배포할 프로젝트가 업로드 되어있는 github 주소로 git clone
- aws-v1 폴더 생성됨
- aws-v1 폴더 내부에 프로젝트를 빌드해주는 실행파일인 gradlew 존재

gradlew 실행 권한 부여
테스트 및 빌드를 통해 프로젝트를 실행파일인 jar 파일로 변경할 것이다. gradlew을 통해서 프로젝트를 jar 파일로 변경 가능하다. gradlew은 프로젝트를 빌드 해주는 실행파일로 내장 gradle을 이용해 Gradle(빌드 자동화 시스템) 명령어를 실행하기 위한 환경설정부터 실행까지 모두 수행한다.
그러나 파일을 상세보기 하여 권한을 체크하니 gradlew 파일에는 실행권한이 없다. 이를 현재 사용자인 ubuntu가 실행가능하도록 권한을 부여해야 한다.

JDK 설치
- sudo apt update (apt 목록 갱신)
- sudo apt-cache search jdk | grep openjdk-21 (목록에서 jdk 찾기)

- sudo apt install openjdk-21-jdk
- java —version (설치 확인)

jar 실행파일로 변경
프로젝트를 jar 실행파일로 변경할 때 gradlew build (gradlew 실행파일을 사용해서 build 작업을 실행)하게 되는데 이때 gradlew 파일의 위치를 정확하게 현재 폴더 안에 있는 gradlew 파일이라고 명시해주지 않으면 전역적인 환경변수로 인식하여 문제가 발생할 수 있다.
./gradlew clean build

빌드 후 aws-v1 폴더를 보면 build 폴더가 생긴 것을 확인할 수 있다. 그리고 build 폴더 안의 libs 폴더 안을 보면 jar 실행파일이 생성되어있다.

Share article