처음으로 만들어본 사이트..아무것도 모르고 시작헀는데
정신차려보니 만들어져있는..?
배운것도 많고 부족한것도 참 많은 첫프로젝트였다.
프로젝트 기간은 13일정도로 하루는 발표날이고 맞춰보고 준비해야해서 실제로는 12일정도였다.

1. 기획과 ERD

우리팀이 모델링하게된 사이트는 술담화로 카테고리가 굉장히 많았다.
그래서 초반에 백엔드와 프론트가 함께 의논하여 어떤 기능을 넣을지 의논하였고 기획안을 통과하여 ERD 설계를 시작했다.
분명 수업을 들었는데도 관계가 어떻게되는건지 너무 헷갈렸고 의견도 많이갈렸다.
그래서 각자 만들어오고 설명해서 가장 부합하는 ERD를 선택하고 의견을 종합하여 수정하였다.
이렇게 ERD 설계는 백엔드셋이 만들어와서 공유하고 함께 만들었고 4일이 걸렸다.

2. 내가 맡은 역할

ERD 설계가 끝난뒤, 내가 맡은 역할은 초기환경세팅과 로그인, 회원가입API, 제품상세페이지API였다.
코로나때문에 제대로 서버를켜고 로그인하는 수업에 참여하지 못했었는데
감사하게도 백엔드팀원분들이 초기세팅과 로그인회원가입을 권해주셨고,
레이어드패턴이 이해가 가지않아 질문하자 한시간정도 자세하게 설명해 주셨다.
(알려주고 다시 설명해보라했을때의 그 버벅임이 아직도 생각난다^^)

덕분에 무사히 초기세팅도하고 레이어드 패턴을 이용하여 api를 만들 수 있었다.

3. 로그인/회원가입 기능구현

단순 로그인/회원가입의 구현은 금방 할 수 있었다.
하지만 생각이 너무 짧고 데이터 통신에대해 무지했다.

1. 데이터 통신 비용 문제

로그인 회원가입 기능을 구현해보는데 단순히 프론트에서 필요한 데이터를 받고 그 데이터가 있는지 없는지 확인한뒤 오청한 정보를 주게하면 되겠지했다.
params.id로 그 id에 해당하는 값들을 다 보내주었는데,
이경우 쓸데없는 데이터까지 포함되어 불필요한 데이터의 처리비용이 발생하기 때문에 프론트에서 원하는 값만 보내주라고 멘토님이 말씀하셨다.
자그마한 글자 조각이라 얼마되지않을거라 생각했기에 비용은 생각한적이없었는데
유저가 백만,천만명이라고 할때의 비용은 무시할 수 없다는것을 알았다.

2. 유효한 이메일인지 검증하기

프론트에서 보내온 email이나 nickname은 중복되어서는 안되기때문에 중복체크가 필요했다.
그래서 데이터베이스에 이미 이메일이 있는지 닉네임이 있는지만 확인하고 회원가입/로그인이 되게하였는데
정규표현식을 사용하여 프론트측에서 넘어온 데이터의 형식이 맞는지도 확인해야했다.
이런 형식검증은 프론트에서 하는게 비용측면에서 더 좋지 않나 생각했는데 백에서 저장하기전에 한번더 검증하는게 좋은거 같기도 하다.

정규표현식을 사용해보니 포함되어야할 글자들이 없으면 에러를 반환하는게 신기했다.

회원탈퇴 기능(실패)

로그인 회원가입을 만들고나서 문제가 생겼다.
팀원분이 토큰을 사용한 로그인과 회원탈퇴 기능을 만들어보라고하셨고 그 기능을 구현한다고 3일을 버렸다.
당시의 나는 JWT가 정말 이해가 가지않았고 이것을 어떻게 디코딩해서 사용해야하는지 몰랐다.
팀원에게 물어보아도 굉장히 쉬운거라고 알려주면 3분이면 끝날거라고 혼자 해보는게 좋다고했는데 3일을 끙끙앓다가 갑자기 번쩍였다.
근데 그 번쩍임보다 더 놀라운 사실은 이미 내가 코드에 구현해 놓았다는것…!
그렇다.JWT를 제대로 이해하지 않고 써서 이미 사용한줄 몰랐었다.
알고보니 정말 간단한 거였다.

4. 추가기능 요청

위의 문제에서 추가로 정작해야할 기능을 구현 할 시간이 부족해자눈 뮨재거 생겼다.
로우쿼리에대한 이해도도 낮아 상세페이지의 필터링하는데서 애를 먹었다.
그와중에 프론트와 소통을 하지않아 프론트에서는 만들었지만 백에서는빼기로한 기능을 만들어야했다.

닉네임 중복확인기능이였는데 금방 만들수 있었다. 백은 빼기로하고 프론트는 만들고있었고 어렵다..

다음으로는 장바구니에 접속할때 로그인이 되어있는지 확인할수 있는 유틸을 만드는거였는데 여기서 하루를 사용했다.
결국 제품상세페이지는 다른분이 해주셨다.

5. 실제 내가 구현한 기능

로그인/ 회원가입/ 닉네임 중복확인/ 인증인가함수만들기

6. 아쉬웠던 점

일의 우선순위를 잘 고려하자

회원탈퇴기능을 왜 우선적으로 해내야한다고 생각했었는지 모르겠다. 팀원분에게 정말 못하겠다고 하자 그건 추가기능구현인데 너무 오래생각하셨다는 말을 들었다. 정작 내가 구현해야할 제품상세페이지를 하려니 시간이 이틀 남았었고 쿼리문에대한 이해가 낮아 필터링을 어떻게 해야할지 막막했다. 결국 다른백분이 만들어오셨는데 내가 하지못했다는점이 굉장히 아쉬웠고 백엔드 한분이 너무 많은 일을 맡은거같아서 미안했다. 프로젝트가 끝나고 쿼리문에대한 공부를 많이 해야겠다.

잘 좀 보자

함께 TablePlus로 목데이터도 만들고했었는데 내가 DB에 접근을 못하는 일도 있었다.

문제는 첫번째줄의 경로에 비밀번호를 안써서였다…-.-;

백과 프론트간의 소통의 부재.

첫프로젝트여서 백엔드와 프론트가 처음에 기획만 같이하고 데이터값을 어떻게 줄지, 엔드포인트는 어떻게 할지, 어떤기능이 들어가고 빠졌는지를 얘기해야하는지 몰라서 프론트는 프론트끼리 백은 백끼리 업무를 이어나갔다. 발표날 3일전에서야 맞춰보기 시작했는데 역기서 문제가 발생했다. 프론트도 만든것을 싹 지우기도하고 백엔드는 더 구현하기도하는 일이 발생했다. 백,프론트 나누지 않고 업무상황을 계속 확인하며 소통해야 한다는 것을 느꼈다.

7. 잘했던점(?)

백엔드끼리는 소통을 잘한것

함께 ERD를 만들고 목데이터도 작성하였다. 초반에 갈피를 못잡고 질문도 많이하고 에러나면 서로 의견을 교환하고 도왔다. 시간내에 못하겠는것을 숨기지않고 알려 다른 팀원이 시간내에 기능을 구현할 수 있었다.

카테고리:

업데이트:

댓글남기기