스프링 클라우드 기반 MSA 구성 - Circuit Breaker
1. 개요 MSA에서는 서비스들이 서로 HTTP 호출로 연결되어 있다. 만약 ai-service가 다운됐는데 recommendation-service가 계속 ai-service를 호출한다면 어떤 일이 벌어질까? 호출 스레드가 타임아웃을 기다리며 쌓이고, 결국 스레드 풀이 고갈되어 recommendation-service까지 죽는다. 이 현상을 ...
1. 개요 MSA에서는 서비스들이 서로 HTTP 호출로 연결되어 있다. 만약 ai-service가 다운됐는데 recommendation-service가 계속 ai-service를 호출한다면 어떤 일이 벌어질까? 호출 스레드가 타임아웃을 기다리며 쌓이고, 결국 스레드 풀이 고갈되어 recommendation-service까지 죽는다. 이 현상을 ...
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. 실습 도메인 소개 이론으로 배운 영속성 컨텍스트 개념을 실제 코드로 확인하는 실습이다. 도메인은 도서 대출 시스템으로, Book 엔티티 하나로 생명주기 · 1차 캐시 · 쓰기 지연 · 더티 체킹 전체를 단계별로 체험한다. Step 1. Book 엔티티 작성 ← @Entity, @Column, @Enumerated 적용 S...
1. 프로젝트 생성 📌 Spring Initializr 설정 (3.x) start.spring.io에서 프로젝트를 생성할 때 선택해야 할 항목은 다음과 같다. 항목 선택값 이유 Project Gradle - Kotlin Kotlin D...
1. JDBC의 한계 📌 JDBC란 JDBC(Java Database Connectivity)는 자바 표준 API로, 자바 애플리케이션이 관계형 데이터베이스에 접근할 수 있게 해주는 인터페이스 명세다. java.sql 패키지 하위에 정의된 Connection, PreparedStatement, ResultSet 등이 모두 JDBC 스펙에 해당한...