graphql 백엔드 템플릿 회의 및 작성
* TypeScript, pnpm monorepo, graphql, TypeGraphql, Bitbucket 도입 결정과 신입과 협업을 위한 백엔드 코드 규약 정리하여 문서로 작성 및 회사 컨플루언스에 업로드
<내용>
RESTfull API 설계에 맞게 기능들 api 주소 규칙 정하기 및 코드 작성
pnpm monorepo 간단한 설명과 이용방법 작성
레이어트 아키텍쳐를 기반으로 하나의 쿼리를 Controller, Service, Dao 로 분리, TypeGraphql을 사용해 typegraphql 문법과 데코레이터로 스키마 중복 제거와 가독성을 키웠습니다.
3개의 파일로 분리한 하나의 쿼리들을 하나의 파일로 묶어 여러개의 파일로 작성 후에 자동 파일 reader로 가독성을 위해 하나의 파일이 아닌 여러개의 파일로 분리하여 자동으로 파일추가시 인식 자동으로 스키마 작성 및 분업과 가독성을 키웠습니다.
또한 자주 쓰는 코드들을 util파일에 작성하여 코드 중복 제거를 우선시 하였습니다.
jest로 graphql 테스트 코드 작성 -> unit, integration, end to end 3가지로 나누고, mock데이터 사용하여 bitbucket(후에 github로 옮겼습니다. 테스트 코드는 그대로 사용) ci/cd로 실행 시 테스트 코드 작동 시간을 줄이고 코드 안정성 확립
자주 쓰는 코드들을 미리 util 파일에 작성
* serverless 아키텍쳐 도입으로 인한 코드들 리모델링
- 기존 graphql에서 express 및 graphql 서버 제거
하나의 쿼리당 하나의 http 웹서버로 동작할 수 있게 Graphql-lambda로 쿼리 작성 및 구현된 serverless 서버에 작동할 수 있게 테스트 및 업로드
백엔드 기능 추가
* 로그인 로그아웃 기능 추가
- JWT token과 쿠키로 로그인 기능 구현( access, refresh 시간차 토큰 2개 발행하여 DB에 저장, access토큰을 기한은 5분, refresh토큰은 14일과 28일로 나누어 요청 시마다 토큰 비교를 통해 로그아웃되도록 설정 탈취 시간이 5분을 넘지 않도록 설정하여 권한과 보안 관련 코드 작성 )
* 상품 조회(각 상품 내용마다 필터링과 검색 적용) , 상품 추가, 상품 상세, 상품 정보 수정, 상품 투자자 목록 가져오기 API 기능 구현
* 휴대폰 본인인증 api와 휴대폰 본인인증 완료시 mailgun 모듈로 hash로 유저마다 고유문자를 유저 메일로 전송 유저 메일 인증 api 추가
* 아임포트로 결제 관련 api 추가
- 결제 버튼 클릭시 결제 관련 정보들 임시 저장 후 iamport api로 결제 완료 시 결제 완료 정보를 받아와 기존 정보랑 비교 후 프론트에 요청 완료 전송시 프론트 결제 완료 창으로 전환으로 구현
* 프론트와의 협업을 위한 swagger 작성
- 회의를 통해 swagger 파일에 요청 파라미터와 응답 내용을 우선 작성 후 그에 맞게 일정에 맞게 api 구현
더보기