Kafka 재시도 및 DLT

Spring Boot와 Kafka를 연동할 때 필수적으로 고려해야 할 메시지 처리 실패 시 재시도(Retry) 전략과 데드 레터 토픽(Dead Letter Topic, DLT) 활용 방안에 대해 심층적으로 알아보자. 이는 비동기 메시지 처리 시스템의 견고성과 안정성을 확보하는 데 매우 중요하다 메시지 처리 실패 상황…

Spring Boot와 Kafka 연동

Spring Boot 애플리케이션에서 Kafka를 사용하려면 의존성을 추가하고 설정 파일을 구성해야 한다 Spring Boot로 Kafka에 메시지 넣기 (Producer) application.yaml 설정 Kafka 서버 연결 및 Producer/Consumer의 직렬화/역직렬화 방식을 설정한다 application.yaml (Producer) 주의사항 Kafka 서버를 백그라운드로 실행하고 email.send 토픽을 미리 생성해 두어야 한다…

Kafka 핵심 구성 요소

Kafka는 메시지를 생산하고 소비하는 주체와 그 메시지를 분류하고 저장하는 공간으로 구성된다 Kafka의 기본적인 데이터 흐름 이러한 분리된 역할 덕분에 프로듀서와 컨슈머는 서로의 처리 속도에 영향을 받지 않고 비동기적으로 동작할 수 있으며, 이는 시스템의 확장성과 안정성을 크게 향상시킨다 CLI를 활용한 Kafka…

카프카 (Kafka) 설치 및 설정

오늘날 수많은 기업에서 고성능 데이터 파이프라인, 실시간 스트리밍 분석, 데이터 통합, 그리고 미션 크리티컬 애플리케이션에 Kafka를 활용하고 있다. 카프카 (Kafka)는 단순히 대규모 데이터를 처리하는 메시지 큐를 넘어, 분산 이벤트 스트리밍 플랫폼으로서 현대적인 시스템 아키텍처에서 핵심적인 역할을 수행한다. 메시지 큐 (Message…

PKI와 디지털 인증서

대칭키 암호화 방식의 한계와 비대칭키 암호화 방식의 등장을 알아보았다. 특히, 두 가지 암호화 방식을 혼합하여 효율성과 보안성을 모두 잡는 SSL/TLS의 기본 원리를 알아보았다. 그러나 이 모든 과정에서 간과할 수 없는 문제가 남아 있었으니, “수신한 공개키를 과연 신뢰할 수 있는가?”하는 의문이다.…

동적 프로그래밍

메모이제이션(Memoization)과 타뷸레이션(Tabulation) 재귀의 문제점 재귀를 이용한 분할 정복으로 많은 문제를 해결했다. 하지만 재귀는 콜스택을 차지하는 것 외에도 성능에 크게 영향을 미치는 치명적인 단점이 있다. 바로 중복 계산이다. 피보나치 수열로 보는 재귀의 비효율성 피보나치 수열이란 다음과 같은 규칙으로 만들어진다 재귀로 구현하기…

퀵 정렬

퀵 정렬이란 병합 정렬과 같이 분할 정복 (Divide and Conquer) 알고리즘에 속하며, 재귀를 사용한다. 하지만 병합 정렬과는 다른 방식으로 동작한다 핵심 원리 병합 정렬과의 차이점 동작 과정 상세 분석 배열 [5, 3, 7, 2, 6, 4, 9, 1, 8]을 오름차순으로…

병합 정렬

분할 정복 (Divide and Conquer) 해결하기 힘든 문제가 있다면 한 번에 해결하려 하지 말고, 해결하기 쉬울 정도로 문제를 쪼갠 다음 하나씩 해결하라 이것이 바로 분할 정복(Divide and Conquer) 전략이다. 병합 정렬은 이 전략을 완벽하게 구현한 알고리즘으로 지금까지 알아본 O(n²) 정렬들과는…

삽입 정렬

삽입 정렬은 배열을 정렬된 영역과 정렬되지 않은 영역으로 나누고, 정렬되지 않은 영역에서 원소를 하나씩 꺼내어 정렬된 영역의 적절한 위치에 삽입하는 알고리즘이다. 마치 카드 게임에서 손에 든 카드를 정렬하는 방식과 유사하다. 구현이 직관적이지만 성능은 O(n²)으로 비효율적이다. 핵심 원리 동작 과정 상세…

선택 정렬

선택 정렬은 정렬되지 않은 영역에서 가장 작은 값을 찾아 정렬된 영역의 맨 뒤로 보내는 알고리즘이다. 매 단계마다 최솟값을 선택(Selection)한다고 해서 선택 정렬이라는 이름이 붙었다. 구현이 직관적이지만 성능은 O(n²)으로 비효율적이다 핵심 원리 선택 정렬은 다음 과정을 반복한다 동작 과정 상세 분석…