[Project-GrooMeong] 1주차 회고록

JBoB·2023년 3월 21일
0

이제 코드캠프의 수업기간이 끝나고 본격적으로 프로젝트를 협엽하여 완성해야 하는 기간이 생겼다. 되게 기대가 되면서도 막상 다가오니 두려운 기간이었다. 내가 잘 해낼 수 있을까? 아직까지 코딩치는 게 무섭기도 하고 내 머릿속으로 구상은 되지만 막상 컴퓨터 앞에 서면 구현을 잘 할 수 있을까? 라는 생각이 아직까지도 존재한다. 이번주 내내 학원에서 침낭을 깔고 숙박을 하면서 아침9시부터 저녁11시까지 코딩 및 리팩토링을 계속 했던 정신없던 주였다. 아직까지는 라이브 코딩 이라는 벽이 높고 험난하게 느껴지는 부분이라 코드를 치는 와중에도 redis, ci/cd, jwt, social login 등 다시 공부해보는 시간을 가졌다. 나는 그렇게 생각한다. 협엽하는 것은 결국에는 혼자가 아닌 전체가 만드는 것이라고,,,! 그래서 좀 더 사람들과 가까워지려고 노력했으니 서로 어떤 부분을 개선하면 좋겠는지 내가 부족한 점이 머가 있는지 서로 기분이 상해하지 않고 웃는 모습으로 얘기할 수 있도록 신경을 썼던 주였다.

🐧프로젝트 소개

처음에 서로 idea 주제들을 토론하고 선정하였는데 내 애견 미용 플랫폼이 뽑혔다. 속으로는 되게 기분이 좋았다.

내 아이디어가 뽑히다니…😂😂😂😂😂😂 막 자랑하고 싶어서 근질거리기도 하였다. 프로젝트에 대해 소개를 해보자면

  • 기존 시장의 문제점 및 개선 필요성 (기회)

: 강아지 미용샵 검색 시, 소비자가 원하는 '샵 정보'보다는 홍보 사이트가 만연해 비공식적인 커뮤니티 사이트(소셜미디어 광고 글)에 의지해 업체를 찾아야 한다. 따라서 특정 지역에 반려견미용업체 목록을 한 번에 볼 수 있는 서비스의 등장 필요성을 제시한다.

  • 핵심 개선 포인트 (강점)

: 우리 서비스의 강점 :
- 우리 서비스를 통해 소비자가 선택한 지역의 반려견 미용샵을 한 번에 볼 수 있다
- 우리 서비스를 통해 해당 업체에 예약이 가능하다
- 해당 업체에서 제공하는 서비스를 미리 볼 수 있다
- 유명 업체 뿐만 아니라, 소규모 샵을 홍보함으로서 소비자에게 폭 넓은 선택지를 제공한다

  • 기대효과

  • 소비자(견주)는 원하는 핵심 정보(샵 정보)를 제공받아 소비자 중심의 서비스를 이용할 수 있다.

  • 미용샵 사장님은 소비자에게 자신의 업체를 홍보하게 되면서 신규 고객을 유치할 수 있다.

  • 이용자가 확대된다면 다양한 반려견 사업 시너지를 창출할 수 있다.

🐤 우리의 기술 스택

이제 README 라는 것을 처음 작성해보는데 다른 project들을 참고해보니 원 교집합으로 쓴 것들을 볼 수 있었다.그래서 회의 때 서로 어떤 기술들을 쓸 것이고 어떤 면에서 이 기술들을 쓸 것인지 생각하고 선정하였고 그 다음

기술 스택 이미지를 정리해보았다.

🐶 Backend 기술 스텍 선정 및 소개

  • 프레임워크 - NestJS
    • 서버 애플리케이션을 만들기 위한 기초 아키텍쳐를 제공하여 팀원간 통일된 아키텍쳐에서 개발 가능
    • 필요한 라이브러리, 모듈들을 쉽게 추가 가능
    • 생산성과 안정성을 높여주는 타입스크립트 기본 사용
  • 언어 - 타입스크립트
    • 코드 에디터의 코드 자동 완성 기능을 사용할 수 있어 개발 생산성 향상
    • 타입을 사용하여 코드 안정성 향상
  • API 타입 - GraphQL
    • API 요청 시 원하는 데이터만 요청할 수 있으므로 효율적인 통신 가능 (REST API 오버패칭, 언더패칭 문제점 해결)
    • code-first 방식으로 스키마 자동 생성
    • resolver 작성 시 스키마 자동 동기화로 유지보수 편리함
  • API Docs - GraphQL 스키마
    • GraphQL의 인트로스펙션 기능 사용
    • resolver 작성 시 자동 생성되는 스키마 정보 편리하게 공유 가능
  • ORM - TypeORM
    • NestJS가 TypeORM과의 통합 제공 (@nestjs/typeorm 패키지)
    • 타입스크립트로 작성되어 NestJS와 잘 통합됨
  • 데이터베이스 - MySQL
    • 대용량 데이터 처리보다는 데이터 사이의 관계성 설정, 데이터 간 중복 제거, 데이터의 일관성이 중요한 서비스이므로, noSQL인 MongoDB가 아닌 mySQL을 선택
  • 테스트코드 - Jest
    • NestJS가 Jest와의 통합 제공
    • 여러 테스트 라이브러리들을 조합할 필요 없이 Jest만으로 코드 테스트 가능
  • 이미지 저장소 - GCP 스토리지(버킷)
    • 무료…
  • 서버 테스트 환경 - GCP 인스턴스
    • 무료…
  • 서버 배포 환경 - GCP 쿠버네티스
    • 무료…
  • DB 테스트 및 배포 환경 - GCP SQL 인스턴스
    • 무료…

🐤 이번 주 내가 맡은 일

  • User CURD 구현
  • User Auth 구현
  • User Social Login( KAKAO, GOOGLE) 구현
  • Jwt 를 활용한 access, refresh DB 저장 구현
  • nest에서는 nodemailer 대신 nestjs-mailer npm를 제공해준다. 이에 따른 API를 구현하였다.
  • ERD Cloud 제작 및 수정
  • 테이블 정규화 작업
  • 도메인 배포

이 중에서 가장 어려웠던 것은 JWT 를 활용하여 refreshToken 를 기간을 정해두고 시간을 정해야 하는데 이 로직을 짤 때 기간 지정이 계속 오류가 뜨고 내가 원하는 기간을 못구해서 구하기가 힘들었었다. 그리고 gqlAuthGraud 부분을 access랑 refresh 부분들에 반복코드들이 있어 로직을 병합하고 싶었는데 여기서도 많이 해맸던 부분이 있어 아쉬웠다. 아직 많이 해보지 않았던게 티가 났던거 같고 계속 많이 보고 쳐보고 해야 내가 여기서 정체되지 않고 더 나아갈거 같다는 생각을 했다.

이제 다음주에는 프론트엔드분들이랑 맞춰보고 할 텐데 프론트엔드분들 입장에서 백엔드 API 가 어떤건지 더 알기 쉽게 설명해주고 소통해야 될거 같다.

🐤2주차의 나에게 다짐할것

Keep (지속할 것)

  • 한가지 API을 구현하고 나서 테스트를 해보고 넘어가자.
  • 가장 작은 단위부터 해결하고 넘어가자.
  • 백엔드 팀이 만든 규칙을 코드 작성 할 때 준수하자.

Problem (해결할 것)

  • create review 할 때 예약을 했을 때 리뷰권한을 줄 수 있도록 구현해보기
  • map 안에 있는 위도 경도를 어떻게 DB에 저장할 것인지 구상해보기
  • 좀 더 세분화된 담당들을 정하기

Try (시도해 볼 것)

  • 엘라스틱 서치로 서울시 / 구로구 or 은평구 ….등등 세분화하여 가게들을 가져올 수 있도록 구현해보기
  • jira 로 담당 관리 구현해서 팀들에게 알려주기
profile
간절하고 치열하게 살자

0개의 댓글