[Spring] 실시간 알림 DB 부하 개선 사례 (80% 감소)
0. 들어가며 이번 사례는 실제로는 NestJS 기반 프로젝트에서 발생한 문제이다. 다만 포스팅에서는 내가 부족하다고 느끼는 Spring 실전 사례 인사이트를 보강하기 위해, 시나리오와 예시 코드를 Java/Spring 환경으로 재구성했다. 아키텍처적 아이디어와 개선 방식 자체는 ...
0. 들어가며 이번 사례는 실제로는 NestJS 기반 프로젝트에서 발생한 문제이다. 다만 포스팅에서는 내가 부족하다고 느끼는 Spring 실전 사례 인사이트를 보강하기 위해, 시나리오와 예시 코드를 Java/Spring 환경으로 재구성했다. 아키텍처적 아이디어와 개선 방식 자체는 ...
1. 들어가며 지금까지 JPA 시리즈에서는 EntityManager, N+1 문제, 트랜잭션 관리, Lock 전략을 다뤘다. 이번 포스팅에서는 JPA의 또 하나 중요한 특징인 1차 캐시(Persistence Context Cache)를 정리 해보려 한다.
1. Lock 전략 동시성 환경에서는 여러 트랜잭션이 동시에 같은 데이터에 접근할 수 있기 때문에, 정합성을 보장하기 위해 락(Lock) 전략이 필요하다.
1. Transaction 트랜잭션은 데이터베이스의 일관성을 보장하기 위한 방법으로, ACID 원칙을 따른다. 원자성(Atomicity): 전부 수행되거나 전부 취소된다. 일관성(Consistency): 트랜잭션 전후로 데이터 무결성이 유지된다. 격리성(Isolatio...
1. N+1 문제 ORM을 사용하면 EntityManager를 통해 객체와 DB간 매핑이 자동으로 처리되므로 개발자는 데이터를 객체로 다루기만 하면 된다. 하지만 이 편리함 뒤에는 몇가지 성능 문제가 숨어있으며, 그중 대표적인 것이 N+1 문제다.
1. 시작하며 그동안 여러 언어와 프레임워크에서 ORM (Object Relational Model)을 다뤄왔다. Golang : grom, go-pg TypeScript : TypeORM Java : JPA
Spring Boot와 Clean Architecture Spring Boot의 3-Tier 아키텍처와 Clean Architecture는 소프트웨어 설계에서 계층화를 통해 코드의 유지보수성과 확장성을 높이는 것을 목표로 한다. 두 아키텍처 모두 명확한 계층 분리를 통해 책임을 분...
Clean Architecture: 유지보수성과 확장성을 극대화하는 아키텍처 패턴 소프트웨어 개발의 궁극적인 목표는 높은 유지보수성과 확장성을 갖춘 시스템을 구축하는 것이다. 이를 위해서는 명확한 아키텍처 패턴을 적용하는 것이 중요하다. Clean Architecture는 이러...
SOLID 원칙: 깨끗한 아키텍처를 위한 기초 개념 소프트웨어 개발에서 유지보수성과 확장성을 높이기 위해 여러가지 설계 원칙이 있다. 그중에서도 특히 중요한 것이 바로 SOLID 원칙이다. SOLID 원칙은 객체지향 설계에서 지켜야 할 다섯가지 기본 원칙을 의미하며, 코드의 품질을...
2년간 서비스에 GO 와 GRPC 를 사용하며 개인적으로 느낀점에 대해 정리할 필요성을 느꼈다. 오랜만에 작성하는 포스팅