이벤트 기반 MSA를 아시나요? (feat. 아파치 카프카)
* 이 기사는 바이라인플러스 웨비나 이벤트 기반 마이크로서비스 아키텍처에서의 Apache Kafka 역할에 기반해 작성되었습니다.
마이크로서비스아키텍처(MSA)는 현대적인 앱 개발을 위한 기본요소로 자리잡았다. 애플리케이션과 데이터베이스가 하나의 통에 담긴 과거의 모놀로틱 앱은 수정하거나 진화시키기 어려웠다. 모놀리틱 앱은 일부분에 문제가 생겨도 시스템 전체가 주저앉았다. 이는 디지털 트랜스포메이션이 중요한 현재의 비즈니스 환경에 맞지 않다.
이 때문에 기업들은 컨테이너를 기반으로 MSA를 구성한다. 이를 클라우드 네이티브 앱 개발이라고 한다. MSA는 레고블록(마이크로서비스)을 조립하는 식으로 구성되는 아키텍처로, 유연한 것이 특징이다. 기차를 만들었던 레고블록으로 다시 비행기를 만들 수 있는 것처럼 MSA역시 변화에 대처하기 용이하다. MSA는 보통 마이크로서비스를 컨테이너에 담아 API(애플리케이션 프로그래밍 인터페이스)로 연결한다.
하지만 단순히 API로 연결만 한다고 안정적인 시스템이 되는 것은 아니다. API로 상호간에 데이터를 주고 받다보니 하나의 마이크로서비스에서 문제가 생기면 다른 마이크로서비스에 영향을 미치는 경우가 많다. 한 마이크로서비스에서 생긴 문제가 다른 마이크로서비스로 전이되면서 전체 시스템이 장애에 빠지기도 한다. 예를 들어 온라인 쇼핑 서비스의 결제시스템에 문제가 있다고 가정하자. 이용자가 시스템오류로 최종 결제는 못한다고 해도, 상품을 검색하고 장바구니에 담는 것은 가능해야 한다. 하지만 상호 의존적인 마이크서비스가 API로 연결돼 있을 경우 결제시스템의 문제로 상품을 열람하고 장바구니에 담기는 것도 안되는 경우가 많다. MSA의 핵심 사상은 ‘서비스간 느슨한 연결’인데, 생각과 달리 상호의존적인 API로 인해 긴밀한 연결이 되곤 한다.
이런 문제를 해결하기 위해 메시지Q라는 방식을 이용하기도 한다. 중앙에 메시지브로커를 두고 모든 마이크로서비스의 통신을 관리하는 방안이다. 이는 긴밀한 API 연결문제를 해결하기는 하지만, 브로커는 메시지가 전달되면 메모리를 비우기 위해 메시지를 지우게 되는 새로운 문제가 생긴다. 메시지가 유지되지 않으니 다른 마이크로서비스가 같은 메시지를 요청하면 처음부터 처리해야 한다. 이로 인해 메시지Q방식은 데이터 처리양이 적고 레이턴시(반응속도)가 늦다는 단점이 있다.
이에 대한 대안으로 나온 것이 ‘이벤트 기반의 MSA’다. ‘이벤트 기반의 MSA’는 이벤트 발생시 해당 이벤트 로그를 별도로 보관하고 이를 기반으로 비동기 통신을 하는 MSA를 말한다. 이벤트란 “상태나 데이터에 변화가 발생하는 것”을 의미한다. 자동차의 공기압이 낮아진 것, 은행에서 A가 B에게 송금을 한 것, 쇼핑몰에서 배송이 시작된 것 등 모든 활동이 이벤트가 된다.
이벤트 기반 MSA 기술을 상징하는 것은 아파치 카프카다. 아파치 카프카는 오픈소스 이벤트 스트리밍 플랫폼이다. 무수히 많이 발생해서 강물처럼 흐르는 이벤트스트림을 주고받거나 저장하고 분석하는 역할을 한다. 링크드인이 카프카를 처음 개발해 아파치재단에 기중했으며, 현재는 아파치재단 톱레벨 프로젝트로 운영 중이다.
아파치 카프카의 특징은 대량의 메시지를 처리할 수 있다는 있다는 것과 메시지를 저장, 분석할 수 있다는 점이다. 기존 메시지Q 방식의 단점에 대안을 제시한 것이다. 링크드인의 경우 아파치 카프카를 통해 하루 4조5000억 개의 이벤트 스트림을 처리한다고 전해지고 있는데, 이 정도 규모의 이벤트는 기존 메시지Q 방식으로는 처리할 수 없었다.
또 아파치 카푸카는 동기화 커뮤니케이션인 API가 가진 위험성인 마이크로서비스간 종속성도 없앴다. 마이크로서비스간 직접 커뮤니케이션 하는 것이 아니라 아파치 카프카를 중간에 두고 데이터를 복제하는 방식으로 커뮤니케이션 하기 때문에 서비스간 상호의존도가 낮아진다.
아파치 카프카의 가장 큰 장점은 성능이다. 최초 개발자인 제이 크렙스는 3대의 저가 서버로 초당 200만번 데이터를 쓸 수 있다고 전했다. 기업에서 발생하는 모든 이벤트를 아파치 카프카로 처리할 수 있는 것이다. 제이 크렙스는 아파치 카프카의 이같은 장점을 전파하기 위해 컨플루언트라는 스타트업을 창업했다.
컨플루언트코리아 김현수 상무는 “컨플루언트는 대기업(엔터프라이즈)도 아파치 카프카를 안정적으로 이용할 수 있도록 서비스를 제공한다”면서 “오픈소스를 가져와서 브랜드만 붙여서 제공하는 것이 아니라 안정화 작업, 성능 튜닝을 했고 엔터프라이즈급 소프트웨어가 가져야 하는 기능을 추가해서 공급하고 있다”고 전했다.
글. 바이라인네트워크
<심재석 기자>shimsky@byline.network