11mia 2021. 8. 23. 22:14

주제 : Agile한 환경에 대비한 CICD(Continuous Integration Countinuous Deployment) 프로토타입 설계

설계 결과물은 하기와 같이 구성하였습니다.

크게 배포 흐름과, 모니터링 흐름 관점에서 프로토타입을 만들어보았습니다.

[ 배포 흐름 ]

1. 개발자가 개발 완료 후 GitHub(깃헙)에 해당 소스를 올립니다.

2. GitHub에 변경이 발생할 경우, Jenkins(젠킨스)에서 이를 캐치하여 배포 프로세스가 시작됩니다. (이부분은 Git과 Jenkins의 Webhook을 통해 구현이 가능합니다.) 그리고 Jenkins를 통해 배포되는 전 프로세스는 Slack을 통해 알람을 발송할 수 있습니다.(Slack Notification)

3. Jenkins에서는 SonarQube(소나큐브)를 통해 버그, 취약점 등을 걸러내는 정적 코드분석을 진행합니다.

4. SonarQube를 통과한 후엔 Docker에서 소스를 이용하여 이미지 파일을 생성 후, Woker Node(실 서버)들에 배포됩니다.

[ 모니터링 ]

1. Prometheus(프로메테우스)에서 각 노드별로 데이터를 수집합니다.

2. 프로메테우스에서 수집된 정보는 Grafana(그라파나)에서 가져가며, 그라파나에서는 해당 데이터를 기반으로 대시보드를 구성할 수 있습니다.

3. 그라파나는 슬랙과 연동이 가능하며, 이상 징후 발생시 차트 이미지와 함께 슬랙에 알람 메시지를 발송할 수 있습니다.