You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
알림 시스템으로 발송 방식은 API로 요청을 받아 큐에 넣는 방식을 사용했습니다. 그러나 이 방식은 1000건의 알림 발송 시 초당 **50 TPS**로 처리 속도가 제한되는 한계가 있었습니다. 특히 메신저 서비스에서 대량의 알림 발송 요청이 들어올 경우, API 처리 병목 현상으로 인해 시스템 성능이 크게 저하되었습니다.
12
+
알림 시스템으로 발송 방식은 API로 요청을 받아 큐에 넣는 방식을 사용했습니다. 그러나 이 방식은 1000건의 알림 발송 시 초당 **50 RPS**로 처리 속도가 제한되는 한계가 있었습니다. 특히 메신저 서비스에서 대량의 알림 발송 요청이 들어올 경우, API 처리 병목 현상으로 인해 시스템 성능이 크게 저하되었습니다.
더불어, 알림 시스템의 발송량이 **수백만 건 규모에 미치지 않으며**, **실시간 처리가 중요한 요구사항**임을 고려해 Kafka 대신 RabbitMQ로 전환하기로 결정하였습니다. 이를 통해 Kafka를 사용하는 기존 Golang 서버를 RabbitMQ로 통합하여 운영 효율성을 높이고자 합니다.
48
48
49
-
### 성능 비교: 개선 전 vs 개선 후
49
+
### 성능 비교: API vs RabbitMQ
50
50
51
-
jmeter를 이용해서 개발기를 TPS가 얼마나 차이 나는지 측정해보았습니다.
51
+
jmeter를 이용해서 개발기에서 API가 큐에 메시지를 넣는 처리량(RPS)을 측정해보았습니다. 이 측정은 큐에 넣는 처리량만을 비교한 것이며, 실제 운영 환경에서는 큐에 들어간 메시지를 소비하여 실제 발송까지 완료하는 데는 추가 시간이 소요됩니다.
API 처리량(TPS)이 기존 **36**에서 **RabbitMQ를 활용한 비동기 처리 방식으로****9259 TPS**까지 크게 향상되었습니다. 이는 약 **25,688% 증가**한 수치입니다.
62
+
### 마치며
66
63
67
-
데몬 서버가 증가한 RabbitMQ 메시지 처리 속도를 안정적으로 유지할 수 있도록 **Grafana를 활용한 지속적인 모니터링**을 진행할 계획입니다. 이를 통해 **메시지 소비 속도, 서버 리소스 사용량** 등을 실시간으로 분석하고 지속적인 개선을 통해 **최대 처리량을 유지하면서도 안정적인 운영이 가능하도록 최적화해 나갈 계획입니다.**
64
+
**API 처리에서 RabbitMQ를 활용한 비동기 처리 방식으로** RPS가 향상되었다는걸 확인할 수 있었습니다. API 발송에서 RabbitMQ 발송 전환은 서비스팀과 협업화여 성공적으러 전환되었고 데몬 서버가 증가한 RabbitMQ 메시지 처리 속도를 안정적으로 유지할 수 있도록 **Grafana를 활용한 지속적인 모니터링**을 진행할 계획입니다. 이를 통해 **메시지 소비 속도, 서버 리소스 사용량** 등을 실시간으로 분석하고 지속적인 개선을 통해 **최대 처리량을 유지하면서도 안정적인 운영이 가능하도록 최적화해 나갈 계획입니다.**
0 commit comments