AOMC-Coop / AOMC

스케일 아웃 아키텍처를 구현한 웹 채팅 서비스 (2019 스마일게이트 개발 캠프)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AOMC

프로젝트 개요

협업용 채팅 서비스 Slack의 핵심 기능 및 구조를 Spring Boot와 Vue.js를 통해 구현했습니다.

프로젝트 목표

1. Slack의 핵심 기능 모두 구현

2. 스케일 아웃이 가능한 서버 아키텍처 설계

3. 서버 성능 측정 및 개선

1. 기능

  • 회원가입 및 로그인

  • 이메일 인증

    회원가입 및 팀 초대시 이메일 인증을 거칩니다.

  • 팀 생성 및 초대

    Slack과 같이 팀을 만들고, 팀원을 초대할 수 있습니다.

  • 채널 생성 및 초대

    채널은 팀 내 소규모 채팅방입니다. 개설한 팀에서 채널을 만들고, 채널 구성원을 초대할 수 있습니다.

  • 채팅

  • 파일 업로드 및 다운로드

coop-chatting


2. 아키텍처

Coop

  • 스케일 아웃 서버 아키텍처
    • 인증 서버
      • 유저가 로그인하여 발급받은 토큰을 Redis에 저장합니다. 인증 정보가 필요한 모든 서버는 여러 대의 인증 서버가 아닌 Redis를 조회하면 됩니다.
    • 채팅 서버
      • 각 채팅 서버가 메시지 큐(RabbitMQ)를 가지고, 동일한 채팅 내용을 각 큐에 전송하는 구조를 적용했습니다. 같은 채널 내 유저들이 다른 채팅 서버에 접속해있더라도 채팅 내용이 동기화됩니다.
  • 사용자는 Nginx를 통해 서버와 통신합니다.

3. 성능

  • TPS : 249.5

Coop

성능 측정 환경 세부 정보
성능 테스트 툴 nGrinder
호스팅 랩탑 CPU Intel i7-6700HQ 2.60GHZ
호스팅 랩탑 OS CentOS 7
Vuser 수 3,000

역할

  • 이윤재 : ChatAPI 서버, Chatting 서버, Nginx, nGrinder, Vue.js

  • 이은미 : ChatAPI 서버, Chatting 서버, Vue.js

  • 최가람 : 인증 서버, 파일 서버, CentOS 배포, Vue.js

About

스케일 아웃 아키텍처를 구현한 웹 채팅 서비스 (2019 스마일게이트 개발 캠프)

License:GNU General Public License v3.0


Languages

Language:Java 35.3%Language:Vue 21.2%Language:HTML 20.8%Language:JavaScript 9.2%Language:TeX 8.3%Language:CSS 5.1%Language:Batchfile 0.1%Language:Makefile 0.1%Language:Stylus 0.0%