목록분류 전체보기 (281)
우당탕탕
FastAPI vs Django 프로젝트에서의 선택 기준 최근 Python 기반 백엔드 프레임워크로 FastAPI와 Django가 큰 인기를 얻고 있습니다. 둘 다 강력한 기능을 제공하지만, 실제 프로젝트에서 어떤 기준으로 선택해야 할지 고민하는 개발자들이 많습니다. 이번 글에서는 두 프레임워크의 특징, 장단점, 실제 프로젝트에서 선택 기준등을 정리해 보려고 합니다.FastAPI란?FastAPI는 Python 3.6+ 기반의 최신 웹 프레임워크로, 비동기(Async) 지원과 뛰어난 성능, 자동화된 API 문서화 기능으로 최근 각광받고 있습니다.FastAPI의 핵심 특징비동기 지원(Async/Await): 높은 동시성 처리와 빠른 응답 속도 제공자동 문서화: OpenAPI, Swagger UI를 통한 AP..
QueryDSL vs MyBatis vs JPA 실무에서 언제 쓰는 게 좋을까? 스프링 백엔드 개발을 하다 보면, JPA, MyBatis, QueryDSL 중 어떤 기술을 선택할지 고민하게 됩니다. 각각의 특징과 장단점을 한번 살펴보면서 어떤 상황일 때 어떤 기술이 적합한지 한번 찾아보도록 하겠습니다.1. JPA 특징- 객체와 테이블을 매핑하여 SQL 없이 CRUD 작업 가능- 영속성 컨텍스트로 변경 감지 (Dirty Checking), 지연 로딩 (Lazy Loading) 지원 - Spring Data JPA로 기본 CRUD 메서드 자동 생성 ( findAll(), save() 등 )영속성 컨텍스트란? -> https://mozzi-devlog.tistory.com/66장점- 생산성 극대화 : 반복적인..
JPA 영속성 컨텍스트 쉽게 알아보기 이번 포스팅에서는 JPA를 처음 접하는 분들도 쉽게 이해할 수 있도록, 영속성 컨텍스트(Persistence Context)가 뭔지 알아보도록 하겠습니다.영속성 컨텍스트란?영속성 컨텍스트는 말 그대로 "엔티티(객체)를 영구적으로 저장하고 관리하는 공간"입니다.조금 더 쉽게 말하면,JPA가 엔티티를 직접 데이터베이스(DB)에 바로 저장하지 않고, 중간에 잠깐 보관하고 관리하는 "임시 창고"라고 생각하시면 됩니다.왜 이런 창고가 필요할까?JPA는 단순히 DB에 바로 데이터를 넣고 빼는 게 아니라, "엔티티 매니저 (EntityManager)"라는 친구를 통해 이 창고(영속성 컨텍스트)에 먼저 엔티티를 넣고 관리합니다.이렇게 하는 이유는 1. 성능을 높이고 ( 캐시 효과 ..
JPA Auditing을 활용한 생성일, 수정일 자동 관리하기 이번 글에서는 JPA에서 엔티티의 생성일(createdDate)와 수정일(modifiedDate)을 자동으로 관리하는 방법인 JPA Auditing에 대해 작성해보려 합니다.실무에서 게시글, 회원, 주문 등 거의 모든 엔티티에는 "언제 만들어졌는지", "언제 마지막으로 수정된 것인지"와 같은 정보가 거의 필수적으로 들어가게 됩니다. 매번 직접 값을 넣어주는 건 번거롭고, 실수도 생길 수 있기 때문에 보통 자동으로 생성해 주는 JPA Auditing과 같은 기능을 많이 사용하게 됩니다.JPA Auditing이란?JPA Auditing은 엔티티가 저장되거나 수정될 때 특정필드(ex: 생성일, 수정일, 생성자, 수정자 등)의 값을 자동으로 채워주는..
대용량 트래픽을 위한 스프링 튜닝 팁 급하게 개발해야할 때 보통은 "일단 돌아가게 만든 후 최적화 한다" 라는 생각으로 개발을 진행하게 됩니다. 보통 이러한 접근은 대용량 트래픽이 발생할 때 치명적으로 돌아올 수 있습니다. 이번 글에서는 실제 서비스 장애를 얻으며 경험한 바탕으로, 트래픽 폭증 시 시스템을 안정적으로 유지하는 핵심 전략을 예시 코드와 함께 작성 해 보겠습니다.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..
