공부

실습과제 1 - 회고

낑깡28 2023. 4. 5.

쇼핑몰 API 명세를 작성하고 구현하는 팀 프로젝트 실습을 진행해 보았습니다.

쇼핑몰 요구사항

사용자는 모든 상품을 조회할 수 있다.
사용자는 특정 분류의 상품을 조회할 수 있다.(상품분류, 브랜드명, 가격, 상품명)
사용자의 타입이 판매자인 경우 자신의 상품을 등록할 수 있다.
사용자는 상품을 장바구니에 담을 수 있다.
사용자는 자신의 장바구니를 조회할 수 있다.
사용자는 자신의 장바구니에 있는 상품의 수량을 변경시킬 수 있다.
사용자는 상품을 자신의 장바구니에서 제외할 수 있다.

 

 

협업이 가능한 구글시트에 모여 API 명세에 들어갈 내용을 각자 정리중

 

위 항목들을 바탕으로 API 명세를 작성해 보았습니다.

 

https://velog.io/@ostarry/%EC%87%BC%ED%95%91%EB%AA%B0-API-%EB%AA%85%EC%84%B8-%EC%88%98%EC%A0%95

 

쇼핑몰 API 명세 수정

LINK : FILL_ME_IN개별 항목 조회의 경우 여러 path가 등장 할 수 있기 때문에 기능에 따라 전부 작성해주세요.ex) 친구를 id, name, class에 따라 개별 조회 할 경우 /friends/:id /friends?name=name/friends?

velog.io

 

이 과정에서 결괏값을 반환하는 내용을 제거, Authorization(권한 부여)등의 추가적인 내용 수정과정이 있었습니다.

 

테이블 diagram 작성

쇼핑몰 WAS SERVER 구성 이전 diagram을 이용한 테이블 작성

 

함께 모여 테이블을 구성중

최종 구체화를 하기 전 간단하게 구성을 하였습니다.

 

 

최종적으로 dbdiagram을 사용하여 구체화하였습니다.

 

https://dbdiagram.io/d/642a41855758ac5f172628c1

 

dbdiagram.io - Database Relationship Diagrams Design Tool

 

dbdiagram.io

 

개발 시작

제가 맡은 부분은 product 부분의 product:Id로 특정 상품의 브랜드, 판매자, 카테고리, 가격, 내용 등을 조회하는 기능을 작성하였습니다.

 

fastify.get("/:productId", async function (request, reply) {
      const productId = request.params.productId;
  
      try {
        const { rows } = await fastify.pg.query(
          `SELECT * FROM public.products WHERE "id" = $1 LIMIT 1;`,
          [productId]
        );
      console.log(rows)
        if (rows.length === 0) {
          reply.code(404).send({
            result: null,
          });
        } else {
          const product = rows[0];
  
          // Transform the product object to match the API spec
          const result = {
            sellerId: product.sellerId,
            brandId: product.brandId,
            categoryId: product.categoryId,
            productName: product.productName,
            price: product.price,
            desc: product.desc
          };
  
          reply.code(200).send({
            result: result,
          });
        }
      } catch (err) {
        console.error(err);
        reply.code(500).send({
          error: "Internal Server Error",
        });
      }
    });

 

최종 결과

https://github.com/cs-devops-bootcamp/Devops-04-S1-Team2/blob/main/README.md

 

느낀 점

전공인 컴퓨터공학을 이수하며 몇 번의 프로젝트가 있었지만 이 정도까지 구체적인 목표를 가진 프로젝트는 처음이었습니다.

 

또 저는 전공자이지만 전공자 답지못한 실력을 가지고 있다고 다시 한번 느끼게 되었습니다.(오히려 비전공자라고 생각해도 될 정도..)

 

그래도 처음으로 한 부분에 들어갈 코드를 수정 보완하고 API 명세라는 것을 처음 작성해 보며 이런 게 개발의 일부인 걸까? 라는 생각도 들었습니다.

 

이번 프로젝트에서 저의 기여도는 턱없이 부족했습니다. 고생하는 팀원들을 보며 미안할 정도였습니다.

우선 이 프로젝트에서 무엇이 필요한지 이해하는 것부터 많은 시간이 할애되었고, 제 실력이 부족한 것도 있었고 무언가를 문제를 해결하려 물어보는 시도도 하지 않는 극 I 성향의 성격도 이 문제점에 한몫을 한 것 같습니다.

정말 제 자신을 되돌아보게 되는 3일이었습니다.

 

저는 데브옵스 부트캠프를 신청한 동기중 하나가 '의지박약' 이었습니다.

한달동안 부트캠프를 진행하며 조금이나마 이 점이 나아졌다고 생각을 하였지만 이번 프로젝트로 아직 나아졌다 라고 생각할 정도는 아니구나, 아직 의지박약에서 벗어나지못했다. 라고 생각이 들었습니다. 프로젝트 시작 전 모르는점이 있으면 공부를 해야했어야 했는데 왜 그러지 않았는가 라고 후회를 하게 되었습니다.

앞으로는 블로그를 그날 배운 내용을 정리만 한다 라고 생각하지말고 정확하게 내용을 알고가는 진정한 의미의 복습,  예습이 필요하겠다. 라고 뼈저리게 느꼈습니다.

 

오늘 마무리까지 느낀 미숙한 점들을 앞으로의 다른 팀 프로젝트의 기회가 있다면 팀원들에게 도움을 요청하여 보완해 나가고 개인 역량을 키워 지금보다 '팀에 더 많은 기여가 되는 팀원이 되고 싶다'라고 느끼게 되었습니다.

 

댓글