이벤트 기반 아키텍처
Event-Driven Architecture
사건이 일어날 때마다 시스템이 반응하도록 부품을 연결하는 소프트웨어 설계 방식이에요.
어떤 개념인가요
작동 원리
발행자는 상태가 바뀌면 이벤트라는 짧은 기록을 큐나 이벤트 버스에 넣어요. 구독자는 자신이 관심 있는 이벤트만 골라 받아 처리하고, 처리가 끝나면 결과를 다시 이벤트로 남기는 식으로 흐름이 이어져요.
이벤트는 순서가 뒤바뀌거나 같은 것이 두 번 도착할 수 있다는 전제로 설계해야 해요. 같은 이벤트가 여러 번 와도 결과가 달라지지 않도록 처리 로직을 짜야 네트워크 재전송이 일어나도 주문이 두 번 결제되는 일을 막을 수 있어요.
어디에 쓰이나요
전자상거래에서는 주문이 들어오면 재고 차감, 결제 확인, 배송 알림이 각각 독립된 서비스에서 동시에 처리돼요. 로봇이나 센서가 상태 변화를 보내는 공장 설비 모니터링에도 잘 맞아요.
적용 조건은 이벤트의 순서가 결과에 큰 영향을 주지 않거나, 순서를 보장하는 장치를 둘 수 있을 때예요. 실시간 반응이 필요하지 않은 작업은 일괄 처리 방식이 더 단순하고 관리하기 쉬울 수 있어요.
한계와 오해
이벤트가 어디서 시작해 어떤 경로를 거쳤는지 한눈에 보기 어려워서 장애 원인을 찾기 까다로울 수 있어요. 그래서 추적 로그와 모니터링 도구를 함께 설계하는 것이 보통이에요.
흔한 오해는 이벤트 기반이면 항상 빠르고 안정적이라는 생각이에요. 실제로는 메시지가 쌓이거나 지연되면 전체 흐름이 밀릴 수 있고, 구조가 복잡해질수록 운영 비용이 오히려 늘어나요.
예를 들면
택배 상자가 분류 센터에 도착하면 문자 알림이 자동으로 가는 것처럼, 한 가지 일이 일어나면 연결된 다른 일들이 알아서 시작되는 구조예요.
왜 알아둘 만한가요
AI 에이전트나 자동화 서비스가 늘어나면서 여러 시스템이 복잡하게 얽히기 시작했어요. 이벤트 기반 구조를 이해하면 어디서 무엇이 언제 실행되는지 추적하기 쉬워져 문제를 찾는 데 도움이 돼요.
출처와 더 읽기
이렇게도 불러요이벤트 기반 구조, 이벤트 주도 아키텍처, event-driven