Backend/spring cloud (MSA) 8

데이터 통합 조회 방법 설계

📌 문제MSA에서는 각 서비스가 독립적으로 DB를 관리하기 때문에, 한 서비스에서 다른 서비스의 데이터를 직접적으로 조회할 수 없다.예를 들어, 주문 목록을 조회할 때, 주문 아이템정보 제공을 위해 상품 정보를 JOIN으로 가져오지 못 하고 주문 아이템 마다 상품 서비스에 요청을 보내야 한다.이 과정에서 여러 번의 API 호출이 발생하기에 성능 저하 우려가 있었다. 📌 방법 비교✅ 1. 주문 아이템마다 상품 API 호출주문 1개 → 주문 아이템1개 마다 상품 서비스 API를 호출하여 상품 정보를 받아오고 이를 합친다.✔ 장점간단하고 직관적인 방식❌ 단점주문마다 상품 정보를 별도로 API 호출하기 때문에 네트워크 요청이 많아져 성능이 저하될 수 있음. ✅ 2. 캐시(redis)를 이용해 주문 정보 저장..

MSA 환경에서 인증/토큰 재요청

📌 문제JWT 토큰이 만료되었을 때 다시 요청을 처리하는 방법은 Refresh Token을 활용한 재발급 방식이 일반적이다.예를 들어, 게시글 작성 중 토큰이 만료 되었을 때는 사용자가 재로그인/수동 로그인 시간 연장 하지 않고 refresh 처리가 되어야 한다!!✅ 1. MSA 환경에서 JWT 인증 흐름1️⃣ 사용자 로그인 → 인증 서버(Auth Service)에서 JWT 액세스 토큰과 리프레시 토큰 발급액세스 토큰: 비교적 짧은 만료 시간 (예: 30분~1시간)리프레시 토큰: 비교적 긴 만료 시간 (예: 7일~30일)클라이언트는 액세스 토큰을 HTTP 헤더에 포함하여 API 요청2️⃣ 게이트웨이(API Gateway)에서 JWT 토큰 검증 후 해당 마이크로서비스(Post Service 등)로 요청 ..

실시간 데이터 전송

HTTP 프로토콜은 비연결성(stateless) 구조라서 서버가 클라이언트와 지속적으로 연결될 수 없음. 그래서 서버가 데이터를 실시간으로 클라이언트에게 푸시(Push)하는 것이 어려움. 이를 해결하는 방법으로 Polling, Long Polling, WebSocket, SSE가 있음! 📌 1. Polling (폴링) 방식클라이언트가 일정 주기로 서버에 요청을 보내 데이터를 갱신하는 방식.서버는 새로운 데이터가 있으면 응답하고, 없으면 빈 응답을 보냄. ✔️ 장점 구현이 단순함 (HTTP 요청/응답 패턴 그대로 활용 가능) 요청 주기를 길게 설정하면 서버 부하를 줄일 수 있음 ❌ 단점변경 사항이 없을 때도 요청을 계속 보내야 하므로 리소스 낭비 발생실시간성이 떨어짐 (요청 주기에 따라 데이터 갱신이 지..

[Kafka] 고급 설정

📌 Kafka 운영 환경에서 필요한 고급 설정기본 개념만으로도 Kafka를 사용할 수는 있지만, 실제 운영 환경에서는 더 많은 걸 알아야 한다!🔗 기본 개념(필수!)토픽, 파티션, 브로커, 컨슈머 그룹, 오프셋 이해Producer & Consumer 동작 방식기본적인 명령어 (토픽 생성, 메시지 생산/소비, 오프셋 관리)➡️ 이 정도만 알아도 로컬 환경에서 테스트하고 간단한 서비스에 적용할 수 있다!! 🚀 📌 1. 파티션 할당 전략 (Partition Assignment Strategy) ✅ 컨슈머 그룹 최적화Kafka는 여러 개의 컨슈머가 동일한 토픽을 소비할 때, 파티션을 컨슈머들에게 자동으로 할당한다. 이때 파티션 할당 전략이 중요한 역할을 한다. ➡️ 운영 환경에서는 컨슈머 그룹의 부하 분..

Kafka란?

🔍1. 이벤트 기반 아키텍처(Event-Driven Architecture)란?분산된 애플리케이션 서비스들이 이벤트를 기반으로 통신하고 서로의 동작을 야기하는 패턴을 이벤트 기반 아키텍처라고 한다.서비스들이 이벤트를 발행(publish)하고, 다른 서비스가 이를 구독(subscribe)하여 처리.Kafka, RabbitMQ, SQS, EventBridge 등과 같은 메시징 시스템을 통해 구현.⭐ 이벤트 기반 아키텍처를 사용하는 이유1️⃣ 서비스 간 결합도↓ → 각 서비스가 독립적으로 동작 가능 (확장성↑)2️⃣ 비동기 처리 → 빠른 응답 가능, 대량 트래픽 처리에 유리3️⃣ 확장성 & 유연성 → 새로운 기능 추가 시 기존 시스템에 영향 최소화  📌 2. Kafka란?Kafka는 대규모 데이터를 실시간..

Eureka란?

📌 1. Eureka란?Eureka는 Netflix에서 개발한 서비스 디스커버리 및 로드 밸런싱을 제공하는 도구  주로 Spring Cloud에서 서비스 디스커버리 솔루션으로 사용되는데, 이 경우 서비스들이 동적으로 등록되고 서비스 위치 정보를 중앙에서 관리하기 때문에 Gateway에서 각 서비스의 uri를 직접 설정할 필요없다. ✅ Eureka의 주요 개념 1️⃣ Eureka ServerEureka Server는 여러 마이크로서비스들이 서로를 찾을 수 있도록 서비스 정보를 저장하고 제공.여러 개의 Eureka 서버를 클러스터링하여 고가용성을 보장할 수 있다. 2️⃣ Eureka Client ( 서비스 등록 & 서비스 검색 )서비스가 Eureka Server에 자신을 등록하고, 다른 서비스를 찾기 위해..

GateWay란?

📌 1. GateWay란? MSA (Microservices Architecture)에서 Gateway는 여러 마이크로서비스를 단일 진입점(Entry Point)으로 통합하고 관리하는 중앙 집중식 API 라우터이다.주로 API Gateway라고 불린다. 👉 단일 진입점 설정더보기*각 서비스 port에 직접 접근이 불가능하도록 방화벽 등 네트워크 설정으로 개별 서비스 포트에 대한 외부 접속을 차단.*Spring Boot를 사용하면, server.port=8083 server.address=127.0.0.1설정하여 로컬에서만 접근 가능하도록 제한할 수 // Gateway에서 사용자 정보를 설정exchange.getRequest().mutate().header("X-User-Roles", "ROLE_USE..

Spring Cloud란?

📌 Spring Cloud란?Spring Cloud는 Spring Framework를 기반으로 한 마이크로서비스 아키텍처(MSA)에서 사용할 수 있는 도구와 라이브러리 모음!! 🛠 Spring Cloud의 주요 기능1. 서비스 디스커버리 (Service Discovery)Eureka: 마이크로서비스가 서로를 찾고 통신할 수 있도록 서비스 위치 정보를 제공한다.Consul, Zookeeper 등의 서비스 디스커버리 도구와 통합 가능. 2. API Gateway마이크로서비스를 위한 API Gateway를 제공한다.클라이언트 요청을 라우팅하고 인증, 로드 밸런싱 등 다양한 부가 기능을 제공. 3. 분산 구성 관리Spring Cloud Config를 사용하여 애플리케이션의 설정을 중앙에서 관리하고, 실시간으..