회사에서 Event Driven Architecture를 우리 팀의 서비스에 적용하는 것을 목표로 이 책을 스터디하게 되었다.

 

Building Event-Driven Microservices

Organizations today often struggle to balance business requirements with ever-increasing volumes of data. Additionally, the demand for leveraging large-scale, real-time data is... - Selection from Building Event-Driven Microservices [Book]

www.oreilly.com

 

이 책의 1~5장을 읽으며 한 번에 이해되지 않거나 헷갈리는 개념과 핵심 키워드을 정리해보았다.

  • 1장: 왜 이벤트 기반 마이크로서비스인가?
  • 2장: 이벤트 기반 마이크로서비스 기초
  • 3장: 통신 및 데이터 규약
  • 4장: 기존 시스템에 이벤트 기반 아키텍처 통합
  • 5장: 이벤트 처리 기본

도메인과 모델

  • 도메인: 비즈니스가 다루는 실제 세계의 영역
  • 모델: 도메인을 특저안 목적에 맞게 추상화한 결과물

예: 공고라는 도메인을 경계 콘텍스트에 따라 아래의 다양한 모델로 설계할 수 있다.

  • 정보제공 콘텍스트: 세부정보(채용인원, 근무지, 연봉정보 등)
  • 관리자 콘텍스트: 심사(현재상태, 승인/반려 이력, 반려 사유 등)
  • 광고 콘텍스트: 광고상품 (지면, 단가, 성과 등)
  • 인터렉션 콘텍스트: 유저활동(스크랩, 조회, 공유 등)

각 모델은 DB레벨에서 외래키로 관리하기보다는 ID로 연결하는 것이 권장된다.

경계콘텍스트

특정한 용어와 규칙이 일관되게 유지되는 논리적 경계, 위의 예시에서 정보제공, 관리자, 광고, 인터렉션에 해당한다.

 

통신구조

레벨에 따라

  • 비즈니스 통신 예
    • 지원팀 > 운영팀 > 기술팀 간 통신
    • 조직이나 서비스 간의 의사결정과 협업
  • 구현 통신
    • 웹 서버 > 앱서버 > DB
    • 시스템 간 물리적/논리적 연결 방식과 기술적 아키텍처
  • 데이터 통신
    • 프로토콜, 파일 형식 등
    • 데이터의 구조와 규격

 

중앙 통제 / P2P 에 따라

  • 애드혹 통신 (P2P) : 서로에 특화된 방법, 초기구축이 빠르고 단순
  • 정규 통신 (중앙통제): 정규화된 방법, 유지보수/확장성에 유리
  애드혹 정규
비즈니스  단발적, 즉흥적 표준 워크플로우
구현 api 호출, 웹훅 이벤트브로커, 버스, 펍-섭
데이터 가변적 스키마 사용 고정적 스키마

 

토폴로지

위상수학에서 시작된 개념으로, 구성요소들이 서로 연결되어 있는 물리적/논리적 배치 형태

  • 단일 마이크로서비스의 토폴로지
    • 예: 이벤트스트림을 받아서 필터링/변환한 뒤 DB에 저장하고 새 이벤트 스트림으로 내보내는 구조
  • 비즈니스 토폴로지
    • 복잡한 비즈니스 로직을 처리하는 마이크로서비스, 이벤트스트림, API 로 이루어짐
      • 마이크로서비스: 비즈니스 경계콘텍스트를 구현
      • 이벤트 스트림: 전체 콘텍스트의 도메인 데이터를 공유하기 위한 수단
  • 이벤트 브로커와 메시지 브로커
    • 이벤트 브로커는 메시지 브로커를 대체할수 있지만, 반대는 그렇지 않다.
    • 메시지 브로커는 메시지를 큐 단위로만 처리하므로 여러 컨슈머가 큐에서 같은 이벤트데이터를 소비하거나 메시지로부터 전체 데이터를 얻을 수 없음
    • 이벤트 브로커는 거대한 장부에 순서대로 적힌 레코드에 인덱스를 통한 개별 액세스를 관리함 (+ 컨슈머는 각자 오프셋을 관리하여 독립적으로 소비함)

그 외

  • 테이블 - 스트림 이원화: (로그)스트림을 테이블로, 테이블을 스트림으로 구체화 가능하다는 개념
    • 이벤트브로커가 스트림을 컴팩션하여 크기를 줄이기도 함
  • 스키마화: 컨슈머가 프로듀서에 묻지 않고도 이벤트 콘텐츠의 의미를 해석
    • 진화 프레임워크
    • 정형 클래스 생성
  • 마이크로서비스 단일 작성자 원칙: 이벤트 스트림은 정확히 하나의 생산 마이크로서비스를 가진다는 원칙
  • 이벤트 브로커
    • 이벤트를 받아 큐 또는 파티션된 이벤트 스트림에 저장하여 다른 프로세스가 사용할 수 있도록 제공
    • 대규모 이벤트 기반 체계를 운영하는 데 장점 제공, 마이크로서비스를 강화
      • 확장성, 보존성, 고가용성, 고성능
    • 브로커가 사용하는 기반(underlying) 데이터스토리지의 요건
      • 파티셔닝, 순서보장, 불변성, 인덱싱, 무기한 보존, 재연성

+ Recent posts