이 글에서는 Fixed Window Rate Limiter의 동작 원리와 마주칠 수 있는 3가지 핵심 문제점을 정리해두려고 합니다. Fixed Window Rate Limiter가 뭘까?한글 말 뜻으로는 고정된 윈도우 처리율 제한 입니다. 이해하기 쉬울 정도의 예상된 동작을 유추할 수 있습니다. 5분 간격의 윈도우했다고 가정00시 00분 ~ 00시 04분 59초 -> 윈도우 100시 05분 ~ 00시 09분 59초 -> 윈도우 2~.. 동작 원리사이드 프로젝트에서 사용한 케이스는개발에서 개발자가 만든 런타임 예외를 설정하고, 이 예외가 발생한다면 슬랙으로 알림이 올 수 있도록 설정할 때, 같은 예외 같은 로깅 레벨의 예외가 발생했을 경우에 중복으로 알림을 발송하지 않도록 제한을 걸어둘 때 사용하였습니다...
FixedWindow
지난 글에 Rate Limiter 성능 문제를 해결하기 위해 Caffeine 캐시를 도입했습니다.처리율 제한 시스템을 설계했을 때 어떤 알고리즘이 있으며, 어떤 이유로 선택했는지 정리하려고 합니다. 1. 왜 Rate Limiter를 직접 구현하게 되었는지?평소에 하던 업무에서 다음과 같은 부분을 중점으로 설계하고 구현한 적이 없어서 따로 고민해보지는 않았었습니다.다만, 사이드 프로젝트에서 슬랙 알림 연동을 마치고 예외나 배치 스케줄러가 종료했을 때 알림이 중복으로 발송되는 것에 대해 생각을 해보았습니다. 그래서 ConcurrentHashMap 형식으로 알림 발송 현황을 저장하는 방식을 선택해보았습니다. 처음 구현 코드에서는"고정윈도우 + 슬라이딩 요소"를 담았습니다. 고정 윈도우적 특성각 키별로 첫 ..