- 백엔드 아키텍처 기초 1
- 백엔드 아키텍처 기초 2 - 응답시간 개선
- 백엔드 아키텍처 기초 3 - 웹 계층 수평적 확장
- 백엔드 아키텍처 기초 4 - 데이터 센터
- 백엔드 아키텍처 기초 6 - 데이터베이스 규모 확장
기초 4에서는 전 세계에서 사용할 때 나라별로 데이터센터를 두어 지리적 라우팅으로 요청 및 응답을 처리하였다. 하지만 데이터 센터마다 데이터 동기화 문제가 있을 수 있다. 이러한 문제를 해결하기 위해 메시지 큐를 사용해보자.
🚀 메시지 큐(message queue)
- 메시지 큐는 메시지의 무손실(durability)을 보장하는 비동기(asynchronous) 통신을 지원하는 컴포넌트
- 즉, 메시지 큐에 보관된 메시지는 꺼낼 때까지 안전히 보관된다는 특성을 지님
- 생산자(producer) or 발행자(publisher)라고 불리는 입력 서비스가 메시지를 메시지 큐에 발행(publish)
- 큐에는 소비자(consumer) or 구독자(subscriber)라고 불리는 서비스 혹은 서버가 연결되어 있음
- 소비자가 메시지를 받아 그에 맞는 동작을 수행
🚀 메시지 큐 장점
- 메시지 큐를 이용하면 서비스 or 서버 간 결합이 느슨해짐
- 따라서 규모 확장성이 보장되어야 하는 안정적 애플리케이션을 구성하기 좋음
- 생산자는 소비자 프로세스가 다운되어도 메시지 발행 가능
- 소비자는 생산자 서비스가 가용한 상태 아니라도 메시지 수신 가능
시간이 오래 걸리는 작업을 메시지 큐에 넣고, 작업 프로세스들은 메시지 큐에서 비동기적으로 꺼내 완료시킨다.
이러면 생산자와 소비자 서비스 규모는 각기 독립적으로 확장가능하다.
🚀 메시지 큐로 데이터 동기화
데이터 센터간 독립적인 DB로 데이터 불일치 문제가 있을 수 있다.
이러한 문제는 데이터베이스 다중화(넷플릭스 다중화 참고)나 여러 해결방법이 있지만 메시지 큐를 이용한 방법도 있다.
🚀 로그, 메트릭, 자동화
로그(log)
- 에러 로그로 시스템 오류와 문제를 보다 쉽게 찾아낼 수 있기에 중요함
- 에러 로그는 서버 단위 모니터링 가능
- 로그를 단일 서비스로 모아주는 도구 활용하면 더 편리하게 검색 및 조회 가능
메트릭(metric)
- 특정 수치들을 시각화해서 보여주거나 그대로 알려주는 것
- 메트릭을 잘 수집하면 사업 현황에 관한 유용한 정보를 얻거나, 현 시스템 상태를 손쉽게 파악 가능
- 호스트 단위 메트릭 : cpu, 메모리, 디스크 I/O 등
- 종합(aggregated) 메트릭 : DB 계층 성능, 캐시 계층 성능 등
- 핵심 비즈니스 메트릭 : 일별 능동 사용자(daily active user), 수익(revenue), 재방문(retention) 등
자동화(automation)
- 시스템이 크고 복잡해지면 생산성을 높이기 위해 자동화 도구를 사용해야 함
- 지속적 통합(CI, Continuous Integration)을 도와주는 도구를 활용하면 쉽게 문제 감지 가능
- 빌드, 테스트, 배포 등의 절차를 자동화하여 개발 생산성 크게 향상 가능
🚀 메시지 큐, 로그, 메트릭, 자동화를 반영한 아키텍처 구조
- 메시지 큐는 각 컴포넌트가 느슨히 결합될 수 있도록 하고, 결함에 대한 내성 높임
- 시간이 오래 걸리는 작업은 메시지 큐에 넣고, 작업 서버가 비동기적으로 꺼내서 처리함
- 로그, 모니터링, 메트릭, 자동화 등을 지원하기 위한 장치 추가
'개발 etc' 카테고리의 다른 글
분산환경에서 DB 기본키(PK)는 어떤 ID 생성 전략으로 만들어야할까? (UUID,ULID,TSID...) (1) | 2023.09.03 |
---|---|
백엔드 아키텍처 기초 6 - DB 규모 확장 (0) | 2023.07.18 |
백엔드 아키텍처 기초 4 - 데이터 센터 (0) | 2023.07.07 |
백엔드 아키텍처 기초 3 - 웹 계층 수평적 확장 (0) | 2023.06.27 |
백엔드 아키텍처 기초 2 - 응답시간 개선 (0) | 2023.06.26 |