개발자
안녕하세요! 일단 저는 비개발 직군인 그로스 PM 입니다 :) 저희 앱서비스는 React Native 프레임워크에 Node.js 언어를 사용 중인데요! 유저 간에 서로 상품을 거래할 수 있는 서비스입니다. 유저가 키워드 알림을 등록해 놓으면 -> 해당 키워드가 포함된 제목을 가진 상품 게시글이 등록되었을 때 푸시 알림을 보내고 싶습니다. (User ID - Keyword 테이블 구성 필요) 그런데 문제는 상품 게시글이 등록될 때마다 유저-키워드 테이블을 검사하면 서버에 과부하가 오지 않을까 하는 걱정이 있습니다. 그리고 현재 저희 서비스에는 Elasticsearch 엔진이 적용되어 있지 않습니다. 지금까지 조사한 바로는, 1. 유저가 키워드 알림으로 등록한 텍스트를 '가변 배열' 안에 넣어 둔다. 2. 상품 게시글이 등록될 때, 타이틀 텍스트 정보만 'Notification Center'에 등록한다. 3. 키워드가 들어 있는 가변 배열의 요소를 돌면서, 어떤 키워드가 Notification Center를 통해 받은 텍스트 속에 있는지 확인한다. 4. 해당하는 키워드가 발견된다면 매칭되는 유저에게 푸시 알림을 보낸다. 제가 '가변 배열'과 'Notification Center'에 대한 이해가 부족하다보니, 이렇게 하면 서버 과부하 문제가 좀 덜어지는 게 맞는지 판단이 어렵습니다... 혹은 작업을 백그라운드에서 하는 방법도 있는 것 같은데요, 게시글이 발행되었음을 알리는 이벤트를 생성한 다음, 백그라운드 작업(큐 or 스케줄러)에서 해당 이벤트를 가져와서 처리합니다. 이렇게 하면 서버 부하가 완화되고 알림 전송 시간도 최적화할 수 있다고 합니다. 개발자 분들의 시선에서 납득이 가는 솔루션일까요?! 혹은 더 간단한 방법이 있는지 알려주셔도 좋을 것 같습니다. 긴 글 읽어주셔서 감사합니다 :)
답변 0
첫 답변을 기다리고 있어요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 10월 18일
알림 시스템을 설계하는 것은 간단하지 않지만, 고려해야 할 몇 가지 주요 사항이 있습니다. 먼저 상품 게시를 처리하는 방식에 따라 약간 다르겠지만, 일반적으로는 이런 형태의 시스템에서 게시글을 등록할 때마다 모든 키워드와 사용자를 검사하는 것은 비효율적일 수 있습니다. 이렇게 하면 데이터베이스 요청이 많아지고, 대량의 데이터를 처리해야 하기 때문에 성능 문제가 발생할 수 있습니다. 대신, 서버에서 '게시' 이벤트가 발생하면 각 키워드에 대한 색인을 유지하는 것이 한 가지 방법일 수 있습니다. 예를 들어 Elasticsearch 같은 전문 검색 엔진을 사용하면, 상품 제목에 포함된 키워드로 쉽게 색인을 만들 수 있습니다. 그럼 게시글이 추가될 때마다 해당 제목을 분석하고 관련 키워드를 찾아서 그것과 연관된 사용자(들)에게 알림을 보낼 수 있는 구조가 됩니다. 그러나 이 경우도 상당한 양의 데이터를 처리해야 하므로 오프라인 작업으로 바꾸는 것이 좋을 수 있습니다. 즉, 게시글이 발행되었음을 알리는 이벤트를 생성한 다음, 백그라운드 작업(예: 큐나 스케줄러)에서 해당 이벤트를 가져와서 처리합니다. 이렇게 하면 시스템의 부하를 분산시키고 알림 전송 시간을 최적화할 수 있습니다. 앞서 언급한 '가변 배열'과 'Notification Center'에 대해 고민하셨다고 해서 말씀드리면, 그릇된 방법은 아니지만 이 경우 각 키워드에 대한 사용자 리스트를 유지하는 것이 중요합니다. 또한 이 방식은 Notification Center의 용도나 구현 방식에 따라 실행 성능이 달라질 수 있습니다. 물론 최적의 해결책은 특정 상황과 요구사항, 그리고 사용 가능한 리소스에 따라 달라집니다. 아마 개발 팀과 상의하며 가장 적절한 접근 방식을 결정하실 수 있으리라 생각합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!