[대규모 시스템 설계] 사용자 수에 따른 규모 확장성 - 메시지 큐, 로그, 메트릭, 자동화

Gmini.Y·2024년 3월 25일
0

메시지 큐

메시지 큐는 메시지의 무손실을 보장하는 비동기 통신을 지원하는 컴포넌트이다. 생산자, 혹은 발행자가 메시지를 생성해서 메시지 큐에 발행하면, 구독자, 혹은 소비자가 그에 맞는 동작을 수행한다.

이를 사용하면 서비스와 서버 간의 결합이 느슨해져서 확장성이 보장되어야 하는 애플리케이션을 구성하기 좋다. 생산자는 소비자 프로세스가 다운되어 있어도 메시지를 발행할 수 있고 소비자는 생산자 서비스가 죽어 있어도 메시지를 수신할 수 있다. 카프카를 개발한 링크드인의 시스템 구조를 통해 이벤트의 흐름 제어를 한 곳으로 모아서 서비스 확장을 더욱 용이하게 만든 것을 볼 수 있다.

특히 시간이 오래 걸리는 프로세스를 비동기적으로 처리할 수 있다는 장점이 있다. 예를 들어 이미지의 보정 작업을 생각할 수 있다. 사진 보정 작업을 메시지 큐에 넣으면 사진 보정 작업 프로세스들이 이 작업을 비동기적으로 메시지 큐에서 꺼내서 수행한다.

로그, 메트릭 그리고 자동화

서비스 규모가 커지면 로그, 메트릭, 자동화 같은 것들에 필수적으로 투자해야 한다.

  • 로그 : 에러 로그를 모니터링하는 것은 중요하다. 에러 로그는 서버 단위로 모니터링 할 수도 있지만, 로그를 단일 서비스로 모아주는 도구를 활영하면 더 편리하게 확인이 가능하다.
  • 메트릭 : 메트릭을 잘 수집하면 사업 현황 및 전략에 유용한 정보를 얻을 수 있고 시스템의 상태를 손쉽게 파악할 수 있다.
    - 호스트 단위 메트릭: CPU, 메모리, 디스크 I/O 에 관한 메트릭이 여기 해당한다.
    • 종함(aggregated) 메트릭 : 데이터베이스 계층의 성능, 캐시 계층의 성능 같은 것이 여기 해당된다.
    • 핵심 비즈니스 메트릭 : DAU(Daily Active User), 수익, 재방문(Retention) 등이 여기 해당한다.
  • 자동화 : 가령 지속적 통합을 도와주는 도구, 빌드, 테스트, 배포 등의 절차 자동화 등을 통해 개발 생산성을 향상 시킬 수 있다.

메시지 큐와 로그, 모니터링, 메트릭, 자동화 등을 위한 장치를 추가한 설계


본 포스트는 알렉스 쉬 저자의 가상 면접 사례로 배우는 대규모 시스템 설계 기초를 기반으로 스터디하며 정리한 내용들입니다.

메시지 큐 참고

0개의 댓글