전체 글 48

MSA 성능 최적화 전략

MSA 성능 최적화 전략마이크로서비스 아키텍처(MSA)는 각 서비스가 독립적으로 배포되고 통신하기 때문에, 성능 관리와 최적화가 필수적이다.대규모 트래픽 환경에서는 작은 지연도 전체 시스템 성능에 영향을 줄 수 있으므로, 캐싱, 메시지 큐, 비동기 처리를 전략적으로 활용해야 한다.1. 캐싱 전략으로 응답 속도 개선MSA에서는 반복적으로 조회되는 데이터가 많다.이때 캐싱을 활용하면, 데이터베이스 접근을 줄이고 서비스 응답 속도를 크게 향상시킬 수 있다.대표적인 캐싱 도구Redis: 분산 캐시로 자주 조회되는 데이터를 메모리에 저장장점: 빠른 읽기 속도, TTL 설정 가능, 클러스터링 지원활용 예: 사용자 세션, 상품 조회 결과, 추천 목록Caffeine: Java 애플리케이션 내에서 동작하는 로컬 캐시장점..

이벤트 드리븐

MSA에서 이벤트 드리븐 아키텍처와 Spring Cloud Stream 이해하기마이크로서비스 아키텍처(MSA)에서는 각 서비스가 독립적으로 배포되고 서로 통신하기 때문에, 서비스 간 연결과 데이터 흐름을 관리하는 방법이 중요하다. 그중 하나가 이벤트 드리븐 아키텍처(Event-Driven Architecture, EDA)다.1. 이벤트 드리븐 아키텍처란?EDA는 시스템에서 발생하는 상태 변화나 행동(이벤트)을 중심으로 동작하는 설계 방식이다.예를 들어, 사용자가 쇼핑몰에서 주문을 하면, 주문 생성 이벤트가 발생하고 이를 재고, 결제, 배송 서비스가 비동기적으로 처리한다.핵심 포인트는 서비스 간 결합도가 낮다는 것이다. 이벤트를 중심으로 통신하므로, 한 서비스가 변해도 다른 서비스에 큰 영향을 주지 않는다..

분산추적

MSA에서 분산 추적과 모니터링 이해하기마이크로서비스 아키텍처(MSA)에서는 하나의 요청이 여러 서비스 사이를 거치며 처리된다.그런데 서비스가 많아지고 호출 관계가 복잡해지면, 문제가 생겼을 때 어디서 원인이 발생했는지 찾기 어렵다.이럴 때 필요한 것이 분산 추적(Distributed Tracing)이다.1. 분산 추적이란?분산 추적은 여러 서비스에 걸친 요청의 흐름을 체계적으로 추적하고 시각화하는 방법이다.핵심 개념은 다음과 같다.트레이스(Trace): 하나의 요청이 여러 서비스를 거치며 생성되는 전체 흐름스팬(Span): 각 서비스에서 수행되는 단위 작업컨텍스트(Context): 트레이스와 스팬 정보를 연결해주는 메타데이터이를 통해, 어떤 서비스에서 병목이 발생하는지, 어디서 오류가 생겼는지를 명확히..

Config

MSA에서 Spring Cloud Config 이해하기1. Spring Cloud Config란?MSA 환경에서 서비스가 여러 개로 분산되면, 각 서비스의 설정을 일일이 관리하기 어려워진다.이때 Spring Cloud Config는 중앙에서 설정을 관리하고 배포하는 프레임워크다.주요 특징:중앙 집중식 구성 관리: 모든 서비스의 설정을 한 곳에서 관리할 수 있다환경별 구성 지원: 개발, 테스트, 운영 환경마다 다른 설정 적용 가능실시간 변경 반영 가능: 설정을 바꿔도 애플리케이션을 재시작하지 않고 반영 가능즉, Config는 MSA의 분산된 서비스 환경에서도 설정을 일관되게 관리할 수 있게 돕는다.2. Config 서버와 클라이언트 구조Spring Cloud Config는 크게 서버(Config Serve..

보안구성

MSA에서 알아야 할 보안과 JWT 인증1. MSA에서 보안이 중요한 이유마이크로서비스 아키텍처(MSA)에서는 각 서비스가 독립적으로 배포되고 서로 통신한다.서비스가 분산되어 있기 때문에, 한 서비스에서 발생한 보안 취약점이 다른 서비스까지 영향을 줄 수 있다.따라서 데이터 보호, 인증/권한 관리, 통신 암호화는 필수다.한마디로, MSA에서는 ‘서비스 하나만 안전해도 충분’이 아니라 전체 아키텍처 수준에서 보안성을 확보해야 한다.2. OAuth2로 토큰 기반 인증 이해하기OAuth2는 토큰 기반 인증과 권한 부여를 지원하는 프로토콜이다.클라이언트 애플리케이션이 사용자의 권한을 얻어 보호된 리소스에 접근할 수 있도록 한다.핵심 역할리소스 소유자: 데이터의 실제 소유자클라이언트: 데이터를 요청하는 애플리케이..

API 게이트웨이

Spring Cloud Gateway 정리1. API 게이트웨이란?API 게이트웨이는 클라이언트와 여러 백엔드 서비스 사이의 중간 관문 역할을 하는 서버다.클라이언트의 요청을 받아 적절한 서비스로 라우팅인증/권한 검증, 로깅, 모니터링, 요청 필터링 같은 부가 기능 제공마이크로서비스 아키텍처에서 단일 진입점(Single Entry Point) 역할즉, 여러 서비스가 있을 때, 클라이언트는 게이트웨이를 통해 한 번만 접근하면 되고, 게이트웨이가 나머지 요청 처리를 대신 해준다.2. Spring Cloud GatewaySpring Cloud Gateway는 Spring에서 제공하는 API 게이트웨이 구현체다.URL 패턴에 따라 동적 라우팅 가능요청 전후로 실행되는 필터 체인 제공요청 로그와 메트릭을 통한 모..

Spring AOP

Spring AOP(Aspect-Oriented Programming) 1. AOP란?AOP는 관심사 분리(Separation of Concerns)를 구현하는 방법 중 하나다.핵심 비즈니스 로직(core logic)과 부가 기능(cross-cutting concern)을 분리해서 관리할 수 있게 해준다.예를 들어 로깅, 트랜잭션, 예외 처리 같은 반복되는 코드를 각 Controller나 Service마다 넣지 않고, AOP로 한 곳에서 처리할 수 있다.2. 핵심 애너테이션@AspectAOP 기능을 수행할 클래스에 적용반드시 Spring Bean이어야 함 (@Component 필요)Advice 종류@Around : 핵심 로직 전후 모두 수행 가능 (@Before + @After)@Before : 핵심 로..

Programming/Spring 2025.09.19

서킷 브레이커(Resilience4j)

서킷 브레이커와 Resilience4j 1. 서킷 브레이커란?서킷 브레이커는 마이크로서비스 환경에서 한 서비스의 장애가 전체 시스템에 전파되지 않도록 막아주는 안전 장치라고 생각하면 쉽다.외부 API나 다른 서비스 호출 시 오류가 반복되면 바로 실패를 반환(Fail Fast)하고, 일정 시간 동안 해당 호출을 차단(Open)한다. 이후 일부 요청만 허용(Half-Open)하면서 서비스 상태를 확인한다.상태 변화 흐름: Closed → Open → Half-Open → Closed핵심 목적: 장애 격리(Fault Isolation)와 시스템 안정성 확보2. Resilience4j란?Resilience4j는 Java 기반의 경량 서킷 브레이커 라이브러리로, Hystrix의 대안으로 개발됐다.단순히 호출 실패..

로드밸런싱과 FeignClient, Ribbon

클라이언트 사이드 로드 밸런싱과 FeignClient, Ribbon 완전 정리1. 로드 밸런싱이란?로드 밸런싱은 네트워크 트래픽을 여러 서버로 분산시켜 서버의 과부하를 방지하고, 전체 시스템의 성능과 안정성을 높이는 기술이다.만약 특정 서버에 요청이 몰리면 장애가 발생하거나 응답 속도가 느려질 수 있다. 이를 방지하기 위해 여러 서버가 균등하게 요청을 처리하도록 분배하는 것이 로드 밸런싱이다.로드 밸런싱은 크게 서버 사이드 로드 밸런싱과 클라이언트 사이드 로드 밸런싱으로 나눌 수 있다.2. 클라이언트 사이드 로드 밸런싱클라이언트 사이드 로드 밸런싱은 말 그대로 클라이언트가 직접 서버 목록을 가지고 있고, 요청을 분배하는 방식이다.즉, 요청을 보낼 때 클라이언트가 어느 서버 인스턴스에 보낼지 스스로 결정한..

서비스 디스커버리

Spring Cloud Eureka로 서비스 디스커버리 이해하기1. 서비스 디스커버리란?마이크로서비스 아키텍처(MSA)에서는 수많은 서비스가 서로 통신하며 동작한다.그런데 서비스가 여러 서버에 흩어져 있고, 인스턴스가 늘어나거나 줄어들 수 있기 때문에 각 서비스의 위치(IP, Port)를 동적으로 관리하는 기능이 필요하다.이때 사용하는 것이 서비스 디스커버리(Service Discovery)다.서비스 등록(Register): 서비스가 자신의 위치를 디스커버리 서버에 등록서비스 조회(Discovery): 다른 서비스가 필요할 때 디스커버리 서버를 조회하여 통신헬스 체크(Health Check): 서비스 상태를 주기적으로 확인하여 가용성 유지즉, 서비스 디스커버리는 서비스 간 통신을 안전하고 유연하게 만들어..