project 소개
세계 최대 스포츠 브랜드 쇼핑몰인 나이키의 한국 온라인 사이트(nike.co.kr)를 모티브하여 진행한 프로젝트. 평소에도 자주 이용하고 관심이 깊어 사이트 이용 플로우 이해하기 어렵지 않았지만 커머스 사이트의 플로우를 좀 더 깊이있게 학습할 수 있었다. 2주라는 짧은 기간동안 첫 프로젝트를 무사히 마칠 수 있게 도와준 팀원들에게 감사할 따름이다.
개발 인원
프론트엔드 : 4명
백엔드 : 3명
기술스택
Front-End : React.js, SCSS
Back-End : Node.js, Express, JSON WEB TOKEN, Bcrypt, Mysql, AWS(RDS)
공통 : RestFul API
관련링크 :
[시연연상]
[Github]
[Trello]
위 영상은 실제 백엔드의 rds와 통신하며 구현된 영상입니다.
DB modeling
product_options로 제품 별, 사이즈 당 재고 관리 수월
api 분기
db modeling과 동시에 api 분기를 진행하여 시너지효과를 높였으며, 아래 작성된 분기표를 가지고 협업 및 분업을 수월하게 했다.
백엔드 기능 구현 리스트
1.프론트와 변수명 통일을 초기에 세팅하여 통신 테스트하는데 있어서 시간을 확 줄일 수 있었다. 변수명을 통일하는 라이브러리가 있다고 하니 2차 프로젝트때는 해당 라이브러리를 찾아 이용하면 좋을 것 같다.
2.통신을 수월하게 할 수 있도록 담당 파트의 req, res를 공유
이미지엔 담을 수 없지만 에러핸들링에 관한 에러메시지도 같이 공유했으나 시간 관계상 모든 에러에 대해서 프론트와 합을 맞출 순 없었다.
재고를 체크해야 하는 순간이 많아 해당 함수를 미들웨어로 빼두고 필요할 때 마다 require해서 사용했다. 발표 전까지는 해당 내용에 대해 뿌듯했지만 지금 이 글을 쓰는 순간에는 실시간 재고 체크하는 과정 조차 model단에서 한번에 처리했으면 좋았을 것이라는 생각이 든다. 다음 프로젝트때는 최대한 쿼리문을 덜 사용하여 서버 부하를 줄일 수 있는 방향으로 개발을 할 생각이다.
const { cartDao } = require('../models');
const checkStock = async (productOptionId, quantity) => {
const productOption = await cartDao.getStock(productOptionId);
if (productOption.stock === 0) {
const error = new Error('OUT_OF_STOCK');
error.statusCode = 400;
throw error;
}
if (productOption.stock < quantity) {
const error = new Error('REQUEST_QUANTITY_MORE_THAN_STOCK');
error.statusCode = 400;
throw error;
}
};
module.exports = {
checkStock,
};
개발자 전직 결심 이후 첫 프로젝트였다. 처음이라 그런지 간단한 작업도 서툴렀고 커뮤니케이션도 서툴렀다. 부트캠프에서 2개월 동안 배운것들을 바탕으로 코드를 작성하고 팀원들과 협업하는 과정에서 처음인 만큼 부족한 점도 많았지만 배울 수 있던 점이 많았던 프로젝트여서 만족스럽다. 특히 아직까지는 튜토리얼 없이 코드를 작성해가는 실력을 키워야겠다 라는 점과 커뮤니케이션의 중요성을 다시 한번 깨달았다. 다음 프로젝트에서는 이 과정을 중점으로 두고 더 노력해봐야겠다.