코루틴이란Co(협력) + Routine(작업)의 합성어로, 이름 그대로 여러 작업이 협력하여 동시에 진행하는 비동기 처리 프로그래밍 패턴이다. 중단과 재개fun main() { println("START") newRoutine() println("END")}fun newRoutine() { val num1 = 1 val num2 = 2 println("${num1 + num2}")}===========================START3END 다음과 같이 2개의 루틴(함수)가 있으며, 굉장히 직관적이고 결과도 예상이 간다. fun main(): Unit = runBlocking { //0. main 코루틴 실행, START 출력 println("START"..
개요회사에서 서비스가 본격적으로 시작된 후, 서버에서 남기는 로그들이나 오류 트레이스를 확인하는 경우가 많아졌다. 별다른 모니터링 시스템이 구축되지 않았기에 docker 컨테이너에 직접 접근해서 로그를 확인하였지만, 로그를 확인하기 위해 docker 컨테이너에 계속 접근하는 방식은 불편하였고 서버가 이중화되어있었기에 두 서버에 모두 접속하여 확인하여야했다. Promtail & Loki 를 이용하여 이중화 된 서버의 로그를 수집하고 Grafana 대시보드 한 곳에서 모니터링 할 수 있는 시스템을 구축하였고, 서버 운영에서 불편한 부분을 해소할 수 있었다. 지금부터 함께 시스템을 구성해보자! Promtail & Loki 스택을 선택한 이유로그 모니터링 시스템을 구축하기 위한 대표적인 스택으로는 ELK 스택..
개요이전 글을 통해 서버와 Nginx, DB의 메트릭을 모두 수집하고 대시보드로 시각화하여 개발자가 모니터링 할 수 있도록 시스템을 구성하였다. 하지만 장애를 대비하기 위해서 대시보드만 볼 수는 없는 노릇이다. 컴포넌트의 이상이 있거나 다운이 될 경우, 슬랙으로 알림이 오도록 시스템을 보완해보자. AlertManager란AlertManager를 추가하여 알림 시스템을 구성할 것이다. 우리는 프로메테우스를 통해 특정 상황에 대한 알림이 발생하도록 규칙을 설정할 것이다. 프로메테우스가 메트릭을 수집하고 규칙을 평가해서 알림을 발생시킨다면, AlertManager는 해당 규칙을 누구에게 어떻게 보낼지 라우팅한다. 슬랙 웹훅 설정슬랙의 webhook은 해당 블로그 글이 정리가 잘 되어있어서 참고하였다. 슬랙..