Posts
의사줌치
Cancel

DB를 활용한 리더선출락 구현

개요 여러 컨테이너가 동시에 실행되는 환경에서는 특정 작업(이하 리더 작업)을 오직 하나의 컨테이너만 수행해야 할 때가 있다. 리더 작업은 리더가 주기적으로 실행하고 리더가 아닌 다른 컨테이너는 대기해야한다. 만약 리더가 다운되어 리더 작업이 불가능한 경우 최대한 빨리 대기하고 있는 다른 컨테이너 중 하나를 리더로 선출한 뒤 리더 작업...

Spring Kafka에서 최신 메시지만 소비하는 Pub/Sub 방식 설정

설명 Kafka를 Pub/Sub 방식으로 활용하고 싶을 때, 특정 토픽의 가장 최신 메시지만 소비하는 구조가 필요하다. 이 글에서는 Spring Kafka에서 auto-offset-reset: latest와 seekToEnd() 설정을 조합하여, 컨슈머가 파티션에 연결되었을 때 항상 최신 메시지만 소비하도록 설정하는 방법을 소개한다. ...

Spring Kafka 컨슈머 배치 설정

개요 컨슈머에서 폴링 시 배치 단위로 가져오게 할 수 있다. 이를 통하여 처리 성능을 높일 수 있다. 설정 application.yml spring: kafka: bootstrap-servers: "kafka:9092" producer: key-serializer: org.apache...

Spring Kafka 컨슈머 수동 커밋 설정

개요 카프카 기본 설정은 오토 커밋이다. 이 경우, 컨슈머가 메시지를 실제로 처리했는지와 무관하게, 일정 시간이 지나면 자동으로 오프셋이 커밋된다. 그 결과 메세지가 유실될 수 있다. 이를 방지하기 위해 수동 커밋을 설정한다. 설정 application.yml spring: kafka: bootstr...

Spring Kafka 컨슈머 멀티스레드 처리 설정

개요 Spring Kafka의 @KafkaListener 어노테이션에서 concurrency 속성을 설정하면, 리스너 컨테이너가 해당 수만큼의 스레드를 생성하여 동일한 리스너 로직을 병렬로 실행하며 메시지를 처리한다. 가정 도커로 카프카 컨테이너 한 개를 띄운다. 스프링으로 카프카와 소통한다. 스프링 카프카 의존성 및 스프링 의...

Kafka를 활용한 대용량 이벤트 처리 구조 설계와 성능 비교

목적 서비스에서 처리량이 증가하거나 작업 시간이 길어지는 상황에서 기존의 동기식 직접 DB 접근방식이 가진 한계를 확인하고 Kafka 기반 비동기 처리 구조의 성능 및 안정성을 확인하기 위함 실험환경 애플리케이션Kotlin Spring Boot 기반 API 서버 DB: MariaDB Kafka: 단일 노드 트랜잭션 타임아웃...

메트릭 모니터링(prometheus, grafana, alertmanager)

정의 시스템 상태와 성능을 지속적으로 관찰하고 분석하는 과정 이를 통해 문제를 조기에 발견하는 것을 목표로 한다. 메트릭(metric)이란 시스템, 애플리케이션 또는 프로세스의 성능이나 상태를 수치적으로 표현한 데이터 포인트 우리는 메트릭을 지속적으로 수집하여 문제 발생 시 경고(alert)을 보내거나 시각화하여 문제를 빠르게 판단...

인증방식 고민

세션 인증 방식과 JWT 인증 방식의 차이 세션 방식 서버에서 사용자 정보를 key-value 저장소에 저장 서버에서 key를 사용자 쿠키에 담아서 전송 사용자가 인증이 필요한 요청을 하면 요청과 함께 키가 담긴 쿠키가 서버로 전송됨 서버는 key를 가지고 key-value 저장소를 조회하여 인...

동시성 문제 해결 방안 성능 실험

동시성 문제란? 여러 프로세스나 스레드가 동시에 실행되는 상황에서 자원(데이터 등)을 제대로 공유하거나 수정하지 못해 발생하는 문제 구체적인 상황 id, numLikes 필드로 이뤄진 POST 테이블이 있다. likePost 함수는 postId를 인자로 받고, post을 조회한 뒤 기존 numLikes를 읽고 그 값에 +1을 한 ...

블루 - 그린 배포 실험

블루 - 그린 배포란? 두 개의 동일한 환경(블루와 그린)을 유지하며, 새 버전을 배포한 후 트래픽을 전환하여 새로운 버전을 운영에 적용 왜 하는가? 새로운 애플리케이션 버전을 배포하면서 서비스 중단 없이 안전하게 전환하기 위해서 작동 방식 블루 환경에서 운영 중 기존 애플리케이션(블루)이 사용자의 모든 트...