Home » Portfolio » 어려웠던 점 어려웠던 점
1. API 서버 요청 과부하 방지
- 오픈 API 특성상 과도한 요청이 발생할 수 있었기에 이를 방지해야 했습니다.
- 서비스의 핵심을 담당하는 API 서버이기에 안정적인 운영이 보장되어야 했습니다.
- Remote IP를 받아서 직접 처리하기에는, 동시성 처리에 부담이 존재했습니다.
- 보다 효과적인 제어를 하기 위해서는 세부적인 규칙을 지정할 수 있어야 했습니다.
💡 이렇게 해결했습니다.
- 정확성과 더불어 Redis TTL과의 결합을 고려하여 bucket4j를 도입했습니다.
- 5분 이내 최대 20번의 요청만 가능하도록 토큰을 제한했습니다.
- 이를 통해 요청 과다로 인한 서버 부하 위험을 방지할 수 있었습니다.
2. 컨텐츠 다운로드 최적화
- 기존에는, DAW 자체에서 탬플릿을 생성하여 키 배열(약 110개)의 소스를 생성하도록 했습니다.
- 그러나, 스위치 별로 110개의 믹스된 소스를 전송하는 로직에는 성능 이슈가 존재했습니다.
- 이를 효율적으로 자동화하면서 최적화할 수 있는 방식이 필요했습니다.
💡 이렇게 해결했습니다.
- Web Audio API를 활용하여 DAW가 아닌 클라이언트에서 처리하도록 했습니다.
- 8kb 단일 소스 하나로, 모든 키보드 배열에 대응할 수 있는 탬플릿을 생성했습니다.
- 좌우 패닝, 상하 프리퀀시, 키캡 크기 별 필터 처리
- 파일 다운로드 개수 110개 -> 1개로 축소
- 이를 통해 녹음 후 단일 소스 처리만으로도 최적화된 사운드를 제공할 수 있게 되었습니다.