Redis 없이 외부 API Rate Limit 설계하기
·
개발 기록/프로젝트 - BUKAE
현재 프로젝트 BUKAE(부캐)의 서버 개발을 담당하고 있다.BUKAE는 여러 외부 API에 의존하는 구조를 가지고 있다. 그중 일부 API는 서비스의 핵심 기능과 직접적으로 연결되어 있으며, 호출 정책을 위반할 경우 단순한 오류가 아니라 서비스 전체 기능이 중단될 수 있는 리스크를 내포하고 있다. 🚨 문제 상황: 외부 API Rate Limit과 24시간 BanBUKAE에서는 상품 정보를 정확하게 조회하기 위해 외부 커머스 API를 사용하고 있다. 개발 중 API 문서를 확인하던 과정에서 다음과 같은 정책을 확인했다.분당 최대 50회 호출 가능제한 초과 시 24시간 동안 API 호출 차단이 정책은 단순히 "잠시 후 다시 시도하라"는 응답을 주는 수준이 아니었다. 한 번의 실수로 하루 동안 서비스의 핵..
[JAVA] 어노테이션과 리플렉션 원리
·
공부/JAVA
자바 개발자, 특히 스프링 부트를 사용하는 개발자라면 숨 쉬듯이 어노테이션(Annotation)을 사용한다. @Controller, @Service, @Transactional 등 골뱅이(@) 하나만 붙이면 빈(Bean)이 등록되고 트랜잭션이 관리되는 마법 같은 일들이 일어난다.하지만 많은 개발자가 어노테이션을 "그냥 붙이면 기능이 생기는 것" 정도로 이해하고 넘어간다. 도대체 이 텍스트 조각이 어떻게 코드를 변화시키는 것일까? 그리고 public @interface라는 선언은 인터페이스와 무슨 관계일까?이번 글에서는 어노테이션의 본질인 메타데이터와 인터페이스로서의 정체, 그리고 이를 작동시키는 리플렉션(Reflection)의 원리를 파헤쳐본다. 1. 어노테이션의 정체: 메타데이터사전적 의미로 어노테이션..