Home
Sangki Han
Cancel

Eureka 없이 Spring Cloud Gateway에서 로드밸런싱하기

Spring Cloud Eureka를 도입했다가 제거하고 Gateway에서 직접 VM을 관리하는 방식으로 변경했다. 이유와 설정 방법을 정리한다. Eureka를 제거한 이유 Eureka는 서비스가 많고 인스턴스가 동적으로 늘어나는 환경에서 진가를 발휘한다. 새 VM이 뜨면 Eureka에 자동 등록되고, Gateway는 그걸 감지해서 자동으로 라...

Spring Cloud Eureka 서비스 등록/해제 이벤트 감지

Eureka 서버에 서비스가 올라오거나 내려갈 때 알람을 보내고 싶었다. Spring Cloud Eureka Server는 서비스 등록/해제 시 ApplicationEvent를 발행하기 때문에 @EventListener로 간단하게 감지할 수 있다. 사용 이벤트 이벤트 발생 시점 ...

Spring Cloud Gateway 구축 및 Eureka 연동

기존에는 각 서비스를 직접 호출하거나 Nginx로 라우팅했는데, 서비스가 늘어날수록 관리가 어려워져서 Spring Cloud Gateway를 도입했다. Eureka와 연동해서 서비스가 자동으로 라우팅되고 로드밸런싱까지 되게 구성했다. 전체 구조 클라이언트 │ ▼ [Gateway :8080] ──Eureka 조회──▶ [Eure...

Spring Cloud Eureka 서버 구축 및 서비스 등록

마이크로서비스 구조에서 서비스 디스커버리를 위해 Spring Cloud Netflix Eureka를 도입했다. Gateway가 각 서비스의 IP를 직접 하드코딩하는 게 아니라, Eureka를 통해 동적으로 서비스를 발견하고 로드밸런싱까지 가능하게 하는 게 목표였다. 전체 구조 [platform-data-api] ──등록──▶ [Eureka Se...

Kafka 클러스터 Grafana/Prometheus Consumer Lag 모니터링 구축

3대의 Azure VM에 구축한 Kafka KRaft 클러스터를 Grafana/Prometheus로 모니터링하는 방법을 정리한다. 모니터링 대상 Kafka 클러스터에서 Lag을 모니터링 하려한다. Consumer Lag이 중요한 이유: Lag이 계속 쌓이면 컨슈머가 처리를 못 따라가고 있다는 신호다. 빠르게 감지해야 장애 전에 스케일아웃할 수...

Kafka DLQ(Dead Letter Queue) 구현 - 메시지 유실 없이 에러 처리하기

Kafka Consumer에서 에러가 발생했을 때 그냥 로그만 남기고 넘어가면 해당 메시지는 영원히 유실된다. DLQ(Dead Letter Queue)는 처리 실패한 메시지를 별도 토픽에 보관해 나중에 재처리할 수 있게 해주는 패턴이다. 기존 코드의 문제점 @KafkaListener(topics = "${gateway.kafka.topic}")...

Redis Write-Behind Cache로 게시물 좋아요 구현하기

개요 PuppyNote 서비스의 게시물 좋아요 기능을 구현하면서 DB 부하 최소화와 실시간 반영이라는 두 가지 요구사항을 동시에 만족시켜야 했다. 단순히 좋아요를 누를 때마다 DB에 바로 쓰는 방식은 트래픽이 몰릴 때 DB 부하가 급격히 증가한다. 이를 해결하기 위해 Redis Write-Behind Cache 패턴을 적용했다. 문제 정의 ...

Kafka 동작 원리 Deep Dive - 브로커부터 복제까지

Kafka를 직접 구성하고 운영하면서 생긴 궁금증들을 파고든 내용을 정리했다. 1. 브로커 구성 - 왜 3대인가 Kafka 클러스터는 과반수(Quorum) 원칙으로 동작한다. 브로커 수 과반수 허용 장애 수 1대 1대 0대 ...

Kafka KRaft 클러스터 구성 - VM 3대로 고가용성 확보하기

이전 포스팅에서 Kafka 단일 브로커로 IoT 데이터 파이프라인을 구성했다. 단일 브로커는 브로커가 죽는 순간 전체 파이프라인이 멈춘다. 운영 환경에서는 이를 허용할 수 없어 VM 3대로 Kafka 클러스터를 구성했다. 왜 3대인가 Kafka 클러스터는 과반수(Quorum) 원칙으로 동작한다. 브로커 수 ...

IoT Gateway 아키텍처 개선 - Function App에서 Kafka 기반으로

IoT 기기에서 수집된 데이터를 저장하는 파이프라인을 운영하던 중, 기존 아키텍처의 한계를 느끼고 Kafka 기반으로 전환하게 되었다. 기존 아키텍처 IoT 기기 → MQTT → Gateway 서버 → Azure Function App → Table Storage ...