[Retrospect]2weeks_Proj. SNAPET

슬지로운 개발생활·2021년 3월 17일
0

Project

목록 보기
2/2

기획(210202)

SR 시작전


SR시작전 팀이 정해지고 팀장의 권유로 서로의 역량을 알아보는 시간을 가졌고, 아이디어 관해 이야기를 했지만 너무 추상적인 아이디어들이 많았을 뿐더러 엄청나게 끌리는 부분이 없어서 무난한 아이디어(코드 리뷰 웹사이트)로 잡아놨다.

SR

  • 프론트엔드 쪽으로 지원할거지만 백단도 알면 웹의 돌아가는 시스템을 더 잘 이해할 수 있을거같아 2주 프로젝트에서 백 지원 하였다.

    • 일단 팀원 2명이 프론트 생각이 있었고, 4주때 프론트 할 생각을 가지고 있었기에 부족한 백을 채울 수 있는 기회라고 생각이 들었다.
  • 반려동물 이미지의 배경을 투명화 시킨 후 색을 채워 애완동물 증명사진을 만들고, 포스팅할수 있는 웹페이지 'SNAPET' 프로젝트 아이디어로 새롭게 결정

    • 스냅펫 전 아이디어들은 추상적이라 접근하기 힘들었으나, SR첫날 얘기 나온 새로운 스냅펫이라는 아이디어가 정확히 우리가 무엇을 구현해야될지 보여 스냅펫으로 진행하기로 함
    • 동물들의 증명사진을 만들어주고, 로칼에 저장할 수 있게 구현 예정
      • 배경을 투명하게 해주는 API 이용
    • 포스팅할 수 있는 페이지가 있어 증명사진으로 만든 반려동물 이미지를 업로드하여 사람들과 공유한다(like 인스타그램)
    • 포스팅을 할 수 있는 권한은 로그인한 유저만 가능하다.
    • 비회원유저는 증명사진을 만들수 있지만 포스팅의 권한은 가질 수 없다.
  • 팀 진행 시간 : AM 9:00 ~ AM 12:00시 (중간 점심, 저녁 포함)

    • 조금 많이 길다;;;
    • 구현하고자 하는 욕심이 큰데 시간은 한정되어있어(2주프젝인데 구정이 포함되어있다) 시간을 늘릴 수 밖에 없었다.

Problem(210207)

프론트 팀원중 한분이 이슈가 생겼다고 다른 팀원들을 호출하여(자신이 생각하는 것이 맞는지 확인하려 호출하였다) 팀장이 맡은 파트가 다른 코드를 copy&paste하였다고 보여주었는데 정말 우리 정보 외에는 className까지 같아 말이 안된다고 생각하여 대화를 나누었지만 팀장은 이것은 유튜브에서 clone한거라 copy&paste가 아니라고 하셔서 저는 이부분에 있어서 이건 프로젝트이고 이부분은 스스로 해보는거고 모르는 부분을 서치하는거라고 전체 다 클론하는 것은 용납이 안된다고 정확하게 말씀드렸다.
팀장도 그부분에 있어서 알겠다고 안하겠다고 약속 받고, 클론 했던부분도 수정하겠다고 약속해서 팀장을 다시 믿고 맡기기로 하고 다시 진행했다.


What did i do in this Proj?

https://github.com/codestates/snapet_server

  • DB schema
    join table이 있어야 된다고 해서 급하게 부랴부랴 like버튼 생성하여 스키마를 만들었다. 처음에 like를 카운트 해주는 column이 따로 있었지만 method를 만드는 과정에서 그렇게 넣으면 복잡해져서 countlike column은 삭제 했다.

  • API 구성
    처음에 api를 서버에서 해야되는 줄 알고 1차로 백단에서 진행하였으나, 정확히 우리가 뭘 받는지 몰라서 팀장에게 일단락만 정리했다고 전했고, '아마 수정해야될거같다, 한번 프론트에서 같이 봐줘야 될거같다'고 했을때 오케이는 했으나 같이 진행하지 않아 어떻게든 메소드를 만들어야하닌깐 혼자 prototype과 framework를 보며 1차 정리하였다.
    이때 어떻게 해서든 같이 진행했어야했다;;;
    결국 메소드 만들때(api 코드 작성할때) 클라와 다시 말해 naming만 수정하는 정도로 2차 정리하고,
    method를 만들면서 잘못 생각한 부분이 있어 3차 정리 들어갔다.

  • MVC
    Sequelize ORM을 사용하여 MVC 생성
    join table(1:n & m:n)이 있어 구글링으로 찾아 해결...
    workbench(SQL GUI)에서 foreign key가 나타나지 않아서 한참 헤맸었으나 help desk를 통해 terminal에서 key부분에 mul로 들어간다는 정보를 보고 확인해보니 제대로 진행하고 있었다!!! 삽질로 인해 많은 시간이 들었지만, 잊지 못할거같다!
    해결 완료! 나 자신 열심히 했다 증말!!!

  • API 기능 개발
    join table로 인하여 include를 쓴다는 건 알았지만 정확히 몰랐던 부분들을 구글링하며 찾아가며 완성하였고 덕분에 sequelize 얼추 쓸 수 있을거같은 자신감을 얻었다.

    • sequelize.col('컬럼이름') : include로 연결되어있는 table에서 column을 가져올때 사용
    • sequelize.fn('COUNT', ~), group : like 수를 카운트 하기 위해 photo의 id로 그룹을 묶고 users_like_photos에서 userid를 카운트 하였다.
      → 자꾸 그룹 바이 에러 뜰때 :
    mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
    • bcryptjs : 관리자도 사용자의 암호를 몰라야된다. 그리고 단방향 해시함수를 써야한다는 이야기를 듣고 구글링했을때 가장 먼저 bcrypt를 찾았다. 그리고 bcrypt를 쓰려고 더 서치를 해보았을때 nodejs에는 bcryptjs도 있다고 하여, 비교해보니 npm에선 사용자들이 bcryptjs를 조금 더 많이 사용하기에 bcryptjs를 선택하여 사용하였다.

Retrospect

결국 우린 프로젝트를 완성하지 못해 미완성 프로젝트로 남게 되었다.
미완성 프로젝트라 말하는 이유는 클라이언트와 서버간의 연결이 되지않아 페이지가 최소 구현도 못했기 때문에 완성하지 못했다고 말할 수 있다.

회고글을 작성하는 중에 우리팀이 소통과 협력이 부족했다고 판단이 되었다.
그리고 소통이 부족하였기 때문에 하기와 같은 일들이 생겨나고 그로 인해 프로젝트를 완성시키지 못하였다.

  1. 의견을 수용하지 않는 팀장과 강하게 어필하지 못한 팀원
  2. 팀장이 알아서 상황처리를 잘 하겠지라는 생각으로 같은 팀원간의 상황을 알아보지 못한 점
  3. 마지막으로 기술적인 문제로 서버와 클라이언트간의 기능구현을 늦게한 점

이를 통해 나의 문제점들을 알 수 있었고, 반성한다.

첫번째, 팀장이 수용하지 않는다고 해서 미리 포기했던 점. 조금이라도 더 팀장에게 어필했었어야 했고 조금 더 논리적으로 접근해서 설득하면 좋지않았을까 싶다. 그래서 서비스 발표 영상 찍는 부분이라도 전반적인 프로젝트에대한 회고를 해서 서로의 부족한 부분에 대해 짚고가면 더 좋지 않았을까 싶다.

두번째, 전적으로 팀장에게만 맡기고 상황을 살펴보지 못한점이 너무 아쉽다.
백을 다해도 프론트의 진행사항을 알고 프론트를 도와줬다면 그래도 시간내에 끝낼 수 있었을 것이다. 아니더라도 서로의 상황을 이해하며, 프론트에서 시간이 오래걸린 이유에 대해 충분한 이해를 했을 수 있었을 것이다.

세번째로는 두번째 사항의 연장선인데, 백에서 다 만들어 놨는데도 프론트 측에서 쓰지 않고 프론트에서 api에 대해 질문하지 않는 이유를 물어봤어야 했고, 백에서도 너무 늦게 API routing을 만들었다. 사실 이부분은 사실 팀장이 팀과 진행사항을 살펴보고 진행했더라면 좋지 않았을까 싶다. 우리는 계속 시간내에 못끝낼거같다고 어필하였으나, 팀장이 끝낼수 있다는 말에 계속 진행했던 부분이 너무 아쉽다.

다 끝내지 못했다는 아쉬움이 있지만, 백엔드에 자신없던 내가 나름대로 백엔드 맡은 부분을 완료했다는 부분이 자랑스럽고, '난 할 수 있구나'라는 자신감을 갖게 해주는 기분을 들게 만들어 굉장히 복합적인 감정이 들게 만드는 첫 프로젝트였다.

추후 4주 파이널 프로젝트가 있을 예정인데, 이번에 회고한 부분을 잘 생각하며 더 나은 모습으로 임해서 배포까지 잘 마무리 하면 좋겠다는 생각을 한다.

0개의 댓글