이벤트 드리븐 아키텍처를 적재적소에 활용하기
·2023.03.21 19:00
핵심 내용
복잡한 슬랙 메시지 구조를 효율적으로 처리하기 위해 Jackson을 활용한 이벤트 드리븐 아키텍처를 구현했다.
1 / 2
자세히 보기
사내 해커톤에서 개발한 슬랙봇 '죠르디 회의봇'은 모든 비즈니스 로직에 이벤트 기반 구조를 적용했다. 슬랙 API는 보안 규정상 웹훅 대신 웹소켓 방식을 사용하는데, 모든 종류의 상호작용이 단일 엔드포인트를 통해 하나의 JSON 형태로 전달된다는 특징이 있다.
슬랙 메시지는 상위 타입에서 하위 타입으로 분기되는 트리 구조를 가지며, 특정 메시지를 구분하려면 여러 단계의 type 필드를 확인해야 한다. 이로 인해 메시지 해석 시 반환 클래스 타입이 가변적이며, 내부 데이터를 먼저 확인해야만 적절한 클래스로 변환할 수 있는 문제가 발생한다.
이를 해결하기 위해 Jackson의 JsonDeserializer를 활용하여 메시지를 해석하고 이벤트를 발생시키는 구조를 설계했다. Kotlin과 Spring 환경에서 중간 객체를 통해 type 필드를 재귀적으로 확인하며, 각 메시지에 대응하는 구체적인 SlackEvent 클래스로 변환한다.
이렇게 변환된 이벤트는 EventPublisher를 통해 발행되어, 복잡한 메시지 구조에 유연하게 대응하면서도 비즈니스 로직을 깔끔하게 분리할 수 있다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.