no image
Nosql MongoDB를 알아보자
시작 현재 메신저 서비스를 보면 다른 테이블에서 Message 테이블을 참조할 일은 딱히 보이지 않는다. Message를 FK로 사용할 일이 없다면 관계형보단 일반적으로 I/O가 빠른 Nosql을 사용해도 되지않을까? MongoDB를 알아보자. Document는 JSON {} 형태로 구성된다. Field는 Column처럼 고정되지 않고 자유로운 key : value 형태이다. value는 boolean, array([ ]), null, nested한 document({ }) 등이 가능하다. Document { _id: ObjectId('64f9eb1cdb80f40007827e02'), text: '안녕하세요', 'boolean': true, array: [ 1, 2, 3, 4 ], empty: null ..
2023.09.08
no image
Message service 아키텍처
Message service 아키텍처 현재 현재 구조에서 트래픽이 많아질 때 문제를 생각해보면 다음과 같다. 1. socket 연결의 리소스 점유와 많은 트래픽으로 pub/sub 속도가 느려진다. 2. pub/sub 속도는 충분하지만 db처리가 느리다. 서버를 늘린다면? 그럼 채널 기준으로 서버를 늘리면 될까? 채널 수와 그에 따른 socket 연결의 리소스는 해결되지만 특정 몇몇 채널에서 엄청난 볼륨의 메세지가 트래픽의 주요 원인이라면 해결되지 않는다. 결론 그래서 채널을 기준으로 나누지 않고 사람을 기준으로 라운드 로빈으로 로드 밸런싱하는 접근을 생각해본다. 이 구조에선 어떤 유저가 어떤 pub/sub을 바라볼지 모른다. 그래서 특정 서버의 pub은 모든 서버의 pub으로 전파되어야 한다. 그 전파의..
2023.08.27
no image
회비관리 메신저 서비스 - ERD, API
2023.07.31 - [프로젝트/회비관리 메신저 서비스 (07.28~)] - 회비 관리 메신저 서비스 - 와이어프레임, ERD, API, 브런치 회비 관리 메신저 서비스 - 와이어프레임, ERD, API, 브런치 대용량 트래픽을 처리하는 MSA기반 회비관리 메신저 서비스 2023.07.31 - [프로젝트/회비관리 메신저 서비스] - 메신저 서비스 프로젝트 ERD, API 설계 라이브 음성/화상은 성능향상을 위한 포인트를 cornpip.tistory.com ERD, 와이어 프레임, API 링크는 기존 포스팅에서 볼 수 있다. 현재 ERD는 위와 같고 Wallet은 @Inheritance(strategy = InheritanceType.JOINED) 을 사용한 슈퍼타입이고 GroupWallet, Perso..
2023.08.08
no image
회비 관리 메신저 서비스 - 와이어프레임, ERD, API, 브런치
대용량 트래픽을 처리하는 MSA기반 회비관리 메신저 서비스 2023.07.31 - [프로젝트/회비관리 메신저 서비스] - 메신저 서비스 프로젝트 ERD, API 설계 라이브 음성/화상은 성능향상을 위한 포인트를 찾고 개선하기가 쉽지않다는 피드백을 받고 기획을 변경했다. 메신저와 나머지는 목표는 그대로고 라이브 음성/화상을 빼고 카카오 뱅크같은 모임/개인 통장 관련 기능을 추가한다. 와이어프레임 피그마 링크 Figma Created with Figma www.figma.com ERD drawio 링크 회비 관리 메신저 서비스ERD.drawio drive.google.com ERD가 수정하다 보니 관계가 한 눈에 안들어온다. 나중에 정리해야 한다. API https://editor.swagger.io/ Sw..
2023.07.31
no image
메신저 서비스 프로젝트 ERD, API 설계
ERD drawio 링크 API spring cloud를 사용해 MSA로 설계해보고자 한다. MVP 목표는 다음과 같다. ERD 설계가 동작하는 API Message(text), 음성 서비스 파일 전송, 기본 Message(text)검색
2023.07.31