User Activity Tracking 아키텍쳐
- 고객의 페이지 뷰, 클릭등의 구체적인 행위를 수집하여 고객 행동을 분석/모니터링하고, 이를 통해 기능 개선이나 비즈니스 의사결정의 중요한 데이터로 활용
- 가능한 한 많이 수집하여 저장해 놓고, 이후 필요해 따라 적절히 가공하여 다양한 용도로 사용
- 데이터 수집은 고객에게 제공할 핵심 가치는 아니므로, 데이터 수집을 위해 Application 성능이나 기능에 영향을 끼쳐서는 안됨. 비동기 Batch 전송등을 활용하여 매우 심플하게 처리하는 것이 좋은 선택임
- 데이터 규모가 매우 크고 폭발적으로 늘어날 수 있음을 고려해서 확장에 유연한 수집/저장 프로세스를 아키텍쳐링 해야함
- 인터넷 네트워크상의 문제로 수집 서버로 데이터가 전달되지 않을 가능성도 있는만큼, 유실없는 완벽한 수집 보다는 빠르고 지속적인 수집에 좀 더 관심 (acks=1)
- 사용자 활동 추적은 개인 정보 보호에 영향을 미칠 수 있으므로 수집하는 데이터와 사용 방법을 고객에게 투명하게 공개하고 사용자가 원하는 경우 추적을 거부할 수 있는 옵션을 제공하는 것도 중요함
비즈니스 Application 간의 Messaging
- 비즈니스 도메인 간의 비동기 프로세스에 사용되는 메세지 브로커로서, ActiveMQ, Rabbit MQ 등을 대체
- 예를 들어, 메세지 발행자 시스템의 트랜잭션이 완료된 후 해당 이벤트에 따른 후속 프로세스가 필요한 다른 시스템에 트랜잭션 결과를 통지
- 결재시스템의 프로세스를 완료하고, 배송 도메인에 결과 메세지를 전달.
- 회원 가입 프로세스를 완료하고, 마케팅 도메인에 회원가입 결과 메세지를 전달.
- 마케팅 도메인에서 고객에게 발송할 메세지 전송 요청건을 생성하여, 메세지 발송 도메인에 전달 등
- 메세지 유실 가능성을 최소화 할 수 있도록, 강화된 프로듀서 설정(ack=all)을 하거나, 컨슈머에서 dead leatter queue(topic)를 사용하여 재처리 프로세스를 만들 수 있음. 데이터 누락이나 오류시 매우 크리티컬한 정보라면 별도의 대사 프로세스를 만들어 무결성을 체크하는 경우도 있음.