[CS] 오픈소스 메시지 브로커 RabbitMQ
·
Computer Science
1. 등장 배경오늘날 IT 시스템은 점점 더 분산화되고 복잡해지고 있습니다.소위 MSA라는 단일 애플리케이션이 아닌 여러 개의 독립적인 서비스로 구성되는 마이크로서비스 아키텍처가 널리 사용되고 있죠.이러한 분산 시스템 환경에서는 서비스 간의 통신과 데이터 교환이 매우 중요해졌습니다. 예를 들어, 전자상거래 웹사이트를 생각해봅시다.주문 처리 시스템, 재고 관리 시스템, 배송 시스템, 결제 시스템 등 여러 개의 독립적인 서비스로 구성되어 있습니다.이러한 서비스들은 서로 연계되어 작동해야 하며, 데이터와 이벤트를 효율적으로 전달하고 조율해야 합니다. 과거에는 서비스 간 통신을 위해 직접 연결(Point-to-Point) 방식을 사용했습니다. 예를 들어, 주문 처리 시스템이 직접 재고 관리 시스템과 연결을 맺고..
[Spring / JPA] Server-Sent-Events(SSE)와 OSIV
·
Spring
1. 서론 요즘 대부분 Spring Boot JPA를 많이 사용하고 추가로 SseEmiters로 실시간 알림기능 구현을 하려고 하면 대다수 IOException : Broken Pipe, Connection is not available, request timed out after 30004ms 이런 에러가 발생할 것입니다. 원인은 JPA의 영속성 컨텍스트, OSIV가 true로 설정되서 생기는 문제입니다. 이 글에서는 OSIV가 뭔지 정확히 왜 이런 에러가 생기는 건지 알아보고자 합니다. 2. 프록시 객체와 지연로딩 2 - 1. 프록시란? 프록시는 실제 클래스를 상속 받아서 만들어진 가짜 객체라고 할 수 있습니다. 이러한 프록시 객체는 실제 객채의 참조를 보관하는 특징을 가지고 있어 프록시 객체를 통해..
[Spring] Spring Boot Redis 사용하기 / 이메일 인증 유효시간
·
Spring
Redis는 key-value 구조로 데이터를 저장하는 In-memory 기반의 데이터베이스 시스템입니다. Spring boot 에선 어떻게 구현하는지 알아봅시다. 1. 먼저 Redis란? 먼저 Redis가 어떤건지는 블로그 다른 게시글에 작성해놨습니다. [CS / DataBase] 인메모리 데이터 저장소 Redis, 왜 사용할까? 개발을 하면서 트랜잭션의 속도를 어떻게 하면 줄일 수 있을까? 고민하면서 찾아보면 Redis라는 시스템을 접하게 된다. 그럼 이 Redis는 무엇일까? 1. 레디스(Redis) 란? Redis의 풀네임에서 할 수 있듯 repeater2487.tistory.com 2. Spring Boot에서 Redis 사용하기 2 - 1. 기본 설정 [ 의존성추가 ] 저는 대게 gradle를..
[LoaTodo / Spring] JPA 영속성 컨텍스트 더티체킹 VS JPQL로 벌크업데이트
·
Project/LoaTodo
1. 서론 프로젝트에서 JPA를 사용하여 CRUD 중 Update를 구현할 때,보통 변경감지(Dirty Checking)를 이용합니다. Entity를 조회하여 조회된 Entity 데이터를 변경만 하면 데이터 베이스에 자동으로 반영이 되도록 하는 기능입니다. 1 - 1. 영속성 컨텍스트 JPA에서는 Entity Manager를 통해 데이터 베이스 작업을 처리합니다. Entity Manager는 내부적으로 영속성 컨텍스트라는 메모리 영역을 가지며 이 안에 데이터베이스로부터 조회한 Entity 객체들이 저장되어 있습니다. 1 - 2. 영속성 컨텍스트 변경감지(더티 체킹) JPA는 트랜잭션 되는 순간 내부적으로 flush()가 호출됩니다. 그때 엔티티와 1차 캐시 내의 스냅샷(최초 상태)을 비교합니다. 비교했을..
[Java / Spring] @RequestMapping, @PatchVariable 있을때? 없을때?
·
Spring
Spring으로 API를 만들다보면 @RequestMapping에 @PatchVariable이 있을때도 있고 없을때도 있다. 1. @RequestMapping이란? Spring 개발 시 특정 URL로 요청(Request)을 보내면 Controller에서 어떠한 방식으로 처리할지 정의 이때 들어온 요청을 특정 method와 매핑하기 위해 사용하는 어노테이션 DispatcherServlet이 Controller 파일을 찾고, 논리적 주소가 매핑된 Method를 찾음 @RestController public class MainController { @RequestMapping(value = "/main", method = RequestMethod.GET) public String Main(...) { ... ..
[Spring / JPA] 일대다 매핑과 빌더 패턴
·
Spring
📕 JPA의 일대다 매핑 관계 📗 엔티티 설계 다음과 같이 Spiring JPA와 Lombok을 사용한 Member 와 Characters 간 1:N 관계가 있다고 가정을 하자 [Member] @Entity @Getter @Setter @NoArgsConstructor public class Member extends BaseTimeEntity { /** * 회원 목록 테이블 */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "member_id") private long id; @Column(unique = true) private String username; private String password; @Enumerat..
마볼링
'Spring' 태그의 글 목록