안녕하세요.
섹션8까지 보다가.. 저와 좀 맞지 않는 부분이 있어서 저에 맞게 내용을 변경하였습니다.
Frontend : Vuejs
Backend : Nestjs
DB : PostgreSQL (Cloud SQL)
Deploy : Cloud Run
CI/CD : Cloud Build
개인적으로.. 참 AWS와 React를 별로 좋아하지 않습니다;;
GCP 서비스는 참 편리한 기능도 많고 사용하기도 매우 간편합니다.
물론 배우는 과정은 AWS나 GCP나 비슷할테지만 개인적으로 GCP를 매우 선호하는 편입니다.
GCP의 Cloud Run에 배포하고 Cloud Build를 이용하여 CI/CD를 구현하였습니다.
현재 업무에서는 app engine을 주로 쓰고있긴 하지만 간단하게 dockerfile을 작성하고 하기에는 cloud run이 좋았습니다.
cloud run은 사용한 만큼만 요금이 나가고 auto scaling을 지원하여 트래픽이 몰릴 경우 저절로 인스턴스를 늘립니다.
또한 sse 혹은 websocket을 쓸 경우 app engine은 flexible을 써야하는데 반해 cloud run은 세션어퍼니티만 활성화해주면 됩니다.
단점이로 치자면 도메인을 설정할 경우 load balancer로 매핑을 해줘야 합니다. app engine은 그냥 매핑됩니다.
https://scarlet-clematis-aed.notion.site/8136bdfd38aa4238a4ac86b92179557d?pvs=4
https://github.com/gornoba/build-run-cicd
깃헙과 대략적인 설정 과정을 정리해봤습니다.
순서는 이렇습니다.
1. 온갖 GCP 설정
2. PostgreSQL설정 -> DB 만들고 scheme 만들고 table 만들고
3. github에 push
4. Cloud Build에서 push 된 branch를 확인하고 승인
5. cloudbuild.yaml 파일에 기록된데로 진행
- frontend폴더에서 npm install
- frontend폴더에서 npm run build
- backend폴더에서 bash ./env.sh
- docker image 빌드
- container registory에 docker image를 push
- gcloud run deploy 명령어로 cloud run에 배포
그럼 아래와 같이 페이지가 배포 됩니다.