데이터 관리 방식을 변경하면서 관련 로직 수정은 모두 끝났고, 아직 MySql에서 S3로 옮기는 부분은 구현하지 못했다.
그런데 데이터 옮기는 것은 우선 데이터만 잘 쌓아놓으면 나중에 진행해도 될 것 같고,
다음주에 정식 배포하기 전에 배포 쪽 문제를 먼저 마무리해야할 것 같아서 먼저 시작하기로 했다.
spring쪽은 다른 팀원이 진행하고 있고, github actions+codedeploy+nginx 조합으로 할 것 같다.
nodeJS도 처음에 같은 조합으로 생각하고 github actions을 시작했는데 생각보다 자료가 없었다.
그리고 찾아보다 보니 github actions를 쓰지 않고 codedeploy+codepipeline으로 하는 것도 괜찮은 것 같아서 이렇게 시도했다.
주로 참고한 블로그 시리즈는 다음과 같다!
https://ookm1020.tistory.com/4
https://iot624.tistory.com/180
하고 나서 생각해보니, spring의 경우 jar로 빌드를 해주는 과정이 필요하고 이걸 github actions이 해주는 것 같다.
그런데 nodeJS(아니면 express 때문인가?) 는 빌드해서 따로 파일을 만들어 실행하는 것이 아니라 바로 파일을 실행하면 되기 때문에 굳이 github actions를 사용하지 않아도 되는 것 같다.
노드는 이미 EC2에서 깃허브 클론을 해서 바로 코드를 돌릴 수 있고, 단지 code pipeline을 통해 깃허브에서 변경된 코드를 감지해 codedeploy로 EC2에 변경된 코드로 업데이트만 하면 되는 것 같다.
그 다음에 배포를 해주는 영역은 PM2를 이용하면 된다.
PM2의 --watch 속성을 사용하면 코드가 변경된 것을 감지해서 자동으로 다시 서버를 실행시켜준다.
새로운 파일을 실행하는데 시간이 오래 걸리는 경우에는 PM2의 설정을 변경해서 최대한 서버가 중단되는 시간을 줄일 수 있는 것 같은데, 현재 우리 코드는 양이 많지 않아서 그런지 한번에 중지와 재배포가 이루어지는 것 같다.
어제 저녁에 PM2로 돌려놓고 계속 테스트를 하고 있는데 아직 한 번도 서버가 중단되지 않았고, 변경된 사항도 잘 업데이트가 되었다.
에러가 발생한 경우에도 알아서 다시 실행시켜주는 것 같다!
(이 에러가 왜 발생하는지 파악이 안됬었는데, 다행히 프론트에서 계속 코드를 수정하면서 소켓 연결이 끊기는 경우가 있어서 발생했던 에러같다. 프론트에서 코드 수정 끝난 후에는 아직 에러가 발생하지 않았다.)
한 가지 이해가 안되는 부분이 있는데, github에 push하고 나서 변경된 코드를 codepipeline이 자동으로 감지하는 게 아니라, 변경 사항 릴리스를 눌러줘야지 업데이트를 하는 것 같다.
원래 이렇게 쓰는게 맞는건지, 아니면 설정을 빼먹어서 그런건지 잘 모르겠다.
다른 분들한테도 물어봤는데 spring은 code pipeline을 사용하지 않는 것 같고, 노드 분들한테 물어봐야 할 것 같다.
PM2에 로그가 자동으로 기록되어 EC2에 남아있는 것을 확인했다.
txt파일이라서 열어봤는데, console.log로 찍는 것도 기록되고 에러나 서버 실행과 관련된 로그들도 모두 남는 것 같다.
이 로그파일을 S3로 일정 주기마다 옮길 수 있으면 정말 좋을 것 같다!!
우선 PM2에서 로그를 관리하는 logrotate를 설치했다.
(참고자료: https://darrengwon.tistory.com/m/1120?category=858366)
기본 설정에서 매일 로그 파일을 별도로 만드는 걸로 되있어서, 우선 며칠동안 데이터가 어떻게 쌓이는지 볼 예정이다.
그리고 MySql을 S3로 옮기는 방법을 알아보면서 이 데이터들도 어떻게 옮길 수 있을지 체크해보려고 한다.
스프링에도 로그 파일을 저장하는 기능이 있는 걸로 알고 있어서 같이 찾아봐야겠다.
'항해99 > 개발일지' 카테고리의 다른 글
20220328 개발일지 #nginx #마케팅 #log (0) | 2022.03.30 |
---|---|
20220326 개발일지 #로그를 남겨보자 (0) | 2022.03.30 |
20220323 개발일지 #데이터 수정 끝! (0) | 2022.03.24 |
20220321 개발일지 #남은 3주 동안에는.. (3) | 2022.03.24 |
20220317 개발일지 #유저의 disconnect 2탄 (0) | 2022.03.19 |