이번 주는 클론프로젝트를 하였고 우리 팀은 카카오프렌즈샵을 클론하였다. 나는 장바구니, 주문내역을 담당하였다. 처음엔 좋아요와 비슷하게 하면 되겠다 라고 생각했으나 완전히 틀린 생각이었고 결국 장바구니 id, userId, products 이렇게 구성하고 products는 json형식으로 배열로 받아야겠다 라고 생각하고 코드를 짰다. 장바구니만 잘 짜두면 구매내역은 장바구니를 그대로 받아와서 저장만 하면 되기에 장바구니에 온 힘을 다 쏟았다. 그리고 생각했던대로 코드를 완성하였지만 나머지 코드 짜는 것들이 좀 복잡해졌다. 그래서 잘못 짰구나 라는 생각이 크게 맴돌았다. 하지만 다행히 매니저님에게 코드를 좀 잘못 짠 거 같다라고 솔직하게 말씀드렸으니 그렇게 복잡한 코드도 아니고 코드도 다 읽히고 충분히 괜찮다고 말씀해주셔서 마음이 놓였다. 더군다나 팩폭을 잘 하는 매니저님이었기에 욕을 한 바가지 먹을 각오를 하고 있었는데 괜찮다고 말씀해주셔서 더욱 안심이 되었다. 그래도 마음 한 구석은 뭔가 찝찝한게 있었다. 현업에서는 어떻게 짜는 지 모르는 상태였고 매니저님에게 물어봐도 매니저님이 다니는 회사가 이커머스 기업이 아니기에 장바구니에 대해 잘 모르신다고 하셨다. 그래도 구매 횟수도 파악해서 베스트 상품도 구분할 수 있었고 단순하게 코드 짜다가 처음으로 코드다운 코드를 짠 거 같아서 기분이 좋았다.
나머지는 별 문제없이 잘 흘러갔다. 장바구니를 잘 짜두니 나머지는 코드 돌려쓰기 느낌이어서 복붙하고 일부만 수정하면 되었다. 그렇게 백은 코드를 다 완성하였고 배포하였지만 시간이 남았다. 뭔가 백은 시간이 남는다 라는 말을 매니저님들이 해주셨는데 이래서 시간이 남는다는거였구나 였다.
매니저님의 개인 사정으로 목요일 발표 때 참석이 힘드셔서 수요일에 코드 리뷰를 받았는데 이때도 큰 지적은 없었다. 다만, 안 쓰는 것들은 지우고 변수명을 좀 더 확실하게 하고 코드의 가독성을 높이기에 레포를 좀 더 나누었으면 좋겠다 라는 말을 들었다. 나는 장바구니와 오더리스트를 주문이라는 하나의 레포로 쓰고 있었는데 확실히 헷갈리긴 했었다. 그리고 트랜잭션이라는 것에 대해 알아보는 걸 추천해주셨다. 실제로 경험했던 에러가 있었는데 사용자가 구매를 하면 먼저 Product의 테이블에서 구매 횟수인 amount가 먼저 올라가고 Carts의 테이블에 구매하는 유저아이디로 칼럼을 찾아지우고 Carts 테이블의 칼럼을 그대로 OrderLists로 옮겨야한다. 하지만 OrderLists에세 에러가 나서 실제로 구매는 안 되었지만 amount는 올라가고 Carts에서 내용은 삭제된 현상이 있었다. 이럴 때 트랜잭션을 사용하면 만약 실패했을 경우 롤백을 해준다. 매우 유용한 기능이라는 생각이 들었고 이커머스 기업에선 필수적인 기술이라는 생각이 들었고 적용할려고 해보았지만 쉽지는 않았다. 적용 자체는 쉬웠지만 3 layer로 나눈 상태에서 트랜잭션은 data layer에 들어가야하는데 또 보면 롤백은 catch 쪽에 들어가야한다는 걸 보았다. 전반적으로 볼 떈 서비스에 들어가야할거같은데 try catch는 컨트롤러에 있고 트랜잭션 적용은 또 레포에서 하기때문에 결국 적용을 시키지 못 했다. 하지만 이건 언젠가 한번은 적용 시켜보고싶다.
이제 실전만을 남기고 있다. 6주동안 실전을 위해 열심히 준비해왔고 이제 시작이자 마무리 단계라는 생각이 든다. 열심히 해서 만족스러운 서비스를 런칭하고 그걸 바탕으로 원하는 곳으로 취업을 할 수 있으면 좋겠다!
'WIL' 카테고리의 다른 글
| 1월 9일 ~ 15일 WIL (0) | 2023.01.15 |
|---|---|
| 1월 2일 ~ 8일 WIL (0) | 2023.01.08 |
| 12월 19일 ~ 25일 WIL (0) | 2022.12.25 |
| 12월 12일 ~ 18일 WIL (0) | 2022.12.18 |
| 12월 5일 ~ 11일 WIL (0) | 2022.12.11 |