728x90
반응형
SMALL

kafka 5

Kafka, Elasticsearch, Redis 으로 대용량 주문 처리하기

이전 게시글인 Kafka Outbox 패턴으로 비동기 이벤트 발행하기 에서는데이터를 Outbox 테이블에 적재하고, 이를 기반으로 Kafka 이벤트를 안전하게 발행하는 구조를 정리해봤습니다. 이번에는 그 다음 단계로,Kafka로 발행된 이벤트를 어떻게 소비하면 좋을지,그리고 대용량 주문 환경에서도 안정적으로 조회하려면 어떤 구조가 좋을지를 정리해보려고 합니다. 이번 글에서는Elasticsearch, Redis, 그리고 Idempotency Lock을 활용해서주문 처리 흐름을 한 단계 더 확장해봤습니다!.전체 흐름 먼저 살펴보기이번에 정리해본 전체 데이터 흐름은 아래와 같습니다. PostgreSQL → Outbox Table → Kafka (order.created) → Kafka Consume..

Kafka Outbox 패턴으로 비동기 이벤트 발행하기

비동기 처리 방식을 공부하면서 Kafka 통신 흐름을 로그를 통해 확인하면서동작 원리를 파악하는 과정에서 깨달음을 얻어 게시글을 작성합니다!Kafka 를 처음 사용하면서 저는 Kafka 로 이벤트를 발행할 때 이게 언제, 어디서, 어떤 흐름으로 실행되는건지 헷갈렸습니다.특히 Outbox 패턴을 적용하면 Kafka 발행 로직이 Controller 와 분리되기 때문에요청이 끝났음에도 Kafka 가 동작하는 것을 알 수 있는데요 이를 기반으로 아래 내용들을 정리해보겠습니다!HTTP 요청 처리 흐름Filter / Interceptor / Service의 역할Kafka Outbox 발행이 Controller와 분리되는 이유로그로 Kafka 통신을 확인하는 방법실무에서는 Outbox를 어떻게 활용하는지 1. 전체 ..

비동기 처리란 무엇인가?(MQ / Kafka)

백엔드 개발을 하다 보면 이런 말을 자주 듣는다.“이건 비동기로 처리해야 해요”“Kafka로 이벤트 흘리면 됩니다”“MQ로 분리하세요”그런데 막상 물어보면👉 왜 비동기가 필요한지,👉 동기/비동기가 실제로 뭐가 다른지,👉 MQ와 Kafka가 왜 등장했는지명확하게 설명하기는 쉽지 않다.이 글에서는 아무 배경지식 없는 상태에서도 이해할 수 있도록비동기 처리의 등장 배경부터 차근차근 설명해보겠습니다!1. 우리가 처음 만드는 시스템은 전부 “동기 처리”다대부분의 웹 서비스는 이렇게 시작한다.클라이언트 요청 → 서버 처리 → 응답 이를 동기(Synchronous) 처리라고 한다. 예시: 주문 API주문 요청 → 결제 처리 → 재고 차감 → 주문 저장 → 알림 발송 → 응답 이 구조는 이해하기 쉽고, 구현도 단..

[Apache Kafka] 카프카(Kafka) 맛보기!

카프카(Kafka)란?!Apache Kafka는 실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 오픈 소스 분산 이벤트 스트리밍 플랫폼입니다. 여러 소스에서 데이터 스트림을 처리하고 여러 사용자에게 전달하도록 설계되었습니다. 간단히 말해 A지점에서 B지점까지 이동하는 것뿐만 아니라 A지점에서 Z지점을 비롯해 필요한 모든 곳에서 대규모 데이터를 동시에 이동할 수 있습니다. 카프카의 탄생 배경카프카는 비즈니스 소셜 네트워크 서비스인 링크드인(linked-in)에서 개발했으며 아래는 카프카 개발 전 링크드인의 데이터 처리 시스템입니다. 각 애플리케이션과 DB가 end-to-end 로 연결되어 있고 요구사항이 늘어남에 따라 데이터 시스템 복잡도가 높아지면서 다음과 같은 문제가 발생하게 되었습..

MSA(MicroService Architecture) 란 무엇일까?!

MSA 란MicroService Architecture의 줄임말로 작고 독립적으로 배포가 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크라고 할 수 있습니다. 마이크로 서비스는 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발언어, 데이터베이스 등)이 사용 가능한 단일 사업 영역에 초점을 둡니다. MSA의 등장 배경모놀리식 아키텍처(Monolithic Architecture)는 전통적인 개발 방식으로 하나의 프로젝트에 모든 기능을 함께 포함하는 아키텍처입니다. 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태로 웹 개발을 예로 들면 웹 프로그램을 개발하기 위해 모듈별로 개발을 하고, 개발이 완료된 웹 어플리케이션을 하나의 결과물로 패키징하여 배포되는 형태를 말합니다. 주로 소규..

728x90
반응형
LIST