1차 프로젝트 회고 -2-

임수정·2023년 3월 21일
0
post-thumbnail

해당 프로젝트는 이솝 페이지에 있는 코드로 작성하지 않고 DB 생성부터 페이지 UI까지 저희 팀원들과 작성한 것이며 별도의 상업적 목적은 없음을 알려드립니다.

작성하던 프로젝트 회고에 대해 마무리를 하는 포스팅을 시작하겠습니다

구현사항

회원가입,로그인,상품 상세페이지,장바구니 페이지를 맡아서 진행했습니다.

회원가입

  • 이메일, 비밀번호 정규화표현을 사용하여 1차적으로 해당 페이지에 대한 정보가 바르게 입력되도록 코드를 작성하였습니다.
  • 이솝페이지에는 없는 기능이지만 저희는 "중복확인" 기능을 추가함으로써 페이지에 가입여부를 판단할 수 있는 기능을 구현하였습니다.
  • bcrypt를 사용하여 비밀번호를 hash하여 민감한 정보를 안전하게 데이터베이스에 저장하였습니다.

로그인

  • 이메일과 비밀번호가 틀릴 경우 로그인이 되지 않는 기능을 구현하였습니다.
  • jwt를 활용하여 로그인시 토큰이 발급되는 기능을 구현하였습니다.

상품상세 페이지 & 장바구니

  • SQL의 INNER JOIN과 LEFT JOIN을 사용하여 데이터들을 조합하여 알맞은 값을 불러오는 기능을 구현하였습니다.
  • 장바구니 버튼을 누르면 연속해서 추가가 될 수 있는 기능을 query를 이용하여 구현하였습니다.
  • 장바구니에서 수량 업데이트 & 삭제가 되고 DB에 쌓이는 데이터도 자동업데이트 되는 기능을 구현하였습니다.

블로그 포스팅

프로젝트를 진행하면서 기억하고 싶었던 내용은 블로그에 포스팅하였습니다.

✅ 프로젝트의 회고록

  • 개발자로서의 첫 프로젝트를 진행하면서 프론트엔드와 백엔드간의 의사소통이 매우 중요하다는 걸 알게 되었습니다.

    "저희는 footer, 캐러셀 진행중입니다"

프론트엔드 용어를 처음 들었을 때는 정말 이 표정을 지었던 것 같습니다. 용어가 다르다 보니 매번 "그게 뭐예요?" 라고 되묻는 일들이 초반에는 많았습니다. 매일 진행하는 스탠드업 미팅을 진행하면서 서로의 용어를 이해하고 어떤 기능을 진행하는지를 알게 되면서 기능구현, 일정 공유하는 면에서 많은 부분을 이해하게 되었습니다. 물론 경험이 쌓이면서 이러한 부분들은 자연스럽게 이해하겠지만 주니어 개발자인 저는 서로의 개발용어에 대해서 알아가는 좋은 경험이었습니다.

  • 클론 프로젝트를 진행한다고 했을 때, 어떻게 진행을 하는 것인지, 단순히 사이트를 클론 하는 것인지 감이 오지 않았습니다. 그러나 "PET분석" 을 접하면서 기획하는 부분도 개발의 일부분인 것을 알게 되었습니다.

1.사용자 입장에서 페이지를 사용하면서 느끼는 불편함은 무엇일까?
2.이솝은 회원가입시 중복확인 기능이 없는데 우리는 넣어볼까?
3.이솝페이지를 그대로 클론을 할까? 아니면 컨셉만 클론을 하되 우리만의 서비스로 클론을 할까?

등의 기획을 진행하면서 이솝뿐만 아니라 다른 사이트들의 웹 사이트 구성에 관심을 가지게 되었습니다. 개발자는 코드를 통해 기능을 구현하는 직업이지만 웹 사이트의 전반적인 분석을 하고 사용자에게 더 나은 서비스를 위해 고민하고 개선시킬 수 있는 직업이라는 생각이 들어 더욱더 개발자라는 직업에 더 흥미를 갖게 되는 계기가 되었습니다.

  • 실력이 부족했던 저는 회원가입과 로그인 API를 하나 맡아서 프로젝트를 진행하게 되었습니다. 다른 부분도 하고 싶었지만 제 욕심 때문에 프로젝트를 기한 안에 못 끝낼지도 모르기에 일단 맡은 부분을 열심히 하고자 하였습니다. 프로젝트를 진행하면서 API 흐름을 이해하고 구성하는데 생각보다 빠른 시간안에 완성할 수 있었습니다. 그래서 저는 조금 욕심을 내보기로 하였고 장바구니 CRUD, 상품 상세페이지 API를 추가로 담당하게 되었습니다.

    전체적인 API를 만들 때, 기본적인 코드를 작성하고 에러핸들링 부분은 추후 구현하는 방향으로 잡고 코드를 작성하였습니다. 모든 코드의 기본 틀이 잡히고 나서 에러핸들링을 추가로 넣으면서 많은 시행착오가 있었습니다. "상세페이지에서 장바구니에 연속적으로 담을 수 있는지 또는 리스트페이지에서도 그 기능을 넣을 수 있는지" 와 같은 부분들을 추가로 구현해야 했었습니다. 백엔드 동기와 나누어서 하다 보니 장바구니 관련 에러핸들링을 다른 동기가 해줬어야 하는 상황이 있었습니다. 제가 맡은 부분을 완료하고 동기가 작성한 코드를 보니 제가 처음에 작성했었던 코드는 없고 새로운 코드가 있었습니다.

    제가 힘겹게 만들었던 코드가 없어진 걸 보고 많이 속상했었습니다. 동기도 미안하다고 했지만 어쩔 수 없는 선택이었단 걸 알아 이해하였습니다. 그래도 속상함은 없어지지 않았고 제 나름 제 코드를 살리면서 에러핸들링하는 부분을 작성해보았습니다. 이미 완료된 코드가 있었지만 부족한 부분은 인정하고 배우려는 마음으로 리팩토링하였었습니다. 프로젝트를 진행하면서 제가 작성한 코드로 완료할 수 있었지만, 그 경험은 많은 생각을 할 수 있게 해준 경험이었습니다.

    "내가 짠 코드를 과감하게 지울 줄 알아야 한다."

    이 말을 들어본 적이 있습니다. 그 당시에는 "그럼 지울 수 있지!" 라는 생각이었던 것 같습니다. 하지만 그 상황이 되어보니 힘든 일인 걸 알게 되었습니다. 개발을 진행하다 보면 서비스에 맞지 않는 코드들은 과감히 삭제하고 더 나은 서비스를 위해 선택해야 한다는 걸 알지만 행동으로 이어지는 건 정말 속상한 일이었습니다. 앞으로도 그러한 일을 마주하는 날이 많다고 생각합니다. 낙담하지만 말고 부족한 부분은 배운다는 마음으로 상황을 받아드려야 한다는 걸 배웠습니다.

  • 프로젝트를 완성하고 나서 AWS 배포하는 시간이 있었습니다. 저희는 둘이서 같이 진행하기로 하였고 다른 동기의 아이디로 진행을 하게 되었습니다. 저는 위코드 교육과정에 있는 내용을 다른 동기에게 알려주는 역할을 맡았었습니다. 교육자료에 있는 내용 말고도 별도로 구글링하며 배포를 진행하였습니다. 근데 진행하는 게 쉽지는 않았습니다. 지역설정이 잘못되어 있고 배포를 한 서버에서 npm을 설치 시 에러에 직면하는 등 어려움이 있었습니다. 코드를 작성만큼이나 복잡하고 쉽지 않았습니다.

    하지만 각자의 배포를 완료하고 결과물을 합쳤을 때, 뿌듯함을 느꼈습니다. 우리가 많은 노력과 고민을 통해 단 하나의 결과물을 만들어낸 것을 보니 큰 보람을 느꼈습니다. 이 경험을 통해 한 가지 프로젝트를 완성하기 위해서는 많은 노력과 고민이 필요하다는 것을 깨닫게 되었습니다.

✅ 마무리

프로젝트를 끝내고 보니 정말 많은 것을 경험하였습니다. 웹 사이트 기획부터 배포까지 많은 것을 경험하면서 커뮤니케이션과 문제해결 능력의 중요성을 알게 되었습니다.

각자의 역할과 책임을 분담하며 함께 목표를 향해 나아가는 과정에서의 소통은 프로젝트의 성공에 큰 영향이 미친다는 것을 알게 되었습니다. 팀원들과의 원활한 협업을 통해 더 나은 결과물을 만들어낼 수 있었고 저에게 소중한 경험이었습니다.

또한, 프로젝트 과정에서 발생한 다양한 어려움과 장애물을 극복하면서, 구글링을 통해 문제를 찾고 분석하며 적절한 해결책을 찾는 과정을 경험했습니다. 저는 문제가 발생했을 때 어떻게 문제 해결을 해결해야 하고 어려움을 극복할 수 있는지를 경험한 프로젝트였습니다.

profile
부족함을 인정하고 채워나가는 개발자! (Node.js 개발자)

0개의 댓글