[Servlet/JSP]중고거래 사이트 프로젝트 회고록

EUNJI LEE·2023년 7월 1일
0

프로젝트

목록 보기
1/4
post-custom-banner

중고 거래 사이트 : HiFive
사용자끼리 중고 거래 후 후기를 통해 점수를 평가하고 점수로 거래자에 대한 신용도를 확인할 수 있는 사이트로 검색한 물품에 대한 시세 등을 제공한다.

기획

프로젝트 팀이 정해지고 첫 회의를 가지기 전에 각자 만들고 싶은 웹 페이지가 있는지 생각해오기로 했다. 인당 한 개 이상의 의견은 내보자고 했고 하고 싶은 게 있다면 참고할 사이트를 2~3개 정도 가져오기로 하고 회의를 들어간 결과 내가 제안한 학사 관리 사이트와 중고 거래 사이트로 의견이 나뉘었다.

첫 프로젝트기도 하고 참고할 만한 사이트에는 쇼핑몰 사이트가 많은 것을 고려했고 중고 거래 사이트지만 다른 사이트에 별로 없는 시세 조회 기능이나 실시간 인기 카테고리 등 흥미로운 기능이 있어서 중고 거래 사이트로 의견이 모였다.

당근마켓, 중고나라, 번개장터 등 다양한 사이트를 참고하며 프로젝트에 대한 기획을 진행했다.

UI 구현

팀원 전체가 비전공자 혹은 개발자 경력이 없는 전공과 졸업생이기 때문에 DB나 기능 정의에 대한 부분이 익숙하지 않아 눈에 보이는 UI 구현을 먼저 진행하기로 했다.

프로젝트 회의가 학원 수업 진도는 꾸준히 진행되던 중에 하고 있었기 때문에 각자 수업에 무리가 가지 않아야 한다는 점도 고려했던 거 같다.

  1. 카카오 오븐을 이용해서 UI 구조 정하기

화려하지는 않아도 “통일성 있는 UI를 갖자!” 라는 팀의 목표에 맞추기 위해 핵심이 될 페이지들의 간단한 틀을 카카오 오븐으로 각자 구상해서 회의를 진행하고 전체적인 느낌을 맞췄다.

  1. 피그마를 이용해서 담당 페이지 UI 디자인

각 담당 페이지를 나누고 나서는 피그마를 통해서 각자 담당하는 페이지의 상세 UI를 디자인 해서 회의를 진행했다. UI 디자인을 하면서 UI를 만드는 건 단순히 예쁘고 깔끔하게 보여지는 부분일 뿐이라고 생각했는데 이 과정에서 사용자를 편하게 하려면 어떤 부분이 더 노출되면 좋은지 등을 이야기해볼 수 있어서 좋았다.

DB설계

ERD Cloud를 이용해서 다이어그램을 만들었다. SQL 내보내기 기능이 존재하기 때문에 테이블 생성은 간편할 거라 생각했는데… 제약 조건이 제대로 들어가지 않는데다가 쌍따옴표가 알아서 들어가서 오히려 불편하기도 했다.

DB 설계 역시 팀원 전체가 참여했다. DB에 대한 이해도가 비슷했기 때문에 어느 한 사람이 이끌어서 간다거나 하는 부분이 없어서 회의하면서 디테일한 부분을 잡으려고 노력했다.

DB 설계를 하면서 내가 생각보다 SQL 복습을 진짜 안 했구나를 많이 깨달았다… 제약 조건은 다 부여했다고 생각했는데 FK 때문에 게시글 삭제나 회원 탈퇴가 진행이 안 돼서 생성된 테이블을 다 밀어야 했다거나… 그런 예외 상황들이 계속 발생했다.

물론 DB에 익숙하지 않고 개발자로서 역량이 부족한 우리가 좀 더 편해지는 방법으로는 제약 조건을 쓰지 않고 어느 정도 무시하면서 사용하는 방법도 있었으나 나중을 생각했을 때 도움이 될 거라고 생각하지 않았다. 그런 결과 JOIN을 3~4개씩 하는데도 결과값이 안 나온다거나 하는 에러 상황이 발생했다…

Git 관리

학원에서 강사님이 Git 사용법에 대해 잠깐 설명해주신 적이 있긴 했지만… 익숙하지 않고 수업 자료일뿐이라 다들 사용하지 않고 있었던데다가 배운지 시간이 꽤 지나서 우리 팀뿐만 아니라 반 전체적으로 GitHub에 팀 프로젝트 올려서 관리하는데 꽤 어려움을 겪었었다.

운이 좋게도(?) Git을 틈틈이 사용한 결과 우리 팀에서 Git 담당은 내가 맡게 되었는데 이때 역시 아… Git 공부를 좀 더 할 걸! 이라는 생각을 많이 했다. 실제 회사에서 사용하는 것처럼 관리를 해보고 싶었는데 이건 찾아보고 공부할 틈도 없이 어영부영 시작했다는 점이 아쉬움으로 남는다.

강사님이 Git 관리가 어려우면 하나의 레포지토리에 메인 브런치 하나에서 다 같이 사용하라고 하기도 하셨다.

그래도 우리 팀은 다들 Git에 금방 적응하기도 해서 각자 브런치를 생성해서 따로 버전 업그레이드를 하면서 관리하다가 필요한 시점에 메인 브런치에 합치면서 프로젝트를 진행했다.

쿼리문이나 DB 계정 정보가 담긴 properties 파일이나 암호화 키, 사용자가 업로드하는 파일이 담길 폴더 등 보안에 필요한 파일은 .gitignore에 추가해서 git 관리에서 제외 시켰다는 점도 뿌듯했다.

명명 규칙

명명 규칙은 정확하게 정해진 것 없이 이정도만 하자! 정도로 시작했다.

다른 팀에서는 혹시 몰라서 각자 이름의 이니셜을 앞에 넣어서 사용하기도 했다던데.. 그 방법은 무리가 있을 거 같다고 판단해서

  1. 카멜 케이스 규칙
  2. jsp 파일에는 대문자로 시작하지 않을 것
  3. 변수명, 메소드명은 간단하게 요약해서 작성하지 않을 것

정도의 규칙만 정한 상태로 프로젝트를 진행했다.

아무래도 정확하게 정한 게 아닌데다 겹치는 부분에서는 후반부로 갈 수록 변수명이 겹쳐서 이벤트가 실행 안 되는 등에 대한 문제가 좀 생겼었다.

기능 구현

내가 담당한 페이지는 고객센터 및 신고하기 기능이었는데 관리자 권한을 가진 계정만 공지사항 및 자주하는 질문 게시글을 작성할 수 있게 하는 것과 사용자가 1:1 문의를 남기거나 거래 내역 혹은 판매글에 대한 신고글을 작성할 수 있게 하는 것들이었다.

글 작성 페이지에서 한 번에 여러 개의 첨부 파일을 불러와서 DB에 저장하는 것, 저장할 때 파일 저장이나 게시글 내용 저장에 대한 insert가 실패한다면 전부 rollback 시키는 것, 2주 내의 거래 내역만 불러와서 글 작성 시 해당 정보를 화면에 뿌려주는 것… 등등 생각도 못한 부분에서 난관에 부딪히기도 했다.

수업 때 배웠던 건 파일 하나 업로드였는데 여러 개의 파일로 바뀌면서 업로드가 제대로 안 된다거나 비교적 쉬웠던 댓글 기능도 table태그로 이루어진 구조가 아니고 div 태그로 묶인 UI 구조에 따라서 화면에 출력하고 데이터를 입력 받으려고 하니까 원하는 부분에 알맞게 안 들어간다거나 하는 부분들이 많았다.

기능 구현한 코드나 화면은 어려움을 겪었거나 새로운 부분을 알게 된 부분에 대해서 따로 작성해서 올리고 개별적으로 버전 업그레이드를 할 예정이다.

개인 후기

잘한 점

  • 주체적으로 Git 관리를 담당.
  • 보안을 고려하여 gitignore를 사용해서 파일을 따로 관리한 점.
  • 다른 분들 DB 설계에도 제약 조건, 테이블 구조 등에 도움을 줬던 점.
  • 사용한 적 없던 자료형을 가지고 DB 설계 후 데이터를 저장, 출력을 가능하게 한 점.
  • 담당 기능 구현 후 다른 팀원들 에러 해결에 도움을 준 점.
  • 서버 배포, 회의록 작성 등 필요한 정보를 잘 남겨 놓고 프로젝트 진행 도중 확인 가능하게 한 점.
  • 공용으로 사용할 Filter 등 필요한 파일을 우선적으로 작업해서 팀원에게 배포한 점.

아쉬운 점

  • 다른 드라이버를 사용해서 백업 파일을 관리하지 않은 점.
  • 이클립스를 이용해서 git 사용해서 다른 방법으로는 익숙하게 사용하지 못한 점.
  • DB 이해도가 부족해 프로젝트 도중 테이블 삭제 생성이 계속 이루어진 점.
  • 상대적으로 단순한 기능을 맡았음에도 팀 진행도에 크게 기여하지 못했던 점.

팀 후기

좋았던 점

  • 적극적인 의사 표현 : 팀원 전체가 프로젝트 시작부터 끝까지 의사 표현을 잘 해줘서 의견을 못 정해서 시간을 날리는 일이 없었다는 점이 좋았다. 다섯 명의 의견이 하나로 모이는 게 쉽지 않은데 욕심나는 부분은 크게 어필도 하고 상대방 의견은 어느 정도 반영해가면서 프로젝트 진행해준 팀원들한테 많이 고마웠다.
  • 다양한 아이디어 : 프로젝트 진행 시 기능에 대한 아이디어가 정말 끊임없이 나왔다는 점도 큰 장점이었다. 더 추가할 거 없나?를 고민하지 않고 정해진 기간 안에 해결하기 위해 자잘한 기능들은 오히려 제외했다.

아쉬운 점

  • DB 설계 및 관리 부족 : DB 설계 시 생각하지 못한 부분들로 프로젝트 개발 기간에 테이블에 들어간 더미 데이터를 다 밀고 테이블을 다시 만들어서 개발하는데 시간이 많이 뺏겼다는 점이 아쉽다.
  • 마무리 단계 : 마무리 단계에 접어들면서 서버 배포하고 테스트 하는 기간을 날린 게 큰 아쉬움으로 남는다. 기능 마무리가 안 돼서 테스트 단계를 제대로 거치지 못했고, 마무리 단계에 가면서 다들 무리한 탓인지 발표 날에 아침에라도 확인하려 했으나 그것마저 안 돼서 파일만 급하게 합치고 제출하면서 시현할 때 페이지 자체가 안 뜬 상황도 있었다.

이번 프로젝트를 진행하면서 다음에는 기능을 무리하지 않는 선에서 정하고 설계 단계를 좀 더 섬세하게 해야 된다는 깨달음도 얻었다.

첫 프로젝트가 성공적일 수 없다는 말이 많겠지만 난 성공적이라고 생각하고 싶다! 겉보기엔 완성 안 된 프로젝트로 보일 수 있어도 느낀 점이 너무 많아서 큰 도움이 됐다. 혼자 개발하는 게 아니고 협업하면서 소통이 얼마나 중요한 일인지도 깨달았고, 어떤 부분을 더 공부하면 좋을지 많이 깨달았기 때문에!

이제는 홀가분한 마음으로 공부 열심히 해서 파이널을 더 성공적으로 만들 생각이다!

profile
천천히 기록해보는 비비로그
post-custom-banner

0개의 댓글