[MSA] Spring Boot + MSA (2) (Feat : Kafka)
·
Spring/MSA
Kafka Kafka란, 분산 메시지 스트리밍 플랫폼으로, 여러 개의 서비스가 분리되어 있더라도 각각의 서비스간에 데이터를 실시간으로 전송 및 처리할 수 있도록 돕는 역할을 한다. 이를 통해 마이크로 서비스간의 데이터 동기화 상태를 유지할 수 있다. 위의 그림을 보면 알 수 있듯이 Kafka Cluster는 이벤트 메시지 브로커를 담당한다. Producer에게 이벤트를 받고, 해당 이벤트를 Consumer 가 가져갈 수 있게 한다.  내부 구조는 다음과 같다.브로커브로커는 Kafka 클러스터의 핵심 구성 요소로, Kafka 서버이다.여러 개의 브로커가 모여 Kafka Cluster를 형성하며, 각 브로커는 특정 파티션 데이터를 관리한다.Producer가 보낸 메시지를 받아 저장하고, Consumer가 메..
[MSA] Spring Boot + MSA (1)
·
Spring/MSA
SpringBoot에서의 MSA는 크게 3가지로 분류된다.서비스 등록 센터 - Eureka ServerAPI 라우팅 - API Gateway서비스 인스턴스 - Eureka Cilent 그리고 Spring 환경에선 위의 3가지를 사용해 MSA를 편리하게 구축하고자 Spring Cloud 를 사용한다.  서비스 등록 센터 - Eureka Sever Eureka Client 에 등록된 각 서비스(Member, Order, Product …)를 관리하는 서버이다.   build.gradleimplementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'testImplementation 'org.springframework.b..
[JPA] 여러 트랜잭션이 하나의 영속성 컨텍스트?
·
Spring/JPA
스레드는 서버에 요청을 보낸 사용자와 같다.  난 이 때 까지 JPA를 사용할 때, 하나의 스레드 당 하나의 영속성 컨텍스트를 부여받는다고 생각했다.  그런데 자바 ORM 표준 JPA 프로그래밍의 15장에서 이 문장을 읽고 머리가 아파졌다. 문제는 OSIV처럼 영속성 컨텍스트의 범위를 트랜잭션 범위보다 넓게 사용해서 여러 트랜잭션이 하나의 영속성 컨텍스트를 사용할 때 발생한다.- 15장, 645페이지  하지만 스레드와 영속성 컨텍스트의 관계에 대한 정보를 찾아보니까, 아래의 답변 또한 찾을 수 있었다. 영속성 컨텍스트는 스레드마다 독립적으로 생성되며, 스레드 간에 공유되지 않습니다. 따라서 개별 스레드에서 동작하는 엔티티 매니저는 각자 독립된 영속성 컨텍스트를 가지게 됩니다.- 인프런 AI 인턴   내가..
[JPA] @Embedded, @Embeddable
·
Spring/JPA
DDD를 공부하다가 한 엔티티에 여러 객체들을 사용할 일이 많아져서 방법을 찾다가 @Embedded, @Embeddable 을 사용해야 한다는 것을 봤다.  이게 뭔지, 어떨 때 사용하는지 알아보자! 😎 주문 엔티티가 다음과 같다.(참고로 도메인 주도 개발 중이기 때문에 엔티티 코드가 좀 더러워요..)@Entity@NoArgsConstructorpublic class Order { @EmbeddedId private OrderId id; private OrderState orderState; @Embedded private Orderer orderer; @ElementCollection(fetch = FetchType.LAZY) private List orderLi..