해당 내용은 Class101의 현직 대기업 개발자 푸와 함께하는 진짜 백엔드 시스템 실무! 강의를 기반으로 작성했습니다.
DB를 이용한 한줄 게시판 애플리케이션 포크 후 코드 이해
Postman을 이용해 API 테스트
GCP 인스턴스에 애플리케이션 배포
docker run --name pgsql -d -p 5432:5432 -e POSTGRES_USER=postgresql -e POSTGRES_PASSWORD=postgrespassword postgres
run 명령어로 docker 컨테이너를 띄울것이다.
간단히 설명하면 5432 포트로 백그라운드에서 도커 컨테이너를 실행시키는 것이다.
로컬에 postgres 도커 이미지가 없기 때문에 자동으로 dockerhub에 접근해서 이미지를 가져와서 실행시킨다.
postgreSql 컨테이너가 올라간걸 볼 수 있다.
이후 애플리케이션을 실행해보면 정상적으로 실행된다.
Post 엔티티에는 id 필드와, content 필드밖에 없다. 따라서 json으로 content 내용만 body에 담아 보내주면 된다.
정상적으로 응답이 오는 걸 볼 수 있다.
sudo yum install -y docker // 도커 설치
sudo systemctl start docker // 도커 실행
sudo chmod 666 /var/run/docker.sock // 도커 실행 권한 주기
docker run --name pgsql -d -p 5432:5432 -e POSTGRES_USER=postgresql -e POSTGRES_PASSWORD=postgrespassword postgres // 도커 컨테이너 생성 및 실행
이전에 cpu-worker인스턴스들을 생성할 때 처럼 io-worker 인스턴스들을 새로 생성하고
젠킨스로 배포해도 되지만, 편의를 의해 cpu-worker 인스턴스를 재활용한다.
젠킨스에 접속하려는데 역시나 접속되지 않는다. 젠킨스 인스턴스를 다시 실행시켜주고, 다시 실행되면 외부ip주소가 변경되기 때문에 GitHub Webhook 설정에서 ip를 변경해줘야한다. (이전에 사용한 cpu 레포지토리)
아까 4-1에서 datasource의 url을 localhost에서 인스턴스의 ip로 변경했기 때문에
변경사항을 푸시해줘야 한다.
cpu 레포지토리에는 Webhook 이벤트를 걸어놨기 때문에 푸시하면 젠킨스가 자동으로 배포해주지만 io 레포지토리에는 이벤트를 걸어놓지 않았기 때문에 수동으로 배포해야 한다.
그전에 io 레포지토리의 브랜치는 main이므로 젠킨스 설정에서 변경해줘야한다.
이후 Build Now를 클릭해 수동으로 배포하자.
로그를 확인해보면 저 상태에서 더 이상 진행되지 않는다.
젠킨스 인스턴스의 메모리가 부족해서 발생하는 현상일 수도 있다고 한다.
젠킨스 인스턴스를 스케일 업 해보자
이번에 진행한 내용들은 아래와 같다.
다음에는 io bound 애플리케이션에 기능들을 추가해 볼 것이다.