Day 37 · 4/5
🌿 중급 백엔드

API Rate Limiting은 왜 하나요?

쉽게 이해하기

뷔페 식당에서 한 사람이 음식을 독차지하면 다른 손님들이 먹을 게 없어지죠. 그래서 '1인당 몇 접시까지'라는 규칙을 만들어요. API Rate Limiting도 똑같아요. 한 사용자가 API를 독점하면 다른 사용자가 서비스를 쓸 수 없으니까, 시간당 호출 횟수를 제한하는 거예요.

핵심 정리

사용자가 API를 너무 많이 호출하지 못하도록 제한해서 서버를 보호하고 공정한 사용을 유도해요.

자세히 알아보기

Rate Limiting은 특정 시간 동안 API 호출 횟수를 제한하는 기법이에요. 예를 들어 '1시간에 100번까지', '1분에 10번까지' 같은 식으로 제한을 걸어요. 이걸 넘으면 '429 Too Many Requests' 에러가 발생하고, 일정 시간 후에 다시 요청할 수 있어요. 왜 필요할까요? 첫째, 서버 과부하를 방지해요. 악의적인 사용자가 초당 수천 번씩 요청을 보내면 서버가 다운될 수 있거든요. 둘째, 공정한 사용을 보장해요. 한 사용자가 자원을 독점하면 다른 사용자가 피해를 보니까요. 셋째, 비용을 절약해요. 클라우드 서버는 트래픽만큼 비용이 나오니까 무분별한 호출을 막아야 해요. 실무에서는 보통 IP 주소나 API 키 단위로 제한해요. 트위터는 무료 API에 월 10,000건, 구글 지도 API는 무료로 월 28,000건까지 제공하죠. 유료 플랜은 더 많은 호출을 허용해요. Rate Limit 정보는 보통 응답 헤더에 포함돼요. `X-RateLimit-Remaining: 95` 같은 식으로 '남은 호출 횟수'를 알려주죠. 개발할 때는 Rate Limit을 고려해야 해요. 한 번에 많은 데이터를 가져오려면 페이징을 사용하고, 캐싱으로 불필요한 호출을 줄이고, 에러 발생 시 재시도 로직에 딜레이를 넣어야 해요. Rate Limiting은 서버를 보호하면서도 모든 사용자에게 공정한 기회를 제공하는 중요한 장치예요.