UMC 팀프로젝트 2,3 주차 회고 - [ Global Students]

boms·2024년 1월 31일
1

Global Students Project

목록 보기
3/4
post-thumbnail

퀄리티 있는 프로젝트?

UMC 서버 컨퍼런스에서 현직 개발자분이 벡엔드 기준 퀼리티 있는 프로젝트에 대해 말씀해 주셨다. 첫번째로 직관적인 API 명세서로 커뮤니케이션 비용을 줄여야한다. 혼자서 개발할 때는 api endpoint, property 이름, dto 이름 등의 명확함 보다는 당장의 구현에 초점을 뒀었다. 하지만 이번 프로젝트도 그렇고 앞으로도 커뮤니케이션 스킬이 요구되기 때문에 당장 개선하고 도전해야 한다고 느꼈다. 두번째로는 DB 설계다. DB 구조상 불가능하면 굉장히 돌아가야 하는 경우가 생기고 API 저해의 근본적인 원인이 된다. 내 ERD 설계가 채택되어 DB 설계를 담당하는 입장에서 부담이 느껴지는 부분이었다. 아직 뭐가 맞는지 확실히 모르겠어서 팀원들의 의견을 적극적으로 물어보고 반영하기로 했다.

의견을 물어볼때 먼저 상황 설명을 구체적으로 해주는게 중요하다고 느꼈다. 모든 서버 파트원들이 ERD 설계를 봤고 정한거니까 당연히 이해했겠지 생각했지만 아닌 상황이 사진속 대화 뿐만 아니라 여러번 있었다. "당연히 이해했겠지"라는 생각은 정말 위험한 것 같다. 본론에 들어가기 전 상대방이 이해한 상태인지 확인해야한다고 느꼈다.

회원가입, 로그인 API 명세서

API 명세서를 작성하면서 어떻게 하면 직관적이고 프론트 파트와의 커뮤니케이션 비용을 절감할 수 있을 지 고민을 많이 했다. 그래서 팀 노션 컴시트에 확실한 양식을 준비하고 작성했다.

Request 예시

Header

파라미터타입필수설명
Content-TypeStringOapplication/json

Parameters

파라미터타입필수설명
userIdStringO사용자 ID
passwordStringO사용자 비밀번호
confirmPasswordStringO비밀번호 재확인
firstNameStringO이름
lastNameStringO
birthYearStringO생년
birthMonthStringO생월
birthDateStringO생일
nicknameStringO닉네임
nationalityStringO국적
hostCountryStringO유학국
hostUniversityStringO유학중인 대학

Body

{
	"userId": "globalstudents"
	"password": "qwer1234"
	"confirmPassword": "qwer1234"
	"firstName": "Bob"
	"lastName": "Hume"
	"birthYear": "2000"
	"birthMonth": "3"
	"birthDate": "2"
	"nickname": "globalstudent"
	"nationality": "미국"
	"hostCountry": "대한민국"
	"hostUniversity": "00 대학교"
}

Path Parameter

없음

Query Parameter

없음

Response 예시

Header

파라미터타입필수설명
Content-TypeStringOapplication/json

Response Code & Message

codemessage설명
JOIN201_1기본 정보 입력 성공기본 정보 입력 성공
JOIN400_1아이디는 8자 이상의 영문 대소문자/숫자/특수문자입니다id 파라미터 형식이 잘못된 경우
JOIN400_2비밀번호는 8자 이상의 영문 대소문자/숫자/특수문자입니다password 파라미터 형식이 잘못된 경우
JOIN400_3비밀번호가 일치하지 않습니다confirmPassword와 password 파라미터가 일치하지 않은 경우
JOIN400_4입력하지 않은 필수 정보가 존재합니다필수 정보가 누락된 경우
JOIN403_1접근이 거부되었습니다접근 권한이 없는 경우
COMMON500서버 에러서버에 문제가 생긴 경우
COMMON503일시적인 서버 오류서버에 일시적인 문제가 생긴 경우

Body

{
	"isSuccess" : True
	"code" : "JOIN201_1"
	"message" : "기본 정보 입력 성공"
	"result" : {}
}

생각했던 것 보다 API 명세서를 작성하는데 많은 시간이 걸렸다. 서버 파트 회의때 서로의 API 명세서를 리뷰하고 불명확한 부분을 개선했다. 작성할 때는 몰랐던 부분을 팀원들을 통해 알게 되었고 정말 많이 수정했다. 최대한 프론트가 직관적으로 볼 수 있게 노력했다.

AWS RDS 구축

공용으로 사용할 mysql 서버를 어떻게 구축할지 고민하다가 AWS RDS 프리티어를 사용하기로 했다. 한 팀원이 mysql 서버를 호스팅 하자는 의견을 냈는데 그 팀원 노트북이 꺼지면 접근할 수 없다고 설명했다. 그래서 AWS를 사용하자고 했고 ERD도 관리하는겸 내가 구축하고 싶다고 어필했다.

사실 AWS RDS를 구축 해본 적은 없다. 예전에 AWS EC2에서 과금이 발생해서 AWS 관련해서 다소 소극적이었는데 이번 기회로 꼼꼼히 배우고 극복하고 싶어서 지원했다.

ERD 수정

  • user_post_like, user_post_favorite -> user_post_reaction로 통합 type으로 구분
  • post_report, comment_report -> report로 통합 type으로 구분
  • image -> user_image, post_image로 분할
  • follow 기능 사라짐 -> friend == 맞팔로우 기능 추가
  • region, country, university 추가
    - 게시판이 유학중인 대학, 국적, 지역으로 나뉨
  • language 추가
    - 유저 설정 언어

기획안과 피그마가 계속 바뀌지만 진행 해야해서 바뀔 확률이 작은 코어 기능들을 우선적으로 개발 시작하기로 했다.

Entity 작성

앞으로 회원가입과 로그인에 필요한 Entity를 작성할 것이다.

user 폴더에 Entity 7개 추가

  • UserEntity
  • CountryEntity
  • LanguageEntity
  • RegionEntity
  • TermsEntity
  • UniversityEntity
  • UserAgreeEntity: UserEntity와 TermsEntity의 매핑 엔티티
profile
2023.08.21~

0개의 댓글