[부스트캠프] 그룹프로젝트 2주차 회고

이태훈·2023년 11월 17일
0

벌써 그룹프로젝트의 2주차가 지나갔다. 이번주에 경험했던 내용과 느꼈던 감정을 남기기 위해 회고를 작성해보았다.

진행한 내용

  1. ncloud 세팅 및 서버 배포
  2. typeORM 및 postgres DB 연동
  3. 회원가입 기능 구현
  4. base response 설정
  5. swagger를 통해 api 문서화
  6. naver 소셜 로그인
  7. jwt를 이용해 인증

고민 및 해결과정

  1. ncloud 세팅
    1. 처음에 vpc를 선택하고 subnet을 설정한 후에 메인 서버와 DB서버를 생성했다. 이때 메인 서버에서 DB 서버에 접속이 가능하게 하기 위해 세팅을 하는 과정에서 응답이 없는 오류가 발생했다. 문제가 발생했던 부분은 acg를 새로 생성하는 부분이였는데, acg를 새로 생성하고 그걸 할당해주는 과정에서 메인 서버의 ACG에 아웃바운드 규칙을 설정하지 않아서 DB서버로 접속을 할 수 없던 것이였다. 해당 부분에 아웃바운드 규칙을 추가해준 후에 메인 서버에서 DB서버로 접속을 성공했다.
  2. 데이터베이스
    1. 데이터베이스는 postgres를 선택했다. 이유는 사용자에 따라 많은 음식점들의 정보를 가져오는 우리의 서비스 특성상 대규모 처리에 조금 더 강점을 가지는 postgres가 적절하다고 판단했다. 또한 추후 주변 음식점 검색을 위해 거리 계산이 필요할 것 같은데 이 부분에 postgres의 extension인 postGIS를 사용할 수 있지 않을까 라고 생각했다.
    2. 메인 서버에서 postgres에 접속하는 과정에서도 오류가 발생했다. 개발을 할때는 같은 pc에 postgres를 설치하고 진행했기 때문에 이 오류를 발견하지 못했는데, 메인 서버에서 실행하려고 하니 DB서버에 있는 postgres에 접속을 하지 못하는 문제가 발생했다. 문제가 발생한 이유는 postgres의 원격 접속 설정을 바꿔주지 않았기 때문이였다. postgresql.conf와 pg_hba.conf 파일에 원격접속을 허용해주도록 하는 세팅을 추가해 준 후 진행하니 문제가 해결됐다.
  3. base response
    1. 안드로이드 분야와 협업을 진행하면서, 서버측에서 주는 성공응답과 에러응답 형식이 통일되어 있어야 안드로이드 개발자가 조금 더 쉽게 응답을 사용할 수 있을 것 같다고 생각을 했다. 그래서 어떤 방법이 있을지 고민하고 찾아보다가 interceptor와 filter를 사용하면 좋을 것 같다고 판단했고, base response를 만들고 성공 응답에 대해서 global로 등록된 interceptor를 통과하도록 했고 에러응답은 globalFilter를 사용하여 동일한 형식으로 응답을 할 수 있는 구조를 만들었다.
  4. 소셜 로그인
    1. 웹 oauth는 구현을 해봤지만 안드로이드에서 oauth는 처음해봤기에, 익숙한 웹 oauth 형태로 구현을 하다보니 문제가 발생했다. 이전에 passport 모듈을 사용하지 않고 oauth를 구현해봤기 때문에 이번에는 passport 모듈을 사용해보고 싶어서 naver 용 passport-naver를 통해 진행을 했는데, 유저의 정보를 가져오지 못하고 에러페이지만 나오는 문제가 발생했다. 찾아보니 안드로이드에서 oauth를 할때는 이미 sdk를 통해 accessToken을 받아오기 때문에 서버에서는 프로필 정보를 가져오는 api를 해당 토큰과 함께 요청하기만 하면 된다고 해서, axios를 통해 naver에 api 요청을 하는 방식으로 문제를 해결했다.

느낀점

이번주에 클라우드 서버 세팅과 기능 구현을 조금 진행해 보았는데 클라우드 서버 세팅하는 과정이 처음하다 보니 오류도 많이 나서 시간을 조금 많이 잡아먹었던 것 같다. 하지만 클라우드 서버에 배포하는 것에 대한 막연한 두려움은 이번 작업을 통해 사라진 것 같다. 기능을 구현할 때는 초반에 페어 프로그래밍으로 진행을 했는데 함께 하려다 보니 개발 외적으로도 많은 시간이 소요되어 진도는 조금 느려졌지만, 그만큼 동료와 함께 많은 이야기를 나누고 서로 맞춰나가는 과정을 겪으며 이후 원활한 분업을 위한 준비를 할 수 있었던 것 같다. 그리고 이번주에는 수동 배포를 진행했는데 작업을 하다 보니 불편한 점이 있어서 주말을 이용해 간단하게라도 자동 배포를 진행해볼 예정이다.

profile
지속가능한 개발자를 꿈꿉니다

0개의 댓글

Powered by GraphCDN, the GraphQL CDN