Code Deploy 의 결과를 놓치지 않는 법

koomin·2024년 8월 13일
2
post-thumbnail
post-custom-banner

우리 팀은 현재 CodeDeploy 를 사용하여 자동 배포를 운영중이다. 하지만 배포가 될 때 마다 모두 성공하는 것은 아니다.

잘 돌아가다가 가끔 실패하는 경우가 생긴다. 보통의 경우 거의 성공하니 별다른 확인 없이 지나가는 경우가 많다. 그러다 실패를 하면 발견을 못하는 경우가 많이 생겼다. 그러다 결국 다른 팀원이 api 테스트 하다가 서버가 죽은 것을 발견한다.

또 배포가 성공했는지 실패 했는지 확인 하려면 aws 콘솔로 들어가 CodeDeploy 를 열어 확인하는 과정이 상당히 번거로웠다.

마지막으로 프로젝트를 스토어에 배포하여 실제 사용자들을 받고 있기 때문에 배포의 상태를 잘 인지하여 장애가 나지 않게 할 필요가 있었다.

때문에 나는 CodeDeploy 의 배포 결과를 알림으로 받아 볼 수 있는 플로우를 만들어 위의 불편함을 해소하고자했다.

요약하자면

  • 배포 실패를 인지하기 어려움
  • 배포 성공여부를 확인하는 과정이 번거로움
  • 실제 서비스 운영중

CodeDeploy 의 결과를 알림으로 받는 기능을 도입

기술 선정

알림을 받는 방법으로 슬랙을 사용하기로 했다. aws 에서 chatbot 이라는 서비스를 지원하는데 이 기능을 사용하면 aws 의 알림을 슬랙으로 쉽게 받을 수 있었다. 더 자세한 설명은 아래를 참고하자.

AWS Chatbot

aws 공식 홈페이지를 살펴보면 다음과 같이 소개한다.

AWS Chatbot은 Microsoft Teams 및 Slack 채널을 통해 AWS 리소스를 쉽게 모니터링하고 상호 작용하도록 지원하는 대화형 에이전트입니다. AWS Chatbot을 활용하면 알림을 수신하고 명령을 통해 진단 정보를 반환하고, AWS Lambda 함수를 호출하고 AWS Support 케이스를 생성하여 팀이 더 빠르게 협업하고 이벤트에 대응할 수 있습니다.

Slack 같은 메신저에 aws 리소스 모니터링을 쉽게 연결할 수 있게 도와준다.

가격

놀랍게도 무료다!


요약해보자면

  • 가격 무료.
  • aws 연동 난이도 낮음.

위 특징들을 보면 AWS Chatbot 을 사용하지 않을 이유가 없었다. 그리고 이미 우리팀은 개설해둔 Slack이 있었기 때문에 메신저를 옮길 필요도 없었다.

CodeDeploy의 결과를 Slack으로 받기

이제 부터 aws ChatbotSlack을 연동하는 법부터 CodeDeploy의 결과를 Slack으로 전송하는 방법을 설명하겠다.

AWS Chatbot에 Slack을 연동 하기

먼저 Slack을 AWS Chatbot 에 연결해야한다.

우선 AWS Chatbot 에 들어가서 새 클라이언트 구성 을 누른다.

Slack 으로 리다이렉션 되면서 연결할 Slack의 워크스페이스를 선택하는 화면이 나온다. 여기서 연결하고하 하는 워크스페이스를 선택하면 끝이다.

성공적으로 연결이되었다면 위와 같이 Slack-{workspace 이름} 으로 된 항목이 뜬다.

채널 구성하기

aws 의 상태를 Slack에 연결하려면 채널을 구성해야한다. 채널은 슬랙의 채널과 대응된다.

위 채널을 의미한다.

채널을 구성하는 방법은 아래와 같다.

새 채널 구성 버튼을 누른다.

채널 구성 정보를 입력한다.

  • 구성 이름은 aws 에서 확인 할 이름이다.
  • Slack 채널은 퍼블릭, 프라이빗 둘 중 하나를 선택 할 수 있다.
    • 선택후 채널이름을 선택하는데 채널이름은 이미 Slack에서 만들어진 채널을 선택한다.

권한을 추가해둔다. 이때 본인이 사용하려는 서비스에 맞는 권한을 추가해주어야한다. 위의 경우에는 IAM 역할을 바로 생성하고 있지만 이미 만들어진 경우 “기존 IAM 역할 사용” 을 선택할 수도 있다.

채널 가드 레일 정책에 ReadOnlyAccess 만 되어있지만 AWSCodeDeployFullAccess 도 추가했다.

권한 아래에 부분은 CodeDeploy 연결할 때는 하지 않아도 된다.

CodeDeploy 알림 규칙생성하기

CodeDeploy 로 이동한다. 애플리케이션 에서 Slack과 연결하려는 애플리케이션을 클릭한다.

알림 규칙 생성하기를 클릭한다. 클릭하면 규칙을 생성하는 창이 나온다.

원하는 조건에 맞게 규칙을 설정한다.

  • 알림 이름은 aws 확인 하는 이름이기에 잘 식별가능하게 짓는다.
  • 알림을 트리거하는 이벤트 에서 알림받고 싶은 이벤트를 체크한다.
    • 나는 성공, 실패, 시작을 모두 체크 했다.
  • 대상이 중요한데 대상 유형 선택 에는 AWS Chatbot(Slack) 을 선택한다.
  • 대상선택 에는 **위에서 만든 채널 구성에 들어가 ARN**을 복사해 붙여 넣는다.

바로 생성을 누르면 오류가 날 수도 있다. 채널 구성이 다 완료되지 않아서 그런데 잠시 기다리면 정상적으로 생성이된다.

정상적으로 생성되었다면 위와 같이 알림 규칙 목록이 추가되어있을 것이다.

결과 확인하기

이제 연결을 모두 끝냈으니 정말 알림이 오는지 확인 할 차례이다. CodeDeploy 를 사용하여 배포를 시켜보자!

정상적으로 이벤트에 대한 알림이 오는 것을 확인 할 수 있다.

마치며

생각보다 CodeDeploy 를 Slack 알림으로 보내는 과정이 복잡하지 않아 편했던 것 같다. CodeDeploy 를 사용하고 Slack 을 사용한다면 한번쯤은 시도해보면 편할 것 같다. 정말 AWS의 편리함을 느꼈던 과정이었다.

이 플로우를 적용하고 난후 배포 실패에 대한 걱정은 하지 않아도 되어서 너무 편리했다.

한계점

하지만 CodeDeploy가 배포만 도와주는 도구이기 때문에 배포가 성공 했다고 해서 서버가 살아있다는 보장은 할 수 없다. 환경변수가 안맞거나 RDS 가 죽는 여러 문제 때문에 배포는 성공 했어도 켜지다가 서버가 죽을 수도 있다. 이런 경우에는 이 방법으로 알림을 받을 수 없다.

이러한 문제를 해결하기 위해 다음 글에서는 서버의 상태를 알림으로 체크할 수 있는 방법을 이어서 소개하려고 한다. 지금 까지 읽어주셔서 감사합니다.

profile
개발 지식 수집하기. 직접 경험해본 내용을 기록합니다.
post-custom-banner

0개의 댓글