프로젝트 구성
- 목표 웹 사이트 - 미국의 리셀링 서비스 웹 페이지 StockX
- 프로젝트 진행 기간 - 2020.08.31 ~ 2020.09.13 (12일간)
- 팀 구성 - 총 7명(프론트 4명 + 백엔드 3명)
프로젝트 목표
- 1차 프로젝트를 진행하면서 느낀 부족했던, 어려웠던 부분을 보완하여 좀 더 효과적이고 원활한 프로젝트 진행을 경험하는 것
- 1차 프로젝트에서 담당했던 부분이 아닌 새로운 부분을 맡음으로서 새로운 기능에 대한 경험을 쌓는 것
- 좀 더 Scrum 개발 방식에 익숙해지는 것
- 프로젝트 진행을 도와주는 여러 도구를 사용하는 것에 더 익숙해지는 것
프로젝트 진행
- 백엔드 1주차 (2020.08.31 ~ 2020.09.05) 작업
- 목표 페이지에 대한 데이터 모델링 진행
- 프론트엔드 팀의 기능 구현 목표 확인 및 데이터 크롤링 진행
- DB 구성 및 크롤링 데이터 업로드
- 기본적인 회원가입, 로그인 기능 구현 및 테스트 후 소셜 로그인 적용 진행
- 크롤링이 제한되는 경매 관련 데이터를 랜덤으로 생성 후, DB에 업로드하는 작업 수행
- 백엔드 2주차 (2020.09.07 ~ 2020.09.11) 작업
- 소셜 로그인 적용 및 테스트 완료 ( 카카오, 구글 )
- User App의 모든 View에 유닛 테스트 적용 (1, 0, -1)
- 전체 제품 리스트 표현 및 상세 페이지 표현 개발 및 적용
- 전체 제품 리스트에서 주어진 기준에 맞는 정렬 기능 적용
- 제품 검색 기능 적용
- 전체 제품 리스트 로딩 시간 개선을 위한 ORM 최적화 및 Redis 적용
- 프론트엔드 결과물과의 연결 작업
- Docker 설정 및 AWS EC2 인스턴스 설정
- Docker를 사용해서 백엔드 서버를 AWS EC2로 배포
- 백엔드 API 엔드포인트 구성
- User App - /users
- 회원가입 - /sugn-up
- 로그인 - /sign-in
- 카카오 소셜 로그인 - /sign-in/kakao
- 구글 소셜 로그인 - /sign-in/google
- 제품 팔로우 - /follow
- 구매 내역 - /buying-list
- Sale App - /sale
- 검색 기능 - /search
- 제품의 사이즈 별 정보 - /product
- Product App - /products
- 전체 리스트 - __SPACE__
- 상세 페이지 - /<product_id>
- 제품 판매 입찰 정보 - /<product_id>/asks
- 제품 구매 입찰 정보 - /<product_id>/bids
- User App - /users
프로젝트 결과
프로젝트 완료 후 느낀점
- 이번 프로젝트를 마무리하면서 제일 먼저 느낀 점은 결정을 해야 한다면 빠르게 해야 한다는 것이다. 내가 맡았던 제품 리스트와 상세페이지 중 제품 리스트를 정렬하는 기능이 있었는데, 이 기능이 전체 제품을 정렬해야 하는 기능이어서 깊은 생각 없이 ORM을 적용했던 첫번째 버전이 로딩 시간이 수십초에 달할 정도로 비효율적이었다. 원래 내가 맡은 기능이 정렬뿐만아니라 주어진 조건에 해당하는 제품만 보여주는 필터링 기능도 있었으나, 로딩 속도 개선에 너무 많은 시간을 투입한 나머지 해당 기능을 포기할 수 밖에 없었다. 막상 적용을 미루었던 Redis 기술도 그리 어렵지 않은 기술이었기 때문에 더욱 아쉬움이 남는다. 더 빨리 Redis를 적용하겠다는 결정을 했다면 다른 기능 구현을 포기할 일도 없었을 것이라 느껴졌기 때문이다.
- 두번째는 모델링이 정말 중요하다는 점을 느꼈다. 클론할 페이지의 기능은 확실하게 파악했다고 생각했지만 이를 모델링에 반영하는 것이 너무 단순했고 안일했다. 페이지에서 제공하는 여러 정보를 서버에서 즉석으로 계산하여 프론트엔드로 보내는 구조로 모델링을 진행했는데, 비효율적인 ORM과 함께 마이너스의 시너지를 만들어서 로딩시간에 큰 영향을 끼치게 되었다. 게다가 이 문제점을 2주차 화요일 쯤에 파악하게되어서 모델링을 수정하겠다는 생각도 못했다. 모델링은 서버의 주춧돌이라는 점을 확실하게 체감할 수 있던 계기가 되었다.
- 세번째는 어떻게 보면 좋았던 점이라고 할 수 있는데, 서버의 응답 속도를 개선하기 위해서 노력하는 과정에서 보람을 느꼈다. 속도를 개선한다라는 목표를 위해서 ORM 최적화를 진행하고, 점점 응답 속도가 개선되는 것을 보면서 확실한 재미와 보람을 같이 느낄 수 있었다. 실습이라고 할 수 있는 클론 프로젝트를 진행하면서 이런 속도 이슈를 맞닥뜨릴 것이라는 생각이 없었기 때문에 막상 마주했을 때 굉장히 당황했지만, 그래도 어느정도는 괜찮게 대응한 것 같아서, 기분이 좋았다. 무엇보다도 전에는 막연한 생각으로 이런 작업을 하면 스트레스가 굉장할 것 같다는 생각이 있었는데, 실제로 작업을 진행해보니까 나쁘지 않았고, 앞으로도 좋은 감정을 가지고 작업을 할 수 있을 것 같은 생각을 가지게 되었다.
- 네번째 느낀점은 여전히 혼란스러웠던 RESTful API였다. 담당한 기능이 2개 밖에 없었고, 순수하게 제품 정보에 관련된 기능이었기 때문에 전체 리스트 API와 상세 페이지 API를 구성할 때에는 쉬웠으나, 특정 제품의 경매 관련 정보를 제공하는 API에서 정보가 아닌 기능을 기준으로 API를 작성한 것 같아서 조금 아쉽다. RESTful API는 표준이나 마찬가지인 개념이니까 항상 되새겨야 한다는 점을 다시 한번 느꼈다.
'wecode > 기타' 카테고리의 다른 글
첫번째 웹 프로젝트를 끝냈다 (0) | 2020.08.30 |
---|---|
위코드 Codekata - 2 (0) | 2020.08.30 |
위코드 Codekata - 1 (0) | 2020.08.17 |