Skip to content
@2022-Winter-Bootcamp-Team-D

2022-Winter-Bootcamp-Team-D

Introduction

Waiter

언제 어디서든 편하고 쉬운 웨이팅.

원격 웨이팅 앱, ‘웨이터’는 맛있는 음식을 위해 고대하는 손님들을 위한 서비스 앱입니다.


Demo

가게 등록 및 회원가입 고객 회원가입
가게 등록 및 회원가입 고객 회원가입
점주 로그인 고객 로그인
가게 등록 및 회원가입 고객 로그인
대기자 호출 호출 알림
가게 등록 및 회원가입 대기자 호출
대기자 입장 1순위 알림
가게 등록 및 회원가입 대기자 호출
대기 취소 취소 알림
가게 등록 및 회원가입 대기자 호출

System Architecture


ERD

image


API

imageimageimage


Tech Stack

Front-end

icon icon icon
icon icon

  • React, ReactNative
  • TypeScript, Naver Map API

저희 Waiter는 상업주와 소비자 모두를 대상으로하는 플랫폼형 서비스입니다.
이에 따라 두 라이브러리간 상호보완이 잘 되고, 컴포넌트 관리가 용이한 ReactReactNative를 채택하였습니다.
이 과정에서 개발의 효율성을 위하여 TypeScript를 적용하였습니다.
또한 사용자의 위치 현황과 주변의 인프라 정보를 수집하고자 Naver Map API를 적용하였습니다.


Back-end

icon icon
icon
icon icon
  • Django, PostgreSQL
  • FireBase
  • JWT, Redis

다양한 라이브러리와 클래스 매핑이 가능한 Python 기반 프레임워크인 Django를 사용하였습니다.
DB로는 이와 호환성이 좋은 PostgreSQL를 채택하였고 WSGI를 위한 Gunicorn을 적용하였습니다.
특정 안드로이드 기기에 대하여 알람을 보내주기 위해서 FireBase Cloud Messaging 기술을 적용하였습니다.
로그인시 JWT 토큰을 적용하였으며, 해당 토큰을 관리하기 위해서 Redis를 적용하였습니다.


DevOps

icon icon icon

  • NGINX
  • ElasticSearch, logstash
  • Amazon RDS, Github Actions

Reverse Proxy를 위한 Nginx사용하였습니다.
또한 원하는 음식과 가게를 검색하기 위해서 검색엔진으로 ElasticSearch를 적용하였습니다.
지속적으로 변화하는 가게의 정보들의 실시간으로 연동을 해주기 위해서
logstash를 이용해서 DB의 변동사항을 ElasticSearch로 연동해주었습니다.
보다 간편한 DB의 설정과 협업을 위해서 Severless DB인 Amazon RDS를 사용하였습니다.
Github Action을 이용하여 CI/CD를 적용하였습니다.


Monitoring


  • Prometheus, Grafana
  • node-exporter

배포를 진행한 EC2 인스턴스의 metric 정보를 수집하고, 통합 모니터링 환경을 위해 PrometheusGrafana를 사용하였습니다.
node-exporter를 통해 받은 메모리, 디스크, 네트워크 사용량 및 장고 백엔드를 연결하여 request 데이터를 저장하기 위해 사용했습니다.


ETC

icon icon icon icon

Monitoring

Grafana & Prometheus

Prometheus Node exporter
Grafana

How to run

Clone Repository

$ git clone https://github.com/2022-Winter-Bootcamp-Team-D/docker.git

루트 경로에 .env 파일 생성

DPOST_ENGINE=
POST_HOST=
POST_PORT=
POST_NAME=
POST_USER=
POST_PASSWORD=
DEBUG=
EC2_HOST=
SECRET_KEY=

/backend/ 경로에 .env 파일 생성

SECRET_KEY = 

POST_HOST = 
POST_PORT = 
POST_NAME = 
POST_USER = 
POST_PASSWORD = 

실행

$ docker-compose up --build


Team Members

Name 장현우 조현민 정혜린 강민아 강재혁
Profile
role Team Leader
Frontend,
Backend, DevOps
Backend,
DevOps
Frontend Frontend Backend
GitHub @aswooo @Chynmn @HAERYN @mineii @ggamD00

Pinned

  1. reactNative-repo reactNative-repo Public

    TypeScript 3 1

  2. backend backend Public

    Python 3 1

  3. react-repo react-repo Public

    TypeScript 3 1

  4. docker docker Public

    Shell 2 1

Repositories

Showing 5 of 5 repositories

Top languages

Loading…

Most used topics

Loading…