STOVE DEVCAMP 3기/알림 서비스
-
[알림 서비스] 알림 서비스 데이터베이스 설계STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 02:59
📌 선정 데이터베이스 및 이유 1) 선정 데이베이스 : MongoDB 2) 선정 이유 A. 알림 데이터가 문서 데이터베이스에 적합함 하나의 알림 객체에서 데이터를 부분적으로 사용하는 경우가 없다. 각 알림 데이터는 독립적으로, 중복되는 데이터가 없어 별도 정규화가 필요하지 않다. schema-less 구조로 유연한 스키마 대응이 가능하다. 알림 관련 스펙은 구조의 변경이 잦을 수 있음 B. TTL(time-to-live) 인덱스를 지원함 특정 일자 이후의 알림은 보이지 않게 한다면, 알림 데이터를 모두 쌓아둘 필요는 없음 C. DB 인프라 팀에서 지원함 참고 https://engineering.linecorp.com/ko/blog/LINE-integrated-notification-center-from-..
-
[개념] MongoDB 알고 사용하기 - 데이터 모델링STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 02:13
개요 하나의 MongoDB 인스턴스는 여러 개의 데이터베이스(scheme)를 가질 수 있고, 각 데이터베이스는 다시 여러 개의 컬렉션을 가진다. 데이터베이스와 컬렉션 1) 네임스페이스 MongoDB에서 데이터베이스 이름과 컬렉션의 이름 조합을 '네임스페이스'라고 한다. WiredTiger 스토리지 엔진에서는 별도의 네임스페이스 파일을 사용하지 않기 때문에 MMAPv1 스토리지 엔진과 달리 최대로 생성할 수 있는 컬렉션이나 인덱스의 개수에 제약이 없다. 2) 데이터베이스 WiredTiger 스토리지 엔진은 MySQL과 동등한 수준인 도큐먼트(레코드) 수준의 잠금을 제공한다. 3) 컬렉션 샤딩 관점 MongoDB는 내부적으로 이미 샤딩 기능을 가지고 있기 때문에 컬렉션 단위의 샤딩은 별도로 크게 고려하지 않..
-
[개념] MongoDB 알고 사용하기STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 02:12
💡 참고 Real MongoDB 📌 MongoDB vs. RDBMS(MySQL) MongoDB RDBMS(MySQL) 데이터베이스 (database) 데이터베이스 (database) 컬렉션 (collection) 테이블 (table) 도큐먼트 (document) 레코드 (record or row) 필드 (field) 컬럼 (column) 인덱스 (index) 인덱스 (index) 쿼리의 결과로 cursor 반환 쿼리의 결과로 record 반환 쿼리의 결과로 "커서(Cursor)" 반환 MongoDB는 쿼리 결과로 커서를 반환하는데, 커서를 통해 실제 도큐먼트(레코드)를 가져올 수 있다. MongoDB에서 쿼리의 결과로 커서를 반환하는 이유는 쿼리의 결과를 클라이언트 서버의 메모리에 모두 담아두지 않아도 ..
-
[알림 서비스] 전체 구성 설계STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 01:57
💡 참고 대규모 시스템 설계 책 ifkakao 알림 서비스 발표 당근마켓 PUSH 알림 서비스 구성 블로그 📌 요구사항 모바일 푸시 알림만 지원함 (SMS, 이메일 알림 X) 연성 실시간 시스템임 알림은 가능한 빨리 전달되어야 하지만 시스템에 높은 부하가 걸렸을 때 약간의 지연은 무방함 약간의 지연은 무방하지만 어떤 상황에서도 알림이 소실되면 안됨 → 데이터 손실 방지를 보장해줘야 함 iOS, 안드로이드 단말 모두 지원함 알림으로 전송할 모든 이벤트는 클라이언트에서 만들어 냄 디바이스별 푸시 알림 ON/OFF 설정 가능함 하루에 1000건(100명의 사용자 x 10건의 알림)의 모바일 푸시 알림을 보낼 수 있어야 함 사용자별 알림 목록 조회가 가능함 현재까지 받은 알림 전체 다 볼 수 있는 건가? 비즈니..