Skip to content

반려견 출장목욕 서비스 몽글몽글 서버

License

Notifications You must be signed in to change notification settings

PBTP/mongle-server

Repository files navigation

🐶 Mongle-Server

- 반려견 디지털 플랫폼 프로젝트의 일환인 Mongle의 서버 저장소입니다.

🌟 프로젝트 목표

우리 팀은 기술의 탐구와 공부를 통해 창의적인 서비스를 제작하고자 합니다. 이 과정에서 서비스 배포 및 운영을 넘어, 실제 상용화에 도전하여 반려견 산업에 혁신을 가져오고자 합니다.

🚀 미션 및 비전

  • 현재 상황: 전세계적으로 반려견 산업의 매출이 지속적으로 증가하고 있습니다. 다양한 반려견 관련 사업이 등장하고 있지만, 디지털 분야에서의 활용은 상대적으로 미약합니다.

  • 우리의 비전: 저희는 반려견 산업에 특화된 디지털 플랫폼을 통해 고객에게 편리성, 안정성, 효율성을 제공하고자 합니다. 이를 통해 고객들이 더욱 풍부한 경험을 할 수 있게 하며, 반려견과의 삶을 더욱 행복하게 만들고자 합니다.

👐 팀원 소개

고지훈
@emibgo2

🛠️ 기술 스택

Application

Nestjs TypeScript TypeORM
v10.3.2
v5.4.3
v0.3.2

Database & Storage

PostgreSQL Redis OpenSearch
v16.3
v7.1.0
v2.13

DevOps

EC2 Lambda SQS CloudFront ParameterStore
Nginx Grafana GitHub Actions Docker

📄 개발 문서

🗄️ ERD

🌐 AWS 인프라 구조

CI/CD 프로세스

  • CD

image

Git 커밋 메시지 가이드라인 📝

커밋 메시지는 한국어와 영어를 편하게 섞어 사용할 수 있습니다. 커밋 컨벤션 규칙은 아래 태그를 참고해주세요.

자주 사용하는 태그 종류

  • Feat: 새로운 기능을 추가하는 경우
  • Fix: 버그를 고친 경우
  • Docs: 문서를 수정한 경우
  • Style: 코드 포맷 변경, 세미콜론 누락 등 코드 수정이 없는 경우
  • Refactor: 코드 리팩토링
  • Test: 테스트 코드 추가 또는 리팩토링 테스트 코드 추가
  • Chore: 빌드 업무 수정, 패키지 매니저 수정
  • Design: CSS 등 사용자가 UI 디자인을 변경한 경우
  • Rename: 파일명 또는 폴더명을 수정한 경우
  • Remove: 코드(파일)를 삭제한 경우. "Clean", "Eliminate"를 사용하기도 함

기타 태그

  • Add: 코드나 테스트, 예제, 문서 등의 추가 생성
  • Improve: 향상된 기능 추가. 호환성, 검증 기능, 접근성 등이 포함됨
  • Implement: 코드가 추가된 정도보다 더 주목할만한 구현체를 완성했을 때
  • Move: 코드 이동이 있는 경우
  • Updated: 계정이나 버전 업데이트 시 사용. 주로 코드보다는 문서나 리소스, 라이브러리 등에 사용
  • Comment: 필요한 주석 추가 및 변경

브랜칭 전략 (Git Flow) 🌿

브랜치 관리의 명확성

  • Feature, Develop, Release, Hotfix, Master 등의 명확한 브랜치 구조를 제공

배포 안정성

  • Release 브랜치에서의 테스트와 QA 과정을 통해 안정성이 검증된 기능들이 Master 브랜치로 병합되어 배포되므로 안정성이 높음

안정성

  • Main 브랜치에서는 직접 푸시를 막아서 안정성을 고려

브랜치 종류

  • main: 최상위 브랜치로, 최종 배포 버전 소스가 저장
  • dev: 릴리즈 준비가 된 브랜치. 모든 Feature 브랜치는 Develop에 병합
  • feature: 개별 기능 구현과 버그 해결 시 사용하는 브랜치. Master 브랜치에는 직접 접근 불가

브랜치 작업 순서

  • Feat → dev → Main 순서

PR 통해 소스 코드 병합

  • 리뷰어가 서로의 코드를 확인

Merge 전략

  • feature → dev: Squash and Merge
  • 여러 개의 커밋을 하나의 커밋으로 합쳐서 기록
  • feature 브랜치는 dev 브랜치에 병합 후 제거
  • dev → main: Rebase And Merge

GitHub Branch Rule 추가

  • Require a pull request before merging: Merge 전 코드 리뷰 필요
  • 최소 인원 1명 설정
  • Require status checks to pass before merging: 테스트 실패 시 Merge 불가 (현재는 체크하지 않음)

환경 변수 관리 🔐

  • 오픈소스이기 때문에 민감한 정보는 코드에 삽입 금지
  • 환경 변수는 AWS Parameter Store를 사용하여 관리
  • 타 파트에서 사용할것을 고려하여 환경변수를 등록할 때는 /mgmg/server/{환경}으로 등록
  • 현재 PrameterStore에 있는 환경변수를 서버 환경변수로 등록하되 우선순위에 의거하여 서버 환경변수로 등록됨
    • 우선순위
      1. 현재 NODE_ENV에 속하는 파라미터
      2. prod
      3. dev
      4. local

Get Started 🚀

  • 보안을 위하여 RDS 및 Redis의 연결은 Bastion Host만으로 제한됩니다.
  • 때문에 EC2 인스턴스와 SSH Tunneling 연결이 우선되어야 합니다.

SSH Tunneling 예시

$ ssh -N -L  your-db-port:your-rds-endpoint:your-rds-port ec2-user@your-ec2-endpoint -i your-key.pem

Installation

$ yarn install

Running the app

# NODE_ENV setting
$ export NODE_ENV=dev

# development
$ yarn run start

# watch mode
$ yarn run start:dev

# production mode
$ yarn run start:prod

Test

# unit tests
$ yarn run test

# e2e tests
$ yarn run test:e2e

# test coverage
$ yarn run test:cov

About

반려견 출장목욕 서비스 몽글몽글 서버

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published