전체 글
-
[MSA] 클루터 MSA 도입 회고STOVE DEVCAMP 3기/MSA 2023. 3. 10. 02:46
📌 MSA 도입 배경프로젝트 시작 전 백엔드 팀원들과 중점적으로 고려한 3가지 사항백엔드 팀원들 간의 효율적인 작업 수행구현 기능별 의존성을 줄여 자유로운 기술 선택서비스 규모가 커짐에 따라 기능 및 서버 확장이 쉬운 아키텍처 구성 이를 바탕으로 서비스별 독립된 구성을 제공하는 MSA 기반 아키텍처 도입하기로 함 📌 MSA 도입을 통한 기대효과작업 효율성각 서비스는 독립된 배포 단위를 가지므로, 병렬적인 작업과 테스트가 가능함기술 선택의 자율성제공하고자 하는 서비스(회원/트윗/알림)가 다양하고 개별 마이크로서비스로 구성되어 자유로운 기술스택 선정이 가능함서버 확장성소셜 네트워크 서비스인 '클루터'에서 가장 트래픽이 많을 것으로 예상되는 기능은 트윗 작성 및 피드 조회이므로, 해당 기능을 포함하고 있는..
-
[개념] 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
📌 요구사항모바일 푸시 알림만 지원함 (SMS, 이메일 알림 X)연성 실시간 시스템임알림은 가능한 빨리 전달되어야 하지만 시스템에 높은 부하가 걸렸을 때 약간의 지연은 무방함약간의 지연은 무방하지만 어떤 상황에서도 알림이 소실되면 안됨 → 데이터 손실 방지를 보장해줘야 함iOS, 안드로이드 단말 모두 지원함알림으로 전송할 모든 이벤트는 클라이언트에서 만들어 냄디바이스별 푸시 알림 ON/OFF 설정 가능함하루에 1000건(100명의 사용자 x 10건의 알림)의 모바일 푸시 알림을 보낼 수 있어야 함사용자별 알림 목록 조회가 가능함현재까지 받은 알림 전체 다 볼 수 있는 건가?비즈니스 요구사항이므로 팀원들과 함께 정할 필요 있음ex) 30일 치의 알림만 보여주기단건 알림과 다중 알림 모두 가능함다중 알림 ..