Skip to content

프로젝트 구조

Dongmin Shin edited this page Dec 20, 2020 · 8 revisions

@ACENT 프로젝트 구조

한눈에 보는 도커 컨테이너 리스트

도커 구조

공통 사항

  • 프론트엔드, 백엔드, SDK 모두 타입스크립트를 도입
  • 프론트엔드와 백엔드 모두를 도커 컨테이너화하여 배포&운영
  • docker-compose로 프론트엔드,백엔드를 도커 이미지 빌드, 컨테이너 자동 실행하도록 docker-compose.yml 작성
  • 주기적인 배포 일자(보통 목요일)에 담당자가 스크립트 실행하여 배포

프론트엔드

React.js프로젝트 webpack 빌드 + Nginx를 묶어 도커 이미지 빌드, 컨테이너 실행
Nginx를 리버스 프록시로 사용
Nginx가 포트 80번으로 오는 모든 요청중 /api에 해당하는 요청은 백엔드 서버 컨테이너 두곳으로 분배하여 부하 분산
로드 밸런싱 알고리즘은 라운드 로빈 방식, 두 서버에 균등하게 트래픽 분배

  • 라운드 로빈 : 클라이언트의 요청을 순서대로 분배하는 방식

백엔드

DB

MongoDB 도커 컨테이너

api 서버

pm2 클러스터 모드 + express.js를 묶어 도커 이미지 빌드 및 컨테이너 실행

  • pm2 클러스터 모드로 실행하는 서버의 cpu 코어수에 비례하여 node intance 실행, cpu 자원 효율적으로 이용하고 서버 안정성 강화

로컬(코어수 12) 실행시킨 api 서버 컨테이너

pm2

  • 빌드된 api 서버 이미지를 통해 서버 컨테이너 두개 실행하여 nginx로부터 오는 요청을 처리

SDK

  • 유저의 프로젝트에 설치되어 에러 이벤트를 수집하고 api서버로 전송, mongodb에 에러 이벤트 저장
  • npm에 배포
Clone this wiki locally