책을 통해 실습을 진행하면서 여러 번 에러를 마주쳤지만, 금방 고칠 수가 있었다. 대부분 오타이거나 스프링 부트 버전 변경으로 인해 약간 설정이 달라진 것이었다. 스프링 부트는 처음 경험해 본 것은 아닌 데다가 잘 정리된 글들도 있어서 금방 해결했다.
하지만 무중단 배포 과정을 진행하면서부터는 에러로 인해 조금 고생을 했다. AWS와 리눅스는 처음 사용해보기에 더 그랬던 것 같다. 하루 넘게 약 이틀정도에 걸쳐 해결을 했다.
이 과정에서 작성한 스크립트 코드들도 살펴보고 Deploy log도 살펴보고, EC2에서 파일이나 폴더도 지웠다가 다시 시도해 보았다. 그러면서 작성된 스크립트 코드들이 어떻게 진행되는지 더 자세히 알 수 있었고, 처음 사용해 본 리눅스의 명령어들도 조금은 친숙해졌다.
에러를 해결하기위해 EC2의 jar와 yml 등 설정파일들을 삭제하고 다시 배포해 보고, 스크립트를 다시 살펴보며 오타도 수정했었고,
deploy.sh에 빠진 설정을 추가하며
-Dspring.profiles.active=real \
활성화시킬 프로필을 설정하는 코드라는 것을 알게되었다.
...
nohup java -jar \
-Dspring.config.location=classpath:/application.properties,/home/ec2-user/app/application-oauth.properties,/home/ec2-user/app/application-real-db.properties,classpath:/application-real.properties \
-Dspring.profiles.active=real \
$REPOSITORY/&JAR_NAME 2>&1 &
여기서 저 위에 있던 코드를 빼먹으니 EC2의 퍼블릭 DNS:8080/profile로 접속했을 때 real이 출력되어야 하는데 oauth가 출력되었다.
설정들을 다 지우고 다시 무중단 배포 과정을 진행하며 다른 블로그의 글들도 참고하며 profile.group도 추가적으로 설정하며, 결국 무중단 배포까지 성공하였다. 배포가 진행 중임에도 서비스를 이용하는데 문제가 없었고, 배포가 끝나자마자 바로 변경사항이 적용되어 참 신기했었다.
에러로 고생하긴 했지만 한편으론 좀 더 공부할 수 있는 기회여서 좋았다.
아무런 에러 없이 무중단 배포 과정이 진행되었다면, 아마 이런 경험을 해보지 못했을 것이다. 에러를 해결하며 리눅스를 더 경험해 보고, 배포가 진행되며 각 스크립트들이 어떤 순서로 어떻게 동작하는지 살펴볼 수도 없었을 것이다. 그리고 마침내 성공했을 때의 기쁨을 누리지 못했을 것이다.
지금 배운 것을 바탕으로 다시 혼자 프로젝트를 진행해 보며 복습도 하고, 새로운 기능과 기술도 사용해 보려고 한다.
'SpringBoot > AWS' 카테고리의 다른 글
무중단 배포 (0) | 2023.03.19 |
---|---|
CodeDeploy 로그 확인 (0) | 2023.03.18 |
Github Actions 배포 자동화 (0) | 2023.03.18 |
스프링 부트에서 작성하는 테스트 코드 (0) | 2023.03.14 |
스프링 부트 시작하기 (0) | 2023.03.14 |