Skip to content
This repository has been archived by the owner. It is now read-only.
DMS Server with Flask
Python Other
  1. Python 99.1%
  2. Other 0.9%
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Server
.gitignore
.scrutinizer.yml
.travis.yml
Dockerfile
LICENSE
README.md
hook.sh
mongo_backup.sh

README.md

DMS for DSM - Backend Build Status Coverage Status Scrutinizer Code Quality Code Intelligence Status

Technical Stack

Software Stack

  • Python
  • Flask

WAS

  • nginx

Database

  • MongoDB(메인 데이터베이스) with Sharded Cluster
  • Redis(Expire가 필요하거나 latency가 적어야 하는 캐싱 데이터)

API Architecture

  • REST

Host

  • cafe24

API Documentation

  • Swagger

TDD

  • Travis-CI
  • Coveralls(커버리지 리포트)
  • Scrutinizer(코드 퀄리티 관리)

Continuous Delivery

  • Github Webhook(Continuous Delivery)

Monitoring

Application Performance

  • None

Infrastructre Performance

  • None

Log Managmenet

  • InfluxDB
  • Grafana

Container

  • None

Message Queue

인프라 구축 과정에서의 특별한 점

Swagger

  1. 모든 API에 Swagger로 문서를 작성하고, 환경 변수로 관리되는 경로에서 문서를 제공합니다.

Travis-CI

  1. sudo를 false로 두어, Ubuntu Trusty 빌드 환경에서 docker 기반으로 빌드되도록 합니다. 이는 부팅 시간이 줄여 빌드 시간을 줄이기 위함입니다.
  2. 모든 솔루션들을 docker 기반으로 실행합니다. apt-get 이후 서비스로 돌리는 것보다 이슈가 적고, 커맨드도 직관적이기 때문입니다.
  3. before_script에서 cd Server 커맨드를 실행합니다. 개발 시 프로젝트를 Server 디렉토리로 잡기 때문에, 프로젝트 root directory를 Server/로 설정하여 로컬 테스트와 CI의 테스트 환경을 동일하게 하기 위함입니다.
  4. run_test.py를 coverage 유틸리티로 실행합니다. .coveragerc 파일을 생성하여 coveralls에 업로드하고, 커버리지 리포트하기 위함입니다.
  5. notification을 이메일이 아닌 slack 채널에 보냅니다.

Scrutinizer

  1. web_filesexcluded_paths에 등록하여, 코드 퀄리티 측정 대상에서 제외합니다.

Database

  1. Cafe24 ubuntu에서 apt-get을 실행할 때 발생하는 dpkg 관련 이슈 때문에, docker를 설치할 수 없어 screen에 MongoDB와 InfluxDB를 실행해 두었습니다.
  2. MongoDB는 기본적으로 인증을 거치지 않는 형태로 동작합니다. 이는 외부에서 별도의 ID/PW 없이 바로 접근하여 DB를 조작할 수 있게 됩니다. MongoDB는 ID/PW로 접근하는 기본적인 보안 모델을 가지고 있으며, 일반적인 RDB들과 다르게 하나의 DB에 하나의 사용자가 할당되는 형식입니다. root라는 role을 가진 관리자 계정을 만들고, mongod --auth로 mongodb 서버를 재시작한 후, DMS 서버를 위한 계정을 별도로 생성하였습니다. 데이터베이스 비밀번호는 환경 변수에서 관리됩니다.

특수한 전제

연장신청

  • 11시 연장신청은 매일 오후 5시 30분부터 8시 30분까지
  • 12시 연장신청은 매일 오후 5시 30분부터 10시까지

외출신청

  • 확실히 정해진 조건 없음

잔류신청

  • 매주 일요일 오후 8시 30분부터 목요일 오후 10시까지

설문조사

  • 한번 업로드한 설문조사는 수정 불가능

Contributors

You can’t perform that action at this time.