-
Notifications
You must be signed in to change notification settings - Fork 0
[프로젝트 설계] DDOS 대응 방안
MoonMinHyuk1 edited this page Apr 25, 2023
·
1 revision
- intervally 방식은 설정한 시간마다 설정한 토큰을 한번에 충전합니다.
- greedy 방식은 (설정한 시간 / 설정한 토큰의 수)초마다 토큰이 1개씩 충전합니다.
- 저희 서비스에서는 greedy 방식을 선택했습니다.
- 첫번째는, 외부 api를 사용하고 금전적 비용이 사용되는 SMS 전송 요청입니다.
- 두번째는, SMS 전송 요청을 제외한 모든 요청입니다.
- 버킷에 총 100개의 토큰을 설정했습니다. 60초 동안 100개의 토큰을 생성하는데, greedy형식을 사용하기 때문에 (60 / 100) = 0.6초 동안 1개의 토큰을 생성합니다.
- 버킷에 총 10000개의 토큰을 설정했습니다. 60초 동안 10000개의 토큰을 생성하는데, greedy형식을 사용하기 때문에 (60 / 10000) = 0.006초 동안 1개의 토큰을 생성합니다.
- 버킷을 관리하는 파일을 자바 언어 타입으로 생성하고, 스프링 인터셉터 파일은 코틀린 언어 타입으로 생성한 후, 인터셉터에서 자바 언어 타입의 파일을 주입받아서 사용했습니다.
- 위의 클래스를 찾을 수 없다는 오류의 이유는 컴파일 시점에 자바 파일보다 코틀린 파일이 먼저 컴파일 되는데 있었습니다.
- 자바 파일을 의존하는 코틀린 파일을 컴파일할 때 자바 파일을 찾을 수 없어 발생했던 오류였습니다.
- 서비스를 코틀린 파일로 변경하고 build했더니 해결되었습니다.