[22.09.03] Daily 회고록 (인프라 재구성 & CodeDeploy 문제 해결)
일간 회고록(TIL)

[22.09.03] Daily 회고록 (인프라 재구성 & CodeDeploy 문제 해결)

[일일회고]

개강하고 나서 수업도 참석하고, 과생활도 하다보니 시간이 매우 빨리 지나간다. 이번에 2023 KAKAO 블라인드 모집도 하여서 작년처럼 면접까지, 운 좋다면 합격할 수 있도록 신청했다. 저번과 달리 이번에는 본사만 모집하는 것으로 보아 점점 개발자의 취업폭이 좁아짐을 느꼈다. 꾸준히 공부하여서 취업 막차를 탈 수 있도록 노력해야겠다.

 

[프로젝트]

[소마]

- 기존에는 인프라 구성을 기본 vpc에서 간단한 certicifacte manager와 로드밸런서, ec2를 가지고 구축하였는데 이번 중간발표가 끝남과 동시에 인프라 재구성을 시작했다. 모두 public subnet에 넣었던 기존과 달리 private subnet을 구축하여 rds와 activemq를 넣었고, public access를 차단하여 vpc 내부에서만 통신이 가능하도록 구성하였다.

vpc를 따로 만들었기에 인터넷 게이트웨이를 따로 구축하여 연결해주었고, vpc내에 트래픽의 유입, 유출, 이동을 제어하기 위해 라우트 테이블을 구성하였습니다. 기존에 있던 로드밸런서와 타겟그룹, EC2는 vpc만 바꾸어서 ami로 구성하였고, 아직 서버 증설은 필요하지 않은 단계여서 ami의 마지막 단계가 되면 auto scaling을 구축하려고 한다.

 

인프라 구성도

이번에 구축하면서 생긴 오류들로는, CI/CD를 사용하기 위해서 GitAction과 CodeDeploy를 사용하는데 이 과정에서 하나의 EC2에는 정상 작동하지만, 다른 EC2에서는 기존의 process를 kill만 한 채로  새로운 프로세스를 실행하다가 새로운 스프링 어플리케이션을 실행하지 않은 채 종료되었다. 이 과정에서 CodeDeploy 로그도 살펴보고, deploy.sh 값도 변경해봤지만 계속 두 인스턴스 중 하나에서만 제대로 동작하지 않았다. (codedeploy group을 단일화 시키면 성공)

그래서 두 인스턴스의 CD에 텀을 주기 위해서 CodeDeployGroup 설정을 AllAtOnce에서 OneAtATime으로 변경하였고 Deploy 설정도 yaml파일에서 OneAtOnce로 수정해주었다.

 

code deploy group 설정
gradle.yml

또한, 로드밸런서를 이용할 것이기 때문에 CodeDeployGroup에 health check에 관한 nginx 설정을 추가해주고, 로드밸런서 설정을 해주었는데, 이 설정 이후 한 인스턴스에 CD가 6분 가량이 걸리는데 차등 배포가 성공했다. 기존에는 10초정도가 걸렸는데 로드밸런서로 설정을 바꾸자 오래걸려 이 점은 더 찾아봐야겠다.

 

10초 -> 6분 16초 ㅎㄷㄷ..

RDS도 private subnet에 존재하다보니 mysql workbench에서 public access를 켜도 접속을 할 수 없었는데, vpc 내부에서 접근을 한 것이 아니기 때문에였다. 그래서 workbench에서 접속하기 위해서는 pucblic access가 가능한 ec2를 경유해서 접속해야하는데 이는 mysql workbench에서 ssh를 통해 지원된다.

SSH에는 ec2의 접근 주소와 포트, 그리고 계정을(putty처럼)

하단에는 서버 접근 pem키와 ec2 내부에서 접근 가능한 db의 엔드포인트, 계정을 입력하면 된다.