AI VIDEO BRIEFING
이벤트 기반 아키텍처와 카프카(Kafka) 기초: 화이트보드로 이해하는 마이크로서비스
주문 하나가 사기 탐지·결제·배송으로 흘러가는 쇼핑앱 예시로, 데이터베이스가 병목이 되는 구조와 카프카를 중심에 둔 이벤트 기반 아키텍처의 차이를 설명하고 '한 번 쏘고 잊는' 설계가 왜 필요한지 짚는다.

핵심 메시지
쉽게 이해하기
이 영상은 화이트보드 한 장으로 이벤트 기반 아키텍처가 무엇이고 아파치 카프카가 그 안에서 어떤 자리를 차지하는지 설명한다. 출발점은 익숙한 그림이다. 앱과 웹사이트 같은 프런트엔드가 하나 이상의 백엔드 도구와 주고받으며 일을 처리하고, 그 결과를 데이터베이스에 기록한다. 데이터베이스가 하나뿐인 이 설계가 이른바 모놀리식 구조다.
기록된 데이터는 다른 서비스들이 필요로 한다. 쇼핑앱을 예로 들면 누군가 주문을 넣는 순간 백엔드가 움직이고 데이터가 데이터베이스로 들어간 뒤, 이 주문이 사기인지 판별하는 사기 탐지 서비스와 결제가 성공했는지 확인하는 결제 대사 마이크로서비스가 그 데이터를 읽어간다. 결제 게이트웨이나 원장 서비스도 마찬가지다. 문제는 이 모든 서비스가 같은 데이터베이스를 바라본다는 점이고, 그래서 데이터베이스가 병목이 된다.
마이크로서비스로 나누고 데이터베이스도 여러 개 두면 병목이 하나가 아니게 되니 괜찮지 않냐고 반문할 수 있다. 영상은 그 지적이 맞다고 인정하면서도, 하나의 정보를 얻기 위해 여러 곳에 흩어진 데이터를 모두 뒤져야 하는 상황이 되면 오히려 일을 제대로 해내기가 사실상 불가능해진다고 말한다. 이 지점에서 이벤트 기반 아키텍처가 등장한다.
그렇다면 이벤트는 어디에 넣어야 할까. 데이터베이스는 답이 아니다. 그 자리를 대신하는 것이 아파치 카프카이고, 카프카 안에는 여러 개의 토픽을 둘 수 있다. 영상은 어느 회사에나 있는 '주문(orders)' 토픽 하나를 예로 든다. 사용자와의 상호작용이 일어나면 이벤트가 발행되는데, 형식은 무엇이든 될 수 있지만 설명의 편의를 위해 JSON을 쓴다. 이 이벤트에는 주문 ID, 결제 정보, 카드 정보, 발송할 상품 정보, 날짜 같은 항목이 담긴다.
핵심은 이 항목들이 각기 다른 서비스에 필요한 재료라는 점이다. 주문 ID와 결제 정보는 사기 탐지 서비스가 가져가 주문의 이상 여부를 확인하고, 카드 정보는 아무나 접근할 수 없는 청구 데이터베이스에 안전하게 저장되며, 상품 정보는 배송 서비스로 가서 물건이 실제로 발송되게 한다. 날짜는 모두가 함께 쓴다. 이렇게 하나의 이벤트를 여러 서비스가 나눠 쓰는 구조가 쌓이면, 사방에서 들어오는 수백 가지 이벤트를 카프카가 받아내는 '중추 신경계' 역할을 하게 된다.
주요 인사이트
- 이 아키텍처를 부르는 이름이 '한 번 쏘고 잊는다'이다. 마이크로서비스는 이벤트를 한 번 발행한 뒤 그 이벤트가 어떻게 쓰이는지 더 이상 신경 쓰지 않고, 필요한 서비스가 각자 구독해 가져가 처리한다.
- 발행하는 쪽과 소비하는 쪽이 분리된다는 것이 이 구조의 실질적인 이득이다. 서비스들이 같은 저장소를 함께 두드리며 경쟁하는 대신, 각자 필요한 이벤트만 받아 독립적으로 움직인다.
- 이벤트에 사용자 ID 같은 새 필드가 필요해지면 그 필드를 스키마에 반영해야 하고, 카프카에서는 이를 스키마 진화라고 부른다. 즉 이벤트 형식은 고정된 계약이 아니라 관리하며 넓혀가는 대상이다.
- 영상은 카프카 안에 토픽·브로커·프로듀서·구독자 같은 구성 요소가 있고 장애 대응과 확장이라는 주제가 더 있다고 짚으면서도, 이번 설명의 목표는 그 세부가 아니라 이벤트 기반 아키텍처라는 개념 자체를 이해하는 것이라고 선을 그었다.
자주 묻는 질문
이벤트 기반 아키텍처가 해결하려는 문제는 무엇인가요?
여러 서비스가 하나의 데이터베이스를 함께 바라보면서 생기는 병목입니다. 주문 데이터를 사기 탐지, 결제 확인, 배송 같은 서비스가 모두 같은 저장소에서 읽어가야 하는 구조에서는 데이터베이스가 부담을 떠안게 되고, 마이크로서비스로 쪼개 데이터가 여러 곳에 흩어지면 필요한 정보를 모으는 일 자체가 어려워집니다.
카프카는 이 구조에서 어떤 역할을 하나요?
데이터베이스가 있던 자리를 대신해 이벤트가 모이는 중심이 됩니다. 안에 여러 토픽을 둘 수 있고, 상호작용이 일어날 때마다 발행된 이벤트가 해당 토픽에 쌓입니다. 이벤트가 수백 가지로 늘어나면 카프카가 전체 시스템의 중추 신경계 역할을 하게 된다고 영상은 설명합니다.
'한 번 쏘고 잊는다'는 말은 무슨 뜻인가요?
이벤트를 발행한 마이크로서비스가 그 이벤트의 이후 처리를 책임지지 않는다는 뜻입니다. 발행 이후는 그 이벤트가 필요한 서비스들이 각자 구독해서 가져가 처리하므로, 보내는 쪽은 누가 무엇을 하는지 알 필요가 없습니다.
스키마 진화는 왜 필요한가요?
사기 탐지나 청구 같은 서비스가 기존 이벤트에 없던 항목, 예를 들어 사용자 ID를 추가로 필요로 할 때가 있기 때문입니다. 이때 백엔드 서비스와 협의해 해당 필드를 이벤트 스키마에 반영해야 하는데, 카프카에서는 이렇게 이벤트 형식을 넓혀가는 과정을 스키마 진화라고 부릅니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗