무중단 배포 테스트를 하기 전, 한가지 추가 작업을 진행해보자. 잦은 배포를 하면서 매번 버전을 변경해주는 일은 귀찮기때문에, 자동으로 버전값이 변경될 수 있도록 설정해보자!
version = '1.0.1-SNAPSHOT-' + new Date().format("yyyyMMddHHmmss")
추가하고 이전에 만들어놓은 스크립트들도 함께 commit&push 해보자!!
trvis CI 에서 에러가 발생했고,
빌드는 성공했지만 배포에서 실패했다.
배포한 log를 확인하기위해서 nohup.out 파일과 codedeploy-agent-deployments.log를 확인해보았다.
nohup.out
codedeploy-agent-deployments.log
Health.sh 부분에서 오류를 뱉는다..
스크립트에 오류는 없었는지 책과 다른점은 제대로 수정했는지, 경로 변수값에 올바른 정보가 들어있는지 확인을 모두 했고 결국해결하지 못해서 그냥 현재까지 수정한것을 다시 commit&pull 하고 보니 Travis CI에서 오류는 사라지고 정상적으로 작동되길래...
nohup.out 파일과 codedeploy-agent-deployments.log를 확인해보니 역시나 성공으로 올바르게 작동되고있었다 EC2의 퍼블릭 도메인 주소에 접속해도
올바르게 접근되는 것을 확인할 수 있었다.
아마 코드에 오타가 있어서 오류가 발생했었고 수정해놓고 뭘 수정했는지도 모르는 것 같다...
제대로 작동하는지 2번 정도 실행해보자!
지금은 nginx는 8081의 profile은 real1을 바라보고있고 8082의 real2는 대기하고있는 상태이다.
이상태에서 내가 코드를 수정하고 다시 커밋&풀 해준다면
이전에 작성했던 스크립트 내용처럼
nginx와 연결되지않은(8082,real2)를 종료시킨후에
종료된(8082,real2) profile에 새로운 버전을 실행시킨다.
정상적으로 작동되는지 health.sh를 통해서 확인하고
nginx를 (8082,real2) 해당 profile을 바라보게 설정해준다.
#추가로 @ResponseBody나 @RestController를 통해서 값을 전달해서 쉘 스크립트에서
curl -s http://localhost:8080/profile
로 만들어놓은 함수에 접근해서 값을 반환받을 수 있다.
예시로 이런 흐름을 이용해서 현재 사용하고있는 profile값을 리턴받아서 사용하지 않는 profile은 무엇인지 알아낼 수 있다.
1번 돌리기
8082포트에 real2로 이동! 정상적으로 변경된 상태 적용 완료!
2번 돌리기
정상적으로 두번 배포를 시켰을때에 이상이 없이 정상적으로 보여지는것을 확인할 수 있습니다.
현재 실행되고있는 프로세스를 확인했을때도
정확이 두개의 스프링부트 프로젝트가 진행되고있는것을 확인할 수 있습니다!!
혼자서 끝까지 진행할 수 있을까 걱정부터되었지만 일단 먼저 하고보자고 생각했다.
역시나 진행하면서 힘든 부분이 너무 많았고 너무 막막했던 순간도 많았다.
'결국은 해결할 수 있다' 라는 생각으로 계속 달려 들었던것 같다.
이동욱 선생님의 블로그와 책이 아니면였다면 정말 힘들었을거 같다.. 다시한번 감사합니다!
책의 마지막에는 1인 개발시 도움될 도구와 조언들 이라는 항목으로 많은 도움이 되는 정보들을 알려주신다.
내가 기억하기위해서 적어두자! (기억보단 기록을-이동욱님의 블로그명)