장애인들만을 위한 채용 플랫폼 서버입니다.
Rest API 서버로써 Next.js
와 함께 개발되었습니다.
공통사항
- 코드의 지속적인 리팩토링
- Controller와 Service 테스트 커버리지 100%
Git Flow를 사용하여 브랜치를 관리합니다.
모든 브랜치는 PR을 진행 후 main
으로 merge를 진행합니다.
- main : 개발이 끝난 부분에 대해서 Merge를 진행합니다.
- v tag : main 브랜치에서 배포시 사용합니다.
- feature : 기능 개발을 진행할 때 사용합니다.
- fix : 배포를 진행한 후 발생한 버그를 수정할 때 사용합니다.
- Integration Testing
-
- Prod DB와 같은 환경의 Test DB에서 테스트를 진행
-
Unit Testing
-
- DB를 Mock하여 테스트 진행
- GitHub Actions의 CI를 적용하여 테스트 자동화
ExpressJS, MySQL, Redis, Docker, Filebeat + ELK, AWS Cloud
v tag
를 제외한 브랜치의 Commit 푸쉬와 PR 시마다 자동 Build 및 Test 적용
AWS EC2에 scp를 이용한 파일 전송 후 pm2로 재실행 하여 배포합니다.
추후 EKS 전환을 대비하여 Docker 이미지를 제작하여 GitHub Container Registry
에 배포합니다.
도커 컴포즈 방법을 추천드립니다.
PORT 변경은 .env.*
에서 가능합니다.
$ nvm use //.nvmrc에 node 버전 명시
$ npm ci // 디펜던시 설치
$ npm run build
$ nf -e .env run npm run dev // `foreman`이라는 환경변수 주입 라이브러리 사용, 전역에 설치해주세요
로컬에 docker가 설치되어 있어야 합니다.
$ docker build --target dev -t seeme .
$ docker run -d -it -p 3000:3000 --env-file .env --name seeme_server seeme npm run dev
-d
는 백그라운드 실행 옵션 입니다. (도커 컴포즈도 마찬가지)
주의 사항 :.env.*
에서 port 변경 시docker run
에서의port
도 변경해 주어야 합니다.
$ docker-compose up --build
// or
$ docker-compose -f ./docker-compose.prod.yml up --build
unit testing && integration testing 도커로 테스트 환경 구축
$ cd mysql && docker-compose up --build
$ npm run test // 다른 환경 변수 사용 하고 싶으면 `nf -e .env.test run npm run test`
prisma v4 사용.
prisma.shcema
에 정의된 스키마의 타입 생성
$ npm run db:generate
prisma.shcema
변경 사항 마이그레이션.sql
파일 생성
$ npm run db:migrate
prisma.shcema
변경 사항을 DB에 직접 마이그레이션
$ npm run db:push