목록분류 전체보기 (91)
우당탕탕

대용량 트래픽을 위한 스프링 튜닝 팁 급하게 개발해야할 때 보통은 "일단 돌아가게 만든 후 최적화 한다" 라는 생각으로 개발을 진행하게 됩니다. 보통 이러한 접근은 대용량 트래픽이 발생할 때 치명적으로 돌아올 수 있습니다. 이번 글에서는 실제 서비스 장애를 얻으며 경험한 바탕으로, 트래픽 폭증 시 시스템을 안정적으로 유지하는 핵심 전략을 예시 코드와 함께 작성 해 보겠습니다.1. 캐싱 전략: Redis 및 Caffeine Cache 사용을 통한 DB 부하 분산"DB 호출 1회 감소" = 초당 수천 건의 트래픽 여유를 확보합니다.캐시는 자주 조회되는 데이터를 미리 저장해두는 공간입니다. 예를 들어, 인기 상품 정보를 매번 DB에서 꺼내오면 느려지니까, 한 번만 DB에서 꺼내서 캐시에 저장해두고, 다음부터는..

JPA N+1 문제 해결법 이번 포스팅에서는 JPA에서 자주 발생하는 성능 이슈인 N+1 문제와 이를 해결하는 방법들을 정리해 보려고 합니다. N+1 문제란?N+1 문제란, JPA로 엔티티를 조회할 때 연관된 엔티티를 추가로 조회하면서 불필요하게 많은 쿼리가 실행되는 현상을 말합니다. 예를 들어, 게시글 10개를 조회할 때 각 게시글의 작성자 정보를 연관엔티티로 가져온다면, 게시글 목록(10개의 게시글)을 가져오는 쿼리 1번 + 작성자 정보(게시글당 1번씩) 쿼리 10번, 총 11번의 쿼리가 실행되는 것이 대표적인 N+1 문제입니다.N+1 문제가 왜 생길까?JPA에서 연관된 엔티티는 기본적으로 지연로딩(LAZY) 방식입니다. 즉, 실제로 해당 데이터를 사용할 때마다 추가 쿼리가 실행되는 방식입니다.N+1..

Caffeine Cache (로컬 캐시, 카페인 캐시)란? 카페인 캐시 (Caffeine Cache)란?카페인 캐시는 Java8 이상에서 동작하는 고성능 인메모리(Local) 캐싱 라이브러리입니다. 스프링의 공식 지원 덕분에 손쉽게 연동이 가능하며, 서버 메모리(RAM)에서 데이터를 즉시 읽고 쓰기 때문에 네트워크 IO가 없이 빠른 응답속도를 자랑합니다.특징카페인 캐시의 특징으로는 네트워크 트래픽 없이 서버 메모리에서 데이터를 접근해서 성능이 빠르고, Window TinyLFU 알고리즘을 사용하여 자주 사용하거나 최근 사용한 데이터 위주로 관리가 됩니다.(최적화된 캐시 정책) 또한 용량, 시간, 참조 기반의 다양한 캐시 만료옵션을 제공하며, application.yml 또는 Config를 통해 간편하게 ..

스프링 외부 API 호출 방법 비교: RestTemplate, WebClient, FeignClient, RestClient 이번 포스팅에서는 스프링에서 외부 API ( OpenApi )를 호출하는 대표적인 방법인 RestTemplate, WebClient, FeignClient, RestClient를 비교해 보려고 합니다. 각각의 특징과 장단점을 먼저 살펴보고 어떤 상황에서 어떤 방식이 제일 효율적인지 알아보겠습니다.1. RestTemplateRestTemplate은 스프링 3.0부터 제공된 HTTP 클라이언트로, 간단한 API 호출을 위해 많이 사용되었습니다. 사용법 또한 간단하여 많이 사용해 왔지만 스프링 5.0 이후로는 더 이상 새로운 기능이 추가되지 않고 유지보수만 진행 중인 상태입니다.특징으..

Spring Boot로 공공데이터 포털의 데이터로 나만의 서비스 만들기 1편 안녕하세요 이번 편에서는 개발에 들어가기 전 공공데이터 포털의 API를 활용하기 위해 활용신청을 진행하는 방법을 작성해 보겠습니다.공공데이터포털이란?공공데이터포털이란 다양한 공공 데이터를 제공하며, 이를 활용해 자신만의 서비스를 개발할 수 있는 플랫폼입니다.데이터를 활용하기 위해선 첫 번째로 공공데이터포털 ( https://www.data.go.kr )에 접근해서 회원가입을 진행해야 합니다!아래 링크를 통해 포털에 들어가 회원가입을 진행해 줍니다. 공공데이터 포털국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있..

Spring Boot로 공공데이터 포털의 데이터 불러오기 안녕하세요!무작정 따라하기 1편 시리즈를 작성하고 시간이 조금 지났는데 다시 2편부터 쭉 적어보려고 합니다. 이번 편에서는 SpringBoot로 공공데이터 포털(https://www.data.go.kr/)의 데이터를 불러와서 화면에 뿌려주는 서비스를 개발해 보겠습니다. 이 시리즈는 1편 시리즈와 같이 개발에 대한 기초 지식이 없는 초보자부터 어느 정도 경험이 있는 중급 개발자까지, 누구나 따라 하면서 만들 수 있는 실습 중심의 콘텐츠로 구성될 예정입니다.이후 원하시는 다른주제가 있다면 댓글로 남겨주시면 참고하여 다음 편을 작성해 보겠습니다.구성내용 및 목표이전과 같이 기본적으로 Spring Boot와 Java를 활용하여 개발을 진행할 계획이며, ..