AI Briefing

이벤트 드리븐 아키텍처를 적재적소에 활용하기

·2023.03.21 19:00

복잡한 슬랙 메시지 구조를 효율적으로 처리하기 위해 Jackson을 활용한 이벤트 드리븐 아키텍처를 구현했다.

사내 해커톤에서 개발한 슬랙봇 '죠르디 회의봇'은 모든 비즈니스 로직에 이벤트 기반 구조를 적용했다. 슬랙 API는 보안 규정상 웹훅 대신 웹소켓 방식을 사용하는데, 모든 종류의 상호작용이 단일 엔드포인트를 통해 하나의 JSON 형태로 전달된다는 특징이 있다.

슬랙 메시지는 상위 타입에서 하위 타입으로 분기되는 트리 구조를 가지며, 특정 메시지를 구분하려면 여러 단계의 type 필드를 확인해야 한다. 이로 인해 메시지 해석 시 반환 클래스 타입이 가변적이며, 내부 데이터를 먼저 확인해야만 적절한 클래스로 변환할 수 있는 문제가 발생한다.

이를 해결하기 위해 JacksonJsonDeserializer를 활용하여 메시지를 해석하고 이벤트를 발생시키는 구조를 설계했다. KotlinSpring 환경에서 중간 객체를 통해 type 필드를 재귀적으로 확인하며, 각 메시지에 대응하는 구체적인 SlackEvent 클래스로 변환한다.

이렇게 변환된 이벤트는 EventPublisher를 통해 발행되어, 복잡한 메시지 구조에 유연하게 대응하면서도 비즈니스 로직을 깔끔하게 분리할 수 있다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.