스프링 클라우드 기반 MSA 구성 - Load Balancer
1. 개요 서비스가 스케일 아웃되면 동일한 서비스의 인스턴스가 여러 개 뜬다. place-service가 3개 떠 있다면, recommendation-service는 어떤 인스턴스로 요청을 보내야 할까? 이 역할을 Load Balancer(로드 밸런서)가 담당한다. 여러 인스턴스에 요청을 고르게 분산시켜 특정 인스턴스에 부하가 집중되지 않도록 ...
1. 개요 서비스가 스케일 아웃되면 동일한 서비스의 인스턴스가 여러 개 뜬다. place-service가 3개 떠 있다면, recommendation-service는 어떤 인스턴스로 요청을 보내야 할까? 이 역할을 Load Balancer(로드 밸런서)가 담당한다. 여러 인스턴스에 요청을 고르게 분산시켜 특정 인스턴스에 부하가 집중되지 않도록 ...
1. 개요 이전 글에서 Service Registry(Eureka Server)를 설명했다. Eureka Server는 전화번호부 서버다. 이번에는 각 서비스가 그 전화번호부에 자신을 등록하고, 타 서비스를 조회하는 클라이언트 쪽 — Service Discovery(Eureka Client)를 다룬다. Service Discovery는 크게 두...
1. 개요 MSA에서 서비스는 언제든 새 인스턴스가 추가되거나 기존 인스턴스가 내려갈 수 있다. 스케일 아웃(Scale Out)이 일어나면 동일 서비스의 IP가 여러 개가 된다. 이 동적인 환경에서 클라이언트가 어떤 IP로 요청을 보내야 하는지 어떻게 알 수 있을까? 이 문제를 해결하는 것이 Service Registry다. 모든 서비스 인스턴...
1. 개요 MSA(Microservice Architecture)를 처음 구성할 때 가장 먼저 마주치는 질문이 있다. “클라이언트가 서비스가 여러 개인데, 주소를 몇 개나 알아야 하지?” 예를 들어 서울 데이트 앱처럼 user-service(8081), place-service(8082), recommendation-service(80...
1. 개요 03장에서 Tool, Memory, Middleware의 기초를 다졌다면, 04장에서는 에이전트 내부를 더 정밀하게 제어하는 법을 배운다. 핵심 키워드는 두 가지다. Runtime(에이전트가 일할 때 참고하는 공유 환경)과 State(에이전트가 일하면서 만들어내는 결과물)다. 이 두 개념을 이해하고 나면 커스텀 미들웨어로 에이전트의 ...
1. 실습 구조 기존 Member와 Book에 LoanRecord(대출 기록)를 추가해서 연관관계 매핑 전체를 단계별로 실습한다. Step 1. Book에 @OneToMany 양방향 추가 Step 2. Member에 @OneToMany + cascade + orphanRemoval 추가 Step 3. LoanRecord 엔티티 작성 (연관관계 ...
1. 영속성 전이 (Cascade) 영속성 전이는 부모 엔티티에 특정 작업을 수행할 때 자식 엔티티에도 자동으로 같은 작업이 전파되는 기능이다. 연관관계 매핑과는 별개의 기능이고, @OneToMany / @ManyToOne 어노테이션의 cascade 속성으로 설정한다. // cascade 없을 때 — 각각 persist 필요 Member mem...
1. @ManyToMany를 사용하면 안 되는 이유 Member와 Book은 다대다(M:N) 관계다. 한 회원이 여러 책을 빌릴 수 있고, 한 책이 여러 회원에게 빌려질 수 있다. JPA는 @ManyToMany로 이 관계를 표현할 수 있지만 실무에서는 절대 사용하지 않는다. // @ManyToMany — 사용 금지 @Entity public c...
1. 연관관계 주인 개념 객체 세계에서 양방향 매핑은 사실 단방향 매핑 두 개다. Member가 LoanRecord를 참조하고, LoanRecord도 Member를 참조한다. 그런데 DB에서 FK는 하나다. loan_record 테이블의 member_id 컬럼 하나가 양쪽의 관계를 표현한다. 두 객체 중 어느 쪽의 참조가 변경될 때 이 FK를 ...
1. 연관관계 매핑이 필요한 이유 Phase 1에서 다뤘던 JDBC의 패러다임 불일치 중 하나가 연관관계였다. 객체는 참조로 다른 객체를 가리키지만, DB는 FK(외래 키)로 연관을 표현한다. JPA의 연관관계 매핑은 이 불일치를 해결한다. 연관관계 매핑을 이해하려면 항상 세 가지 개념을 함께 생각해야 한다. 방향: 단방향(한쪽만 참조)...