Monday_Sep_14
.
.
.

👨‍💻👩‍💻 프로잭트 소개


클론한 사이트 : Brandi
팀명 : 커머스 개발팀(위코드 인턴)
개발 기간 : 2020.08.18 ~ 2020.09.11
개발인원 👇
Frontend = ["김경배", "배정규"]
Backend = ["손수정", "이곤호", "이민호"]
GitHub : https://github.com/minho-lee0716/brandi-project

⚙️ 사용된 기술

👀 Front-End

  • Vue.js
  • Webpack
  • JS(ES6)
  • Git, Github
  • Sass(SCSS)
  • Axios
  • CkEdtior
  • Vuetify

👀 Back-End

  • Python
  • Flask
  • MYSQL
  • CORS headers
  • Git, Github
  • AWS(ec2,RDS)
  • RESTful API

👀 협업 툴

  • Slack
  • Trello
  • git & github
  • Aquery tool
  • Notion

🤔 내가 맡은 역할/부분

1️⃣ 서비스 페이지 > Product 관련 API

상품 전체 리스트 API

등록된 모든 상품을 메인 페이지에 나타나게 하는 API이고,
최신 등록순으로 상품을 보여주기 위해 SQL문으로
DESC(내침차순) 정렬을 해주었습니다.

메인 페이지에 나타나는 상품의 기준은 삭제된 상품이 아니어야 하고,
진열 여부와 판매 여부가 모두 True인 상품만 나타나게 했습니다.

상품 상세 정보(상세, 색상) API

메인 페이지에서 해당 상품을 클릭 시, Query String으로 해당 product_id만 받아와서 GET 메소드로 주는 방식을 사용했고, 실제 협업에서는 해당 상품에 대한 상세 정보, 색상, 사이즈, 수량을 한번에 Return 해 준다고 했는데, SQL에 익숙하지 않아서 색상까지만 Return을 하고 나머지 옵션인 사이즈와 수량은 따로 API를 만들었습니다.

상품 상세 정보(사이즈, 수량) API

해당 상품에서 색상 옵션을 선택하면 GET 방식으로 요청을 한 번더 합니다.
Query Parameter로 상품의 id, 색상을 주면 그에 맞는 사이즈와, 수량을 Return해 줍니다.

2️⃣ 서비스 페이지 > Order 관련 API

구매할 상품 정보(주문 정보) API

해당 상품의 모든 옵션을 고르고 '구매하기' 버튼을 누르면, 프론트에서
product_id, color_id, size_id, quantity를 받아옵니다.

그 전에 상품 상세 페이지에 들어올 때, 프론트에게 해당 상품에 대한
min_sales_quantity(최소 판매 수량),
max_sales_quantity(최대 판매 수량)에 대한 정보도 줍니다.

프론트 측에서 실수를 할 수 있으니 백엔드 쪽에서 다시 한 번 검사를 해줍니다.

아무래 재고를 정확히 받아도 현재 해당 상품의 재고보다 많이 샀다면 구매를 할 수 없습니다.

물론 여기서 부터는 로그인 된 유저인지, 맞다면 우리 서버의 유저가 맞는지 등을 확인한 후 결제하기 페이지로 넘어가고, 해당 유저가 이전에 주문한 이력이 있으면, 이전에 주문했던 배송지 정보도 Return해 줍니다.

결제 완료(주문 완료) API

유저가 사려는 상품에 대한 정보들과 유저가 입력한 배송지 정보를 Body로 받아옵니다. 유저가 배송지 정보를 변경 가능하기에 배송지 정보까지 받아오는 것입니다.

이전에 재고가 남아있어서 구매하기를 클릭했더라고 결제하려는 순간 재고가 없을 수 있기 때문에 한 번더 검사를 진행해줍니다.(사용자가 많이 몰려오는 '핫딜'에 대해 대비를 했습니다.)

사실 상품 전체 API에서 부터 백엔드에서 해당 상품의 원가와 할인율을 계산해
할인가를 주고 있었습니다. 그리고 수량을 고른 후, 구매하기를 누르면 프론트에서 해당 상품의 할인가 * 수량을 한 값을 Total_price라고 백엔드 쪽으로 정보를 주고 있습니다. 하지만 백엔드에서는 Total_price에 대해 다시 한번 더 계산을 하고 있습니다. 상품마다 할인 기간이 존재하는데(아닌 상품도 있음), 구매하기를 눌렀을 때에는 해당 상품이 할인을 하는 상품이었다가 결제를 하려는 순간에 해당 상품에 대한 할인 기간이 끝나 할인이 되지 않을 수도 있기 때문입니다.

그리고 마지막으로 결제가 되기위해 먼저 상품에 대한 수량을 빼고,
해당 상품의 수량에 대한 선분이력을 관리하는 테이블에 새로운 이력을 생성하고 그 전에 있던 이력을 update해 줍니다. 그러면 결제까지 완료가 됩니다.

주문, 상품, 수량에 대한 부분들은 모두 선분이력으로 관리를 해주었습니다.

🤔 회고

👏 잘한점

1️⃣

일단 내가 기업 협업을 나간 이유는 딱 한 가지였다.
새로운 프레임워크인 Flask를 맛보기 위함.

정말 정말 힘들었지만 기업 협업을 나간 것 자체만으로도 잘했다고 생각한다.
물론 짧으면 짧고 길면 긴 한 달이었지만, 정말 많이 성장했고 Flask뿐만 아니라 SQL 공부도 같이 병행하였고 특히 실제 현업에서는 데이터가 어떻게 흘러가고 또, API는 어떤 식으로 만드는지 알 수 있어서 너무 좋았다.
협업 나가길 진짜 잘한 것 같다.

😅 아쉬운점

1️⃣

분명 열심히 했지만 뒤돌아봤을 때 내가 단 한순간이라도 나태했던 시간이 없었냐라고 물으면 당연히 No.

그 나태했던 조금의 시간 동안 좀 더 공부를 해서 API를 좀 더 Fun 하고 Cool 하고 Sexy 하게 만들었더라면 좋았을 텐데.. ㅠ 그랬으면 현업 개발자 팀장님께 조금이라도 더 피드백을 받고 성장할 수 있었을 텐데 그분이 조금 아쉽다.

🛠 해결/개선 방법

1️⃣

마지막 날 오전에 프로젝트 발표를 하고 오후에는 면접을 봤었다.
어쩌다 이런 얘기가 나왔다.

"잘하는 사람(이해력이 빠른 사람)과 못하는 사람(성장이 느린 사람)의 차이가 무엇이라고 생각하세요?"

이 말을 듣고 뭐라 말을 했는지 기억은 안 나지만, 면접이 끝나고 많은 생각에 잠겼었다.

당연히 사람마다 개개인의 속도 차는 분명 존재하지만 내가 현재 최선을 다하고 있는 건지, 올바른 태도로 새로운 기술을 접하고 또는 배우고 있는 건지.

빨리 이 문제를 해결해야만 개선이 되고 그래야만 성장할 수 있다고 생각한다.

✍️ 기록하고 싶은 코드/함수/로직

1️⃣ 에러 처리

사실 위 코드에서 팀 프로젝트를 할 때에는 조금의 예외 처리, 에러 처리를 하긴 했지만 자세히 다루지는 않았었다(제 기준 ㅋㅋㅋ 😅 )

하지만 이번에 협업 프로젝트를 통해좀 더더 자세하게 하나하나예외 처리와와에러 처리에에 신경을 더쓴 것 같다.

2️⃣ 실제 현업의 Flow? 경우의 수?

제목을 뭐하고 해야 할지 모르겠다.

일단 소스도 올리고 싶은데 너무 길어서 설명하기도 복잡해 간단히 몇 줄 적어보려고 한다.

예를 들어 주문을 하는 API를 개발할 때, 사실 주문 클릭. 땡!
이게 아니라 그 버튼을 누른 순간에 해당 DB에 재고가 그만큼 존재하는지, 또는 구매한 그 시점에 한인율에 끝나서 할인가가 바뀌지는 않았는지 잘못된 통신으로 인해 존재하지 않는 상품이나 옵션을 요청했다든지 등, 많은 경우의 수를 생각하며 로직을 짜야 한다.

이 부분은 GitHub을 통해 봐주셨으면 한다.
한 줄 한 줄 주석까지 잘 달려있다.
아직 리팩토링은 하지 않아서 함수 설명이나 몇몇 주석이 이상한 수 있다는 점 양해를 바란다 🙏

🙇🏻‍♂️ 소감

1️⃣ 중간중간 꼭 프론트와 소통하자!

api를 찍어 낼 때마다 프론트와 중간중간 맞춰봐야 하는게 당연하지만 쉽게 되지가 않았다. 소통도 잘 되었지만 각자 다른 로컬에서 다른 브랜치로 작업을 하다보니 스무스하게 맞추기가 힘들었다. 분명 프로페셔널하게 하는 방법이 있을 텐데... ㅡㅡ (사실 이건 2차 프로젝트 후기에도 똑같이 적었지만 잘 안된다 ㅋㅋㅋ 커뮤니케이션을 잘해도 쉽지 않다 ㅠ)

2️⃣ 함께해서 위코드, 동기사랑 나라사랑 ❤️👍

위코드에서 작성하는 마지막 소감이다.

항상 생각하지만, 인생에서 가장 잘한 것이 현재로썬 2가지이다. 첫째는 군대를 빨리 갔다 온 거, 두 번째는 위코드에 온 것이다.

일단 개발이면 개발, 인성이면 인성, 협업이면 협업.
모두가 원하는 '함께 일하고 싶은 개발자'가 되기 위해 하드웨어부터 소프트웨어까지 업데이트를 해준다.

그리고 위코드를 통해 정말 값진 동기들과 멘토님들을 얻었다. (얻었다...? ㅋㅋ)
프로젝트를 진행할 때마다 힘들 때라던가 안 풀릴 때 항상 옆에 동기들과 멘토님들이 계셨다. 사실 진짜 할 말도 많고 느끼는것도 많은데 왜 글을 쓰려니 생각이 안나는지 모르겠다.

아무튼 위코드에 온 순간부터 수료하는 순간까지 나 자신이 너무 자랑스럽고 뿌듯했다. 10기 모두 수고했고 다들 좋은 결과가 있었으면 좋겠다. 또 모두 좋은, 모두가 원하는 개발자가 되길 기도한다 🙏

profile
🐇 Rabbit can take a rest, but 🐢 turtle can't

0개의 댓글