본문 바로가기

전체 글

(26)
Django ORM Auto Commit 개요최근 Django 프레임워크를 사용하는 새로운 회사로 이직하게 되었습니다. 이전 회사에서는 주로 Spring Boot와 NestJS 프레임워크를 사용했지만, Django에 대해서는 깊게 공부해본 적이 없습니다. 새로운 환경에 빠르게 적응하고 회사에 기여하기 위해, Django ORM을 학습하고자 합니다. 그래서 이번 글에서는 Django ORM의 특징 중 하나인 Auto Commit에 대해 알아보겠습니다.   Auto Commit이란?Auto Commit은 데이터베이스 작업(save, update, delete ...)이 호출되는 즉시 커밋되는 트랜잭션 처리 방식입니다. Spring Boot의 경우 기본적으로 Auto Commit이 false로 설정되어 있습니다. 또한 @Transactional 어노..
Spring MVC, Spring Webflux SSE 성능 비교 개요많은 사용자 트래픽이 예상되는 프로젝트에서 SSE(Server-Sent Events)를 활용해 사용자에게 데이터를 스트림으로 전송해야 하는 요구사항이 생겼습니다. 이러한 환경에서 서버 성능 이슈로 SSE를 빠르게 전달하지 못하면 UX가 심각하게 나빠지기 때문에 효율적인 요청 처리가 무엇보다 중요합니다. 그렇기에 프로젝트를 시작하기 전, Spring Boot 환경에서 어떤 방식으로 SSE를 구현할지 고민했습니다.  Spring에서 SSE를 구현하려면 두 가지 방법이 있습니다.1. SseEmitter를 WebMVC에서 사용하는 방식2. WebFlux 환경에서 Flux를 사용하는 방식. 많은 사용자 요청을 효율적으로 처리해야 하기 때문에 두 가지 방법의 성능테스트 해보면서 더 나은 성능을 보이는 방법을 찾..
Redis + Spring AOP를 활용한 Rate Limiter 기능 구현 개요현재 진행중인 개인 프로젝트에선 Rate Limiter 기능이 적용되어있지 않습니다. 이 경우 만약, 악성 사용자가 서버를 다운시키기 위해 짧은 시간 내에 다량의 영상을 업로드할 경우, 서버에 심각한 부하가 발생할 수 있고, 한 영상에 매크로성 댓글이 여러 개 달리면 사용자 경험에 부정적인 영향을 줄 수 있습니다. 이러한 문제들을 예방하고자 Rate Limiter를 적용하기로 결정했습니다. Rate Limiter를 적용하기 전 고민이 있었는데요, Resilience4j, Bucket4j와 같이 기존에 존재하는 라이브러리를 사용해 구현할지, 아니면 Redis를 이용해 직접 구현할지 고민되었습니다. 라이브러리를 사용하면 구현이 간편하다는 장점이 있습니다. 하지만 스프링 애플리케이션 메모리를 직접 사용하기..