이전 블로그 게시글에서 볼 수 있듯이, 저는 가상의 뉴욕 택시회사(NYC Modern Taxi)를 이용하여 실시간 데이터와 모바일 기술을 택시회사에 통합하기 위해 애쓰고 있는 실제 기업의 특성과 과제를 설명하고자 합니. 맨 처음에 OpenTelemetry를 이용한 분산 추적에 대해 설명하였고, 가장 최근에는 Salesforce를 활성화하는 이벤트의 가치에 대해 설명했습니다.
NYC Modern Taxi에서 이벤트 중심 아키텍처(EDA)를 통해 새로운 승차공유 앱을 구현하면(Uber 및 Lyft와 경쟁할 목적으로) 고객 경험 개선과 원가 절감을 실현하고 이벤트 라우팅을 사용하도록 지원할 수 있다는 결정을 내렸습니다. NYC Modern Taxi는 이벤트 중심 아키텍처 여정에 도움이 필요하다는 것을 알고 PubSub+ Event Portal을 사용하여 이벤트를 시각화, 통제 및 관리하고 분류하기 시작했습니다.
NYC Modern Taxi는 비디오 및 블로그 게시물에서 PubSub+ Event Portal의 주요 기능에 대해 알고 있었지만, 혁신을 쉽게 만들 수 있는 몇 가지 기능들이 여전히 있었습니다. 다음은 엔터프라이즈에서 이벤트 중심 아키텍처를 구현할 때 실제로 영향을 줄 수 있는 PubSub+Event Portal을 사용하여 수행할 수 있는 8가지 사항입니다.
- 태그를 사용하여 이벤트 중심 아키텍처 이해하기
- 세분화된 검색으로 자세히 확대해 보기
- 애플리케이션에 소유권 할당하기
- 개정에 어떤 문제가 있는지 파악하기
- 상세 설명 필드에 딥링크와 직접 링크 생성하기
- 검색을 사용하여 Kafka 검색 결과 가져오는 방법 간소화하기
- 애플리케이션에 대한 AsyncAPI 정의 내보내기
- 여러 다른 영역에 객체 재지정하기
1. 태그를 사용하여 이벤트 중심 아키텍처 이해하기
성숙된 이벤트 중심 아키텍처를 갖춘 대규모 엔터프라이즈는 수백 개의 이벤트와 애플리케이션을 보유할 수 있습니다. NYC Modern Taxi는 3개의 실업무 영역과 하나의 테스트 영역에 걸쳐 대략 12가지 애플리케이션이 탑재된 비교적 단순한 시스템을 갖추고 있지만 제한적 규모에서라도 이벤트 흐름을 이해하는 것은 여전히 어려운 과제인데, 특히 일대다 성향의 이벤트일 때 더욱 그렇습니다.
NYC Modern Taxi는 조기에 다음과 같은 직무 기반 영역으로 애플리케이션을 분할하기로 결정했습니다.
- 운영(실시간 이벤트 중심)
- 백오피스(서비스 상호작용으로서 소프트웨어)
- 분석(Kafka와 같은 스트리밍 솔루션과 이를 활용하는 도구)
다음은 운전 기사와 승객 사이 실시간 상호작용과 관련된 애플리케이션과 이벤트를 제공하는 운영 영역에 대한 개요입니다.
다행히도 NYC Modern Taxi는 여러 가지 PubSub+Event Portal 기능을 이용하여 관련 정보에 집중함으로써 복잡성을 줄여 줍니다. 첫 번째는 태그로, 태그를 통해 스키마, 이벤트 및 애플리케이션에 자유로운 텍스트 라벨을 하나 이상 적용할 수 있습니다. Gmail 내 이메일에 ‘세금’ 또는 ‘Vandelay 산업 파트너십’으로 라벨을 붙이는 방식과 같습니다. 태그의 유연성이란 조직이 다양한 방법으로 활용할 수 있음을 의미하지만 NYC Modern Taxi에서는 ‘모바일 애플리케이션’, ‘급여 처리’, ‘운전 기사 탑승’ 등과 같은 사용 사례를 구분하는 데 사용합니다.
사례 태그를 사용하는 것은 질서 정연하게 정리하기에 좋은 방법입니다. 먼저 이벤트와 연관된 사용 사례를 찾는 것만으로도 유용할 수 있습니다. 예를 들어, RideUpdated 이벤트에는 승차 공유 회사에 중대한 이벤트인 특정 승차 상태에 대한 업데이트가 포함됩니다.
변경을 수행할 때 고려해야 하는 많은 소비자와 다양한 사용 사례들이 있습니다. 태그를 사용하면 이러한 작업이 쉬워집니다.
태그를 볼 수 있는 점도 좋지만 그래픽 디자이너 뷰를 필터링하여 특정 사용 사례와 관련된 객체만 강조표시함으로써 통찰력을 높일 수도 있습니다. 예를 들어, 아래의 디자이너 이미지에서는 모바일 사용 사례와 연관된 객체만 집중 조명할 수 있습니다.
2. 세분화된 검색으로 자세히 확대해 보기
NYC Modern Taxi는 이벤트, 스키마 및 애플리케이션에 라벨을 붙이지만 때로는 객체 내부도 들여다봐야 합니다. NYC Modern Taxi에서는 운전기사마다 driver_id라는 고유 ID를 지정하여 여러 스키마에 포함시켰는데, 그 이유는 회사의 많은 애플리케이션이 운전기사를 지원하는 것이기 때문입니다.
em>driver_id를 포함하는 모든 스키마를 추적하는 일은 중앙 관리식 저장소와 특수 도구 없이는 어려울 수 있지만 다행히 PubSub+ Event Portal 카탈로그에는 두 가지 모두 들어 있습니다. 탑재된 강력한 검색 도구가 driver_id를 사용하는 스키마와 사용 방법을 정확히 보여 줍니다. 주제 문자열, 스키마 본문, 설명 또는 객체 이름 중 어느 위치에 포함되어 있는지는 상관이 없습니다.
3. 애플리케이션에 소유권 할당하기
NYC Modern Taxi는 이벤트 중심 아키텍처를 사용하여 애플리케이션을 느슨하게 연결할 수 있습니다. 이 방식은 로드 중 독자적 확장, 병렬 실행을 통한 응답 시간 단축, 오류 처리 작업 단순화 등과 같은 다양한 런타임 장점을 제공합니다. 개발 과정에서 느슨한 결합은 여러 독자적 개발팀 간에 자체적인 애플리케이션 위임을 가능하게 하므로 하나의 모놀리식 릴리스를 기다릴 필요없이 혁신 기능을 생성할 수 있습니다.
그러나 느슨하게 결합된 환경에서도 여전히 팀 간 의사소통이 필요하며, 기본 데이터 구조가 애플리케이션 간 인터페이스 역할을 합니다. 이벤트에 대한 스키마가 변경되면 영향을 받는 팀이 알아야 합니다. 새로운 분야인 경우, 나머지 팀들도 활용하여 직무 역량을 개선할 수도 있습니다. 그리고 역호환이 지원되지 않는 이벤트 변동인 경우, 그것을 생산하거나 소비하는 모든 사람이 인지하고 있어야 합니다.
NYC Modern Taxi는 애플리케이션별로 소유자를 배정하여 인식과 커뮤니케이션을 촉진합니다. 한 애플리케이션 팀에서 이벤트를 변경할 때 영향을 받을 애플리케이션 소유자가 제때 대처할 수 있도록 통보할 수 있는 방식입니다. Event Portal은 한명 이상의 소유자를 애플리케이션(또는 스키마, 이벤트)에 쉽게 배정할 수 있도록 지원하므로 시도하지 않을 이유가 없습니다.
모든 객체에서 소유자를 볼 수 있지만 NYC Modern Taxi에서는 검색을 통해 한 사람이 소유하고 있는 모든 스키마, 이벤트 및 애플리케이션도 쉽게 추적할 수 있습니다.
4. 개정에 어떤 문제가 있는지 파악하기
아무리 좋은 의도와 명확한 책임 한계가 있어도 때로 일이 잘못되기도 합니다. 결과적으로 NYC Modern Taxi의 아키텍처와 그 것이 어떻게 변경되었는지를 이해하는 것이 매우 중요합니다. 특히 운전기사들이 새벽 2시에 갑자기 앱에 로그인할 수 없는 일이 발생할 때 더욱 그렇습니다. PubSub+ Event Portal이 또 다시 해결해 드립니다!
복잡한 환경에서는 변경으로 인해 의도하지 않은 결과가 발생하기도 합니다. 변경된 사항, 변경된 시기, 변경 사유, 변경 담당자를 파악하는 것은 의도치 못한 결과를 해결하는 데 있어 중요한 단계입니다. PubSub+ Event Portal은 수정된 시기, 수정 담당자, 당시 스키마 내용을 포함하여 모든 객체에 대해 실행 중인 수정 내역을 보존합니다.
NYC Modern Taxi 지원 담당자는 또한 PubSub+ Event Portal을 통해 여러 버전(예: 모든 것을 파손한 현재 RideUpdated 버전과 문제가 없었던 과거 버전)을 비교하여 현재 다른 내용이 무엇인지 명확히 파악한 후, 잘못된 것에 대한 실마리를 제시할 수 있습니다.
유감스럽게도, 광범위한 조사를 거친 후에도 문제가 없어던 버전으로 돌아가는 것이 최고의 조치일 경우가 종종 있습니다. PubSub+ Event Portal을 사용하면 이 작업을 한 번의 클릭으로 수행할 수 있습니다.
5. 상세 설명 필드에 딥링크와 직접 링크 생성하기
다른 많은 기업들과 마찬가지로 NYC Modern Taxi도 생태계에 수많은 도구들이 있습니다. 다행히도 PubSub+ Event Portal의 객체 설명 필드에서 HTML 기능을 지원합니다. NYC Modern Taxi는 이러한 기능을 사용하여 GitHub 저장소로 연결되는 딥링크와 Boomi 내 소스 프로세스에 대한 직접 링크를 생성합니다.
6. 검색을 사용하여 Kafka 검색 결과 가져오는 방법 간소화하기
NYC Modern Taxi는 분석을 위해 모든 이벤트를 Kafka로 전송합니다. 모든 것을 그대로 유지하기 위해 PubSub+ Event Portal을 이용해 검색(Discovery) 도구를 통해 Kafka 이용자 그룹, 커넥터, 주제 및 스키마를 관리합니다. Kafka 객체를 가져올 때, PubSub+ Event Portal의 검색 기능을 사용하여 가져온 주제 목록을 동적으로 필터링할 수 있으므로 엔지니어들이 적절한 영역으로 신속하게 할당할 수 있습니다.
7. 애플리케이션에 대한 AsyncAPI 정의 내보내기
아직은 약간 덜 알려진 것이기는 하지만 NYC Modern Taxi에서 Spring Cloud Streams 애플리케이션(자체 빌드 가능)을 구동하기 위해 활용하는 좋은 팁입니다. 아키텍처 정의가 끝나면 PubSub+Event+ Portal에서 한 번의 클릭으로 애플리케이션에 대한 AsyncAPI 정의를 내보낼 수 있습니다.
Spring Cloud Streams로 개발을 시작하는 데 사용할 수 있는 AsyncAPI 정의의 YAML 또는 JSON 버전을 다운로드할 수 있습니다.
8. 여러 다른 영역에 객체 재지정하기
대부분의 조직과 마찬가지로 NYC Modern Taxi에서도 정기적으로 조직과 기술을 재편성하고 있습니다. PubSub+ Event Portal을 사용하면 이동 기능을 사용하여 조직의 현실을 반영하도록 객체를 다른 영역으로 쉽게 재지정할 수 있습니다.
이벤트 중심 아키텍처에 대한 이벤트 포털의 중요성
이벤트 중심 아키텍처를 채택하기로 결정했다면 PubSub+ Event Portal이 얼마나 편리한지에 대해 더 이상 강조하지 않겠습니다. 전체 팀에 협업으로 이벤트를 설계하고, 시스템 전반에서 재사용할 수 있도록 분류하며, 시간 경과에 따른 수명주기와 런타임을 모두 활발히 모니터링 및 관리할 수 있는 역량을 제공합니다.
이벤트 중심 아키텍처를 향한 여정의 시작 단계이든 한창 진행 중이든 관계없이, 그리고 PubSub+ Event Portal에 대해 배우는 중이든 아니면 가상 NYC Modern Taxi 회사의 입장에 있든 관계없이 이 게시글이 PubSub+ Event Portal과 같은 완벽한 기능의 이벤트 포털을 이용하면 이벤트 중심 아키텍처의 장점을 훨씬 더 쉽게 성취하고 유지할 수 있다는 점을 이해하는 데 도움이 되었기를 희망합니다.