동아리에서 제작한 학교 축제 웹서비스 실사용을 위해 배포를 하기로 하였다.
처음엔 AWS를 사용하려 했으나 워낙 과금된 사례도 많고 커스텀이 가능한 AWS를 잘 다루지도 못하기 때문에 클라우드타입을 이용하기로 했다.
우선은 무료 계정인 프리티어 요금제를 사용하여 배포를 하였다. 단, 프리티어는 임시 리소스에 메모리를 할당하기 때문에 매일 한 번 중단되어 무중단 배포가 불가능하다고 한다. 추후 1GB 메모리를 추가 결제하여 완전한 무중단 배포로 전환할 예정이다.
클라우드타입: https://cloudtype.io/
개발 환경: React + SpringBoot
파일서버: AWS S3
DB: AWS RDS - MySQL
자동화: GitHub Action
배포: cloudtype
프로젝트 -> +
버튼을 눌러 프로젝트를 생성해준다. 리전은 Seoul
*프로젝트 명은 소문자만 가능
application.properties 에 설정해두었던 변수와 시크릿 키 값을 설정해 주기 위해 우측의 톱니바퀴 버튼을 눌러 이동한다.
필요한 변수들을 입력하고 저장해준다.
application.properties 변수 등록 방법
필자는 깃허브 레포지토리에 application.properties 파일을 올리지 않고 로컬 저장소에만 저장해둔 상태로 개발을 했었다. 하지만 클라우드타입으로 배포하기 위해선 깃허브 레포지토리에 application.properties 파일을 올려두어야 한다.
시크릿 키와 같은 정보들을 레포지토리에 그대로 올릴 수 없기 때문에 클라우드타입 프로젝트에서 변수로 지정하여 불러오면 된다. 이 설정을 하기 위해선 아래와 같이 코드를 변경해야 한다. (이 부분에서 살짝 헤맸어서 헷갈리지 않도록 정리해 보았다.)노출되면 안되는 정보에
${ }
를 사용하여 클라우드 타입에서 불러와 사용할 수 있도록 변수 이름을 지정한다.
중괄호 안에 들어가는 변수 명은 클라우드타입 설정의 변수 Name 항목이다.
아래와 같이 코드를 수정한 후 깃허브에 설정 파일을 올리면 된다.application.properties
프로젝트 메인 페이지로 돌아와서 +
버튼을 눌러 깃허브 저장소를 연결한다.
GitHub Action을 통해 ci/cd 적용을 할 것이므로 내 GitHub 저장소 배포하기
를 선택했다.
깃허브 저장소 연결 후 설정을 눌러 어떤 브랜치를 배포할 것인지도 지정해야한다.
언어/프레임워크를 선택하고 애플리케이션의 자바 버전도 맞춰준다. Environment variables에는 아까 입력한 변수들을 연결해주면 된다. (키 모양 클릭하면 등록해둔 값 사용 가능)
하단의 배포하기 버튼을 누르면 빌드 후 배포가 시작되는 것을 확인할 수 있다.
실행 중 아래의 8080 포트 접속 오류가 나더라도 무시하고 톰캣 서버가 켜질 때까지 기다리면 된다. (톰캣 실행 전이라 해당 오류가 뜬 것)
GitHub Actions 의 workflow를 사용해서 소스 코드의 변경 사항을 저장소에 반영 시 자동으로 클라우드타입에 배포한 서비스가 업데이트 되도록 파이프라인을 구성할 수 있다.
깃허브 계정 Settings
-> Developer settings
- Personal access tokens (classic)
-> Generate new token
-> Generate new token(classic)
(repo, admin:public_key) 두 개의 권한을 체크해주고 -> Generate Token
으로 토큰 생성
생성된 토큰을 확인할 수 있다. 복사해서 다른 곳에 보관하면 된다.
API Key는 외부에서 클라우드타입의 API를 활용하고자 할 때 사용되는 인증 정보이다. Github Actions 등 외부의 CI/CD 도구를 활용하여 배포작업을 진행할 시 API Key의 발급이 필요하다.
클라우드타입의 API Key 를 생성하고 깃허브 저장소의 설정에서 시크릿으로 추가하는 작업을 할 것이다.
우측 상단의 계정을 클릭하여 환경설정으로 이동한다.
좌측 메뉴에서 인증을 클릭하고 새로운 API 키 생성
을 눌러 생성해준다.
생성된 api 키도 복사해서 다른 곳에 보관한다.
앞서 생성한 GHP(GitHub Personal Token)을 GitHub Actions 을 적용하려는 저장소에 설정할 것이다.
연결된 깃허브 레포지토리 Settings
-> Secrets and variables
-> Actions
-> New repository secret
GHP_TOKEN 등록 후 add
CLOUDTYPE API KEY 등록 후 add
GitHub Actions로 배포 자동화를 설정하기 위해서는 Workflow 설정파일을 해당 저장소의 약속된 경로에 추가해주어야 한다. (파일명은 자유)
프로젝트 CLI 탭 클릭 후 GitHub Actions yml 파일을 복사한다.
연결된 레포지토리 -> Add file
-> Create new file
경로에 .github/workflows/deploy.yml
입력 후 복사한 코드를 붙여넣기 하고 파일을 추가한다.
이렇게 설정해주면 깃허브 코드 업데이트 시 자동으로 다시 빌드, 배포가 된다.