본문 바로가기

API4

GET 방식 API에서 Cache-Control을 중앙 통제로 관리하는 실무 전략 최근 서버를 설계하면서 조회 API의 캐시 전략에 대해 깊게 고민하게 됐다. 특히 트래픽이 늘어날수록 서버 부하를 어떻게 줄일 것인가, 그리고 보안 이슈 없이 캐시를 어떻게 적용할 것인가는 피할 수 없는 주제다.이 글은 다음 질문에서 출발한다.GET 조회 API에 Cache-Control은 왜 필요한가?Redis 캐시와 HTTP 캐시는 무엇이 다른가?Cache-Control을 컨트롤러마다 두는 게 맞을까?중앙에서 캐시 정책을 통제하는 방법은? 1. 캐시는 왜 쓰는가? (진짜 이유)캐시를 쓰는 이유를 흔히 "응답을 빠르게 하기 위해서"라고 말하지만, 실무에서는 더 중요한 목적이 있다.캐시는 트래픽이 커질수록 서버가 같은 일을 반복하지 않게 막기 위한 장치다.예를 들어 일정 조회 API가 초당 수천 번 호출.. 2026. 1. 20.
Understanding the Real Nature of HTTP Requests: A Look Beneath High-Level Clients The HTTP clients we commonly use—such as RestTemplate, fetch, and axios—let us send requests with very simple, high-level calls. Because of this convenience, we rarely get to see what actually happens underneath. By looking at a lower-level API like HttpURLConnection, we can clearly understand how an HTTP request is constructed and transmitted. 1. Example of a Low-Level HTTP RequestBelow is a si.. 2025. 12. 9.
HTTP 통신의 실제 모습 – 라이브러리가 감추고 있던 바이트 스트림 처리 우리가 사용하는 RestTemplate, fetch, axios 같은 HTTP 클라이언트는 단순 호출만으로 요청을 보낼 수 있게 해 주기 때문에 내부에서 어떤 일이 일어나는지 알기 어렵습니다. 하지만 저수준 API인 HttpURLConnection을 직접 보면 HTTP 요청이 어떤 방식으로 구성되고 전송되는지 조금 더 명확하게 이해할 수 있습니다. 1. 저수준 HTTP 요청 코드 예시아래는 JSON 데이터를 POST로 보내고, 응답을 문자열로 읽어오는 간단한 예시 코드입니다.public static String sendJsonPost(String targetUrl, String jsonBody) throws IOException { URL url = new URL(targetUrl); Http.. 2025. 12. 9.
Spring Boot(Kotlin) 서버 기본 셋팅 — 1편. 왜 멀티 모듈 구조인가? 이 시리즈는 Spring Boot(Kotlin) 기반 서버를 처음 구성할 때“실무에서 바로 쓰는 구조”를 그대로 따라 만들 수 있도록 정리한 개발 기록입니다.기본적인 API 서버 셋팅을 잘 해놓으면,이후 어떤 프로젝트든 같은 구조로 빠르게 개발할 수 있습니다.📚 Spring Boot(Kotlin) 서버 기본 셋팅 — 시리즈 안내(1편부터 12편까지 시리즈로 구성될 예정입니다)왜 멀티 모듈 구조인가? (아키텍처 철학 & 전체 설계 편) ← 현재 글API Response 포맷 설계글로벌 예외 처리(GlobalExceptionHandler)Swagger(OpenAPI) 설정Security(JWT) 기본 골격JWT TokenProviderRedis 설정Validation 설정Logging + MDC(trace.. 2025. 11. 21.