우리 팀은 기술의 탐구와 공부를 통해 창의적인 서비스를 제작하고자 합니다. 이 과정에서 서비스 배포 및 운영을 넘어, 실제 상용화에 도전하여 반려견 산업에 혁신을 가져오고자 합니다.
-
현재 상황: 전세계적으로 반려견 산업의 매출이 지속적으로 증가하고 있습니다. 다양한 반려견 관련 사업이 등장하고 있지만, 디지털 분야에서의 활용은 상대적으로 미약합니다.
-
우리의 비전: 저희는 반려견 산업에 특화된 디지털 플랫폼을 통해 고객에게 편리성, 안정성, 효율성을 제공하고자 합니다. 이를 통해 고객들이 더욱 풍부한 경험을 할 수 있게 하며, 반려견과의 삶을 더욱 행복하게 만들고자 합니다.
고지훈 |
---|
@emibgo2 |
Nestjs | TypeScript | TypeORM |
---|---|---|
v10.3.2 |
v5.4.3 |
v0.3.2 |
PostgreSQL | Redis | OpenSearch |
---|---|---|
v16.3 |
v7.1.0 |
v2.13 |
EC2 | Lambda | SQS | CloudFront | ParameterStore |
---|---|---|---|---|
Nginx | Grafana | GitHub Actions | Docker |
---|---|---|---|
🗄️ ERD
- CD
커밋 메시지는 한국어와 영어를 편하게 섞어 사용할 수 있습니다. 커밋 컨벤션 규칙은 아래 태그를 참고해주세요.
- Feat: 새로운 기능을 추가하는 경우
- Fix: 버그를 고친 경우
- Docs: 문서를 수정한 경우
- Style: 코드 포맷 변경, 세미콜론 누락 등 코드 수정이 없는 경우
- Refactor: 코드 리팩토링
- Test: 테스트 코드 추가 또는 리팩토링 테스트 코드 추가
- Chore: 빌드 업무 수정, 패키지 매니저 수정
- Design: CSS 등 사용자가 UI 디자인을 변경한 경우
- Rename: 파일명 또는 폴더명을 수정한 경우
- Remove: 코드(파일)를 삭제한 경우. "Clean", "Eliminate"를 사용하기도 함
- Add: 코드나 테스트, 예제, 문서 등의 추가 생성
- Improve: 향상된 기능 추가. 호환성, 검증 기능, 접근성 등이 포함됨
- Implement: 코드가 추가된 정도보다 더 주목할만한 구현체를 완성했을 때
- Move: 코드 이동이 있는 경우
- Updated: 계정이나 버전 업데이트 시 사용. 주로 코드보다는 문서나 리소스, 라이브러리 등에 사용
- Comment: 필요한 주석 추가 및 변경
- Feature, Develop, Release, Hotfix, Master 등의 명확한 브랜치 구조를 제공
- Release 브랜치에서의 테스트와 QA 과정을 통해 안정성이 검증된 기능들이 Master 브랜치로 병합되어 배포되므로 안정성이 높음
- Main 브랜치에서는 직접 푸시를 막아서 안정성을 고려
- main: 최상위 브랜치로, 최종 배포 버전 소스가 저장
- dev: 릴리즈 준비가 된 브랜치. 모든 Feature 브랜치는 Develop에 병합
- feature: 개별 기능 구현과 버그 해결 시 사용하는 브랜치. Master 브랜치에는 직접 접근 불가
- Feat → dev → Main 순서
- 리뷰어가 서로의 코드를 확인
- feature → dev: Squash and Merge
- 여러 개의 커밋을 하나의 커밋으로 합쳐서 기록
- feature 브랜치는 dev 브랜치에 병합 후 제거
- dev → main: Rebase And Merge
- Require a pull request before merging: Merge 전 코드 리뷰 필요
- 최소 인원 1명 설정
- Require status checks to pass before merging: 테스트 실패 시 Merge 불가 (현재는 체크하지 않음)
- 오픈소스이기 때문에 민감한 정보는 코드에 삽입 금지
- 환경 변수는 AWS Parameter Store를 사용하여 관리
- 타 파트에서 사용할것을 고려하여 환경변수를 등록할 때는
/mgmg/server/{환경}
으로 등록 - 현재 PrameterStore에 있는 환경변수를 서버 환경변수로 등록하되 우선순위에 의거하여 서버 환경변수로 등록됨
- 우선순위
- 현재 NODE_ENV에 속하는 파라미터
- prod
- dev
- local
- 우선순위
- 보안을 위하여 RDS 및 Redis의 연결은 Bastion Host만으로 제한됩니다.
- 때문에 EC2 인스턴스와 SSH Tunneling 연결이 우선되어야 합니다.
$ ssh -N -L your-db-port:your-rds-endpoint:your-rds-port ec2-user@your-ec2-endpoint -i your-key.pem
$ yarn install
# NODE_ENV setting
$ export NODE_ENV=dev
# development
$ yarn run start
# watch mode
$ yarn run start:dev
# production mode
$ yarn run start:prod
# unit tests
$ yarn run test
# e2e tests
$ yarn run test:e2e
# test coverage
$ yarn run test:cov