먼저 기존 모놀리식 구조에서 MSA 형태로 구조를 바꾸어 확장성과 유지보수성을 높여보고자 했습니다.
프로젝트는 총 5가지 서비스로 분리하였고, 각 서비스의 구성 내용 및 역할은 아래와 같습니다.
인증 처리 서버
인증 처리 서버는, 서버의 회원가입, 로그인, 세션 등의 인증과 유저 정보 등의 처리를 담당하는 서버 입니다.
MySQL을 활용하여 유저 정보를 저장하고, Redis를 사용하여 세션을 관리할 예정입니다.
포스팅 처리 서버
게시글에 관련된 포스팅, 댓글, 좋아요 등의 기능을 처리하고 각 사용자에게 최적화된 뉴스피드를 제공하는 역할을 담당하는 서버입니다.
MySQL을 활용하여 게시글에 대한 정보들을 저장하고, Redis를 활용하여 뉴스피드 내역을 캐싱하며 포스팅 API 서버는 포스팅 저장을 그리고 뉴스피드 API 서버에서는 뉴스피드 내역을 제공할 예정입니다.
채팅 처리 서버
실시간 채팅에 관련된 처리를 담당하는 서버입니다.
MySQL을 활용하여 채팅 내역을 저장하며, 웹소켓과 RabbitMQ를 사용하여 실시간 채팅을 제공할 예정입니다.
알림 처리 서버
팔로우, 좋아요, 댓글, 채팅 등의 사용자 활동에 대한 알람 처리를 담당하는 서버입니다.
RabbitMQ를 사용하여 사용자에 대한 각 서비스의 알람 내역을 수집하여 SSE를 통해 클라이언트에 제공할 예정입니다.
팔로우 처리 서버
사용자 간의 팔로우 정보를 관리하는 서버입니다.
사용자 팔로우 관계를 Redis를 사용하여 캐싱하고 제공할 예정입니다.
마지막으로, 각 서비스들 간의 통신에 대해서 결정하려 하는데 다음 포스팅에서 http 통신과 grpc 통신의 처리량을 비교해보며 판단해보려 합니다.
'Web > 인스타 클론 코딩' 카테고리의 다른 글
프로젝트를 리팩토링 해보자! (0) | 2024.09.05 |
---|---|
[인스타그램 클론코딩] 14. 마무리하며... (0) | 2023.02.16 |
[인스타그램 클론코딩] 13. 게시글 검색 기능 구현(Front-End) (0) | 2023.02.16 |
[인스타그램 클론코딩] 13. 게시글 검색 기능 구현(Back-End) (0) | 2023.02.16 |
[인스타그램 클론코딩] 12. 메신저 기능 구현(Front-End) (0) | 2023.02.16 |