본문 바로가기
창업일기

실시간 알림 서버에서 부하와 비용 최소화하기

by Nhahan 2024. 1. 10.

아키텍쳐

 

1. 알림서버는 Webflux로 구축하고, 오직 데이터 스트림을 내려주는 역할만 한다.

2. 부하를 줄이기 위해 소켓 통신이 아닌 HTTP의 기본 스펙인 가벼운 리얼타임 스트리밍이 가능한 SSE를 이용한다.

  - 구현이 매우 쉽다는 장점도 있다.

3. 단방향 통신이라는 SSE의 단점을 극복하기 위해 데이터 생성, 상태 업데이트에 대한 것은 람다(무료니까!)로 처리한다.

  - 클라에서 직접적으로 람다를 트리거 하는게 일단 가능한지 여부는 궁금하긴한데, 현재 프론트는 Next로 구현되고 있기 때문에 그것이 가능하든 말든 문제 없다. Next의 백엔드단에서 쏘면 된다.

4. 하나의 call 마다 Lambda를 사용하지 않기 위해 SQS를 buffer로써 이용한다. 즉, 여러 요청들을 모아서 람다를 배치(요청 묶음)로 실행한다.

5. 기존에 쓰던 Redis의 Pub/Sub과 캐싱 기능을 활용한다. 캐싱이 필요 없다고 생각되면 더 쉽게 구현 가능한 SNS 같은걸 써도 될 것 같다.

6. 알림서버에서 DB접근은 최소화한다(aggregate query 최대한 금지).

 

 

 

웹소켓 이용 요금이 너무 비싸서 최대한 비용을 아끼기 위해 상상해보았다. 잘 돌아갈지는 모른다. 해보면 알겠지만, 일단 이론상은 문제 없을 것 같은 느낌이다.

 

 


 

 

Only CSR이라면 아래처럼 하면 될 듯?

 

 





일단 이렇게 하기로 했다.



댓글