뒤로
정종학
정종학 ·

서비스 알림 시스템 구축을 위한 Kafka 리서치

모카클래스 웹 서비스에는 Host 유저와 Guest 유저 대상의 다양한 알림들이 있습니다.


서비스내에서 사용 중인 알림 종류와 채널 분류

[호스트]

  • 가입 환영 알림
  • 클래스 등록 승인 알림
  • 댓글 알림
  • 채팅 알림
  • 결제 발생 알림
  • 수강 당일 알림
  • 취소 알림
  • 정산 알림
  • 강사 초대 알림


[게스트]

  • 가입 환영 알림
  • 결제 완료 알림
  • 댓글 알림
  • 채팅 알림
  • 수강 하루 전/당일 알림
  • 수강 완료 후 후기 요청 알림
  • 취소 알림
  • 친구 초대 알림



알림 채널

  • 기본 서비스 내 알림
  • 이메일 알림
  • 카카오톡 알림톡
  • SMS문자
  • iOS Push
  • Android Push


알림 시점

  1. 즉시 알림
  2. 예약 알림



현재는 모놀로직 벡엔드 내에서 알림 채널별 API와 연동하여 알림을 발송하고 있지만, 알림을 발송할 채널들이 늘어가고, 즉시 발송, 예약발송 등으로 알림 발송이 복잡해 짐에 따라 이를 보다 심플하면서도 체계적으로 관리 개발이 가능한 이벤트 Pub/Sub 구조에 대한 고민을 하며 여러가지 방식에 대해 고민을 하게 되었습니다.


위의 고민을 해결해 줄수 있는 여러 방식이 있었고 그 중 하나로 Kafka를 리서치하게 되었습니다.


Kafka event bus 리서치


  • 다량의 복잡한 event Pub/Sub 구조 및 마이크로서비스로 인해 파편화 되고 복잡해진 아키텍처를 Kafka를 중간에 이벤트 버스로 두고 사용한다면 전체 아키텍처를 심플화 할 수 있을 것
  • 사용 및 운영 편의성을 위해 Confluent와 같은 managed SaaS 서비스를 고려
  • 다만 가격적인 부분이 고려사항 (초기에는 저렴하더라도 사용량이 많아져 비싸진 이후에는 의존성으로 안쓰기가 힘들 수 있음)


  1. Confluent Kafka의 도입을 고려
  2. Node.js back-end 에서는 (https://github.com/tulios/kafkajs) 라이브러리 사용 고려
  3. Pub/Sub 형태는 (https://ridicorp.com/story/how-to-use-kafka-in-ridi/?utm_source=oneoneone) 를 참고
  4. 이벤트 스키마는 CloudEvent 양식을 참고 (https://cloudevents.github.io/sdk-javascript/)



모카클래스 (https://mochaclass.com)


모카클래스

동네 취미 클래스 (중개 플랫폼 + CRM)

4

댓글

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.