[Daily Contents] 메세지 큐


좋은 웹 AP가 가져야 할 것들 - 성능

  • 성능
    • 빠르면 빠를수록 좋다. 양, 부하 등을 견딘다.
  • 안정(신뢰)성
  • 보안
    • HTTP, HTTPS, 웹캠과 마이크에 테이프 붙여두기…

웹 아키텍쳐

  • 웹 서버 프로그래밍 중 특별한 일을 물리적으로 독립된 다른 곳에서 처리하고 싶다 » Job servers

무인 주차 정산 시스템 구현

  • 입차 시 카메라로 차량번호 인식
  • 요금 할인 대상 차량 여부 확인(REST API)
    • 경차, 저공해 차량 여부 체크
    • 장애우, 유공자 여부 체크
  • 출차 시 주차 요금 자동 정산
입차(차량번호) {
  입차 ID = 입차 기록생성(차량번호);
  장애우여부 = REASTAPI(차량번호);
  유공자여부 = REASTAPI(차량번호);
  경차여부 = REASTAPI(차량번호);
  저공해차량여부 = REASTAPI(차량번호);
  입차기록업데이트(입차 ID, 할인정보);
}
  • 실패 - RESR API 평균 응답시간 4초
  • 해결 방법은 비동기처리?

응답 시간 - 비동기 처리

  • Synchronous / Asynchronous는 중요한 개념
  • 업무 이해에 기반한 적절한 비동기 처리
  • 사용 language, 프레임워크 환경에서 제공하는 것부터 적용

동기 VS. 비동기

  • 일반적으로 코드는 순차적으로 실행
  • 특정 명령어들의 모음을 별도의 작업 흐름으로 생성하여 명령 제어권을 바로 이어받을 수 있게 만든 방식이 비동기 처리 방식

비동기 처리로 해결?

  • 사용 중인 프레임워크에서 제공하는 방법

멀티 서버 환경에서의 주의점

  • 관리자 환경 설정 내용을 ‘로컬 파일’로 관리
changeEnv(){
  파일오픈 "D:\env\env.conf"
  write 작업 수행
}

메세지 큐

  • 메세지의 버퍼 역할을 하며 비동기적으로 전송
  • 서비스(서버) 간 느슨한 결합이 가능
  • 메세지의 무손실을 보장
  • 이기종간 메시징에도 적합
  • MSA
  • RabbitMQ

RabbitMQ

  • 기본 활용만으로도 많은 장점
  • 단순 사용 경험보다는 어떠한 환경에서 어떤 이유로 적용했는지에 대한 가설을 세워 본 경험이 중요
  • 다양한 클라이언트 라이브러리 제공
  • 메세지 디스크 저장 설정 가능
  • 메세지 무손실(영속성) 보장
  • 고가용성을 위한 클러스터 설정 가능
  • 접근성 좋은 Web UI

마지막으로

  • 서비스를 분리하고 관계를 맺으려 한다면…
  • 우선 메세지 큐 활용법보다는 적합한 사용 시나리오를 찾기 위해 노력해보자.
  • 비동기 처리를 통한 성능 향상과 서비스(서버)간 느슨한 결합이 가져다주는 장점을 경험해보자.
  • MSA를 고려하고 있다면 적극적으로 고려해보자.

댓글남기기