Backend/spring cloud (MSA) 10

MSA 필수 개념

📌 1. 서비스 등록 & 통신 ✅ 1-1. Spring CloudSpring Framework를 기반으로 한 마이크로서비스 아키텍처(MSA)에서 사용할 수 있는 도구와 라이브러리 모음!!서비스 간 통신, 설정 관리, 로드밸런싱, 장애 처리, 메시징 등을 편리하게 지원 📊 주요 기능 / 구성 요소기능Spring Cloud 모듈설명서비스 등록 & 검색Eureka서비스가 어디에 있는지 등록하고 조회로드밸런싱Spring Cloud LoadBalancer클라이언트 측에서 요청을 여러 인스턴스로 분산API GatewaySpring Cloud Gateway단일 진입점에서 라우팅, 필터링, 로드밸런싱 지원설정 관리Spring Cloud Config분산 서비스의 공통 설정을 중앙에서 관리메시징Spring Cloud ..

OpenFeign: MSA 서비스 간 통신

📌MSA에서의 HTTP 클라이언트 사용MSA 환경에서는 각 서비스가 독립적으로 동작하며, 서로의 API를 호출해야 한다. 이때 다양한 HTTP 클라이언트를 사용할 수 있으며, 성능과 유지보수를 고려해 적절한 방식을 선택해야 한다. ✅ HTTP 클라이언트는 MSA에서만 사용할까?➡️ 아니다! 일반적인 모놀리식 아키텍처에서도 다른 외부 API 호출을 위해 HTTP 클라이언트를 사용한다.➡️ 하지만 MSA에서는 서비스 간 통신이 필수적이므로, OpenFeign 같은 라이브러리가 특히 많이 사용된다. ✅ 일반적인 API 호출과의 차이점은?➡️ 보통 API 호출은 단순한 HTTP 요청이지만, MSA에서는 더 세밀한 HTTP 클라이언트 설정이 필요하다.서비스 디스커버리(Eureka) 를 이용한 동적 URL 매핑로..

Elasticsearch란?

📌 1. Elasticsearch란?Elasticsearch는 분산 검색 및 분석 엔진으로, 대규모 데이터를 빠르게 검색하고 분석하는 데 최적화된 시스템!!검색, 로그 수집, 데이터 분석 등의 용도로 사용된다. ✅ 1-1. Elasticsearch의 주요 개념인덱스(Index)데이터를 검색하기 위해 구성된 기본적인 저장 단위. 각 인덱스는 문서(document)의 집합으로 구성, 이 문서들은 JSON 형식으로 저장된다.샤드(Shard)와 레플리카(Replica)Elasticsearch는 데이터를 샤드(shard)로 나누어 여러 서버에 분산 저장, 이를 레플리카(replica)로 복제하여 고가용성을 보장한다.검색 및 분석사용자는 검색 쿼리를 통해 데이터를 빠르게 찾고, 분석할 수 있다.  전체 텍스트 검..

데이터 통합 조회 방법 설계

📌 문제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란?

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

Eureka란?

📌 1. Eureka란?Eureka는 Netflix에서 개발한 서비스 디스커버리 도구 서비스들이 동적으로 등록되고 서비스 위치 정보를 중앙에서 관리, Gateway에서 각 서비스의 uri를 직접 설정할 필요없다. ✅ Eureka의 주요 개념 1️⃣ Eureka ServerEureka Server는 여러 마이크로서비스들이 서로를 찾을 수 있도록 서비스 정보를 저장하고 제공.여러 개의 Eureka 서버를 클러스터링하여 고가용성을 보장할 수 있다. 2️⃣ Eureka Client ( 서비스 등록 & 서비스 검색 )서비스가 Eureka Server에 자신을 등록하고, 다른 서비스를 찾기 위해 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)에서 사용할 수 있는 도구와 라이브러리 모음!! 1️⃣ 목적여러 개의 서비스(마이크로서비스)를 분산 환경에서 관리서비스 간 통신, 설정 관리, 로드밸런싱, 장애 처리, 메시징 등을 편리하게 지원 2️⃣ 특징Spring Boot 기반 → 기존 Spring 프로젝트와 쉽게 통합 가능MSA에서 공통으로 필요한 기능들을 표준화된 방식으로 제공클라우드 환경(AWS, GCP, Azure)에서도 쉽게 확장 가능 3️⃣ 주요 기능 / 구성 요소기능Spring Cloud 모듈설명서비스 등록 & 검색Eureka서비스가 어디에 있는지 등록하고 조회로드밸런싱Spring Cloud LoadBal..