[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를 고려하고 있다면 적극적으로 고려해보자.
댓글남기기