항해14기 본과정/항해14기 개발일지

[항해 14기] 개발일지43 (실전프로젝트 - CD 환경 구축)

스쿼트잘함 2023. 5. 25. 23:42

실전프로젝트 - 1주차

 

1. 회의 내역(BE 관련)

1) 무한스크롤

- 위스키 리스트, 지도에서 가게 조회, 위스키 가게 리스트 에 적용 예정

2) 위스키 카테고리

- 무한스크롤 방식으로 인하여 res에 일부 데이터가 끊어서 들어가게 됨

- FE에서 전체 데이터를 받지 못하게 되어 각 카테고리 페이지마다 별도의 api 제작 예정(기존에는 전체 데이터를 FE에서 받은 후 FE에서 분류)

3) 추가 스코프 - 카톡 알림

- 유저가 줄서기 알림카톡에서 특정 버튼을 누르면 서비스api와 연동(카톡알람 api 연구 필요)
- 마이페이지 줄서기링크를보냄(웹페이지에서 유저가 점주에게 메세지 보내기 버튼)
- 점주에게 유저 반응만 전송

- 위 방식 중 선택 예정

4) 카톡api 성인 인증

- 술 관련 컨텐츠여서 성인인증 절차가 까다롭게 됨

- 네이버로 우회 또는 성인 인증 없이 가능한 카카오 api들로만 진행 예정

 

 

 

2. 작업 내역

1) CI 수정

- 기존에 CI환경만 생각해서 배포 브랜치에 pr이 오면 자동으로 검사를 진행하고 검사가 완료되면 머지 버튼을 활성하 하는식으로 세팅 하였는데, CD 환경 구축 이후 pr만 보내도 codedeploy에서 자동배포가 진행 되는 이슈가 발생

- build on 로직에 pr조건 삭제, 배포 브랜치에 머지할 경우에만 CI/CD 진행 되도록 수정

 

2) CD 환경 구축

- aws code deploy로 진행

- 레퍼런스 사이트 https://vanillacreamdonut.tistory.com/323

- 해당 사이트의 가이드 기반으로 완성 했으며, aws 정책 변경 사항과 자세한 세팅 차이점은 트러블 슈팅에 기술

 

3) CD 구축 완료

- ci.yml에 cd빌드 추가

ci.yml 수정

- codedeply에서 진행될 yml 추가

appspec.yml

- 배포 이후 빌드 추가

after-deploy.sh

 

 

 

3. 트러블슈팅/회고

1) 처음에 레퍼런스 사이트의 가이드를 깊은 이해없이 그대로 따라하다가 많은 에러가 발생했다

 

2) 이슈1 : appspec.yml

- 파일 경로(destination)를 잘못 지정해주어 수정(원하는 프로젝트 디렉토리 명으로)

- overwrite 기능은 첫 배포 이후에 동작하는 기능, 최초 codedeploy배포 시에는 동일 디렉토리가 존재하면 덮어쓰기가 안됨

 

3) 이슈2 : ci.yml

- cd빌드 명령어를 추가하였는데, zip부분에 필요한 디렉토리 스트럭쳐들의 경로를 추가하려니 양이 너무 많아서 전부 압축하는것으로 진행하였다

- 필요한 파일들만 압축해주도록 디렉토리 구조들을 다음 프로젝트에 적용할 예정, 이를 통해 cd 빌드 속도를 줄일 수 있을것으로 예상

 

4) 이슈3 : after-deploy.sh

- 이미 빌드작업은 끝났고 codedeploy 배포만 남은 상황인데, 해당 파일의 역할을 잘못 이해해서 npm ci와 npm build를 다시 해줬다

- codedeploy 진행 중 afterinstall 단계에서 npm build로 인해 우분투 프리티어 인스턴스가 터져버렸다

- timeset이 300초인데 31분동안 cpu가 풀로 돌더니 결국 서버가 다운 되어버렸다

- 이후 after-deploy.sh의 파일을 수정해 준 뒤(build제거 및 변경사항 적용을 위한 pm2 restart) 터진 인스턴스를 중단해주고 새로 생성 후 CI/CD 재진행을 하였더니 성공하였다

- codedeploy 모니터링 명령어 : sudo tail -f /var/log/aws/codedeploy-agent/codedeploy-agent.log

 

5) 이슈4 : 

- 인스턴스 중단과정이 몇번 있었고, 매번 ip가 재할당이 되어 탄력ip를 발급하여 고정해 주었다