[SuperfluidClone] 2nd project - superfluid 클론 7일차: 지금까지의 기록

Alex of the year 2020 & 2021·2020년 8월 9일
0
post-thumbnail

Sprint 1 : 오늘 하루가 남은 상황에서 돌아보는 지난 한 주

월요일에 프로젝트가 시작되어
월, 화는 모델링에
수, 목, 금은 크롤링에
금, 토는 DB 구축에 미쳐
이렇게 일주일이 지나갔다.
진짜 시간이 너무 .... 빠르다.

Sprint 2 예상

이제 우리 팀에게 남은 과제는

  • 쿼리 스트링 공부
  • 그 공부를 바탕으로 product app Views.py 제작(같은 백엔드 팀원의 말을 빌리자면 공장장의 마음으로 정신없이 찍어내야 함) 및 product app API 완성 --> 오늘(일요일) 모두 해버렸으면 하는 간절한 소망
  • order app (장바구니) API 완성
  • 프론트와 맞춰본 후 에러 수정할 것 모두 수정
  • 카카오 소셜 로그인 구현
  • AWS 배포

정도이다. 아직 뭔가 분명히 더 있는데 지금 떠오르는 바로는 저기까지.

TIL : This week I Learned

Welcome back 필기병

하루하루 배우는 것이 많아 모두 남김 없이 포스팅하고 싶었다. 그치만 지금은 팀을 이루어 하는 일이고, 백엔드만 놓고봤을 때 팀이 느린 편에 속하기에 블로깅을 할 시간에 조금 더 API를 만지는 것이 모두를 위한 예의라고 생각했다. 실제로 그렇게 했고, 그래도 정말 잊고 싶지 않은 것들은 공책에 적었다. 위코드에서 처음에 노트를 받았을 때, 어차피 다 컴퓨터로 작성할 건데 이걸 왜주지라고 생각했는데 그런 생각은 나의 실수..ㅎ 아주 유용하다. 사실 학창시절부터 거의 병적으로 손으로 무언가 확실하게 정리하는 것을 좋아해왔다. 하지만 이제 와 돌아보니 모든 비용 측면에서 그 방법이 뭔가를 배울 때 매우 비효율적이라는 생각이 들어, 이번만큼은 필기병으로부터 해방되고자 노력했다. 게다가 분야가 분야니만큼 필기병을 동반한 학습이 '간지가 나지 않는다'고 생각했다.

만일 내가 내게 조금 더 쉬운, 가뿐한, 혹은 꽤나 어렵지만 그래도 할만한 일을 하고 있었더라면 드디어 필기에서부터 해방되는 것이 가능했을지도 모르겠다. 그러나 프로그래밍은 내게 ... 음.
(지금은) 생각보다도 훨씬 더.. 많이 예상하고 왔음에도 불구하고... (지금은) 많이 .. 아주 많이 (지금은) 어려운 일이다. 따라서 현재 시작 단계에서는 방법론적이거나 도구적인 것은 적절히 내 학습 습관에 맞추어 타협하고, 드디어 뭐라도 알겠다, 싶은 그 순간이 온다면 그 때는 다시 맥북과 혼연일체하여 공부하도록 하기로 했다.

This week 잔혹史

'잔혹사'라는 표현을 심심치 않게 접해왔지만 유독 요즈음 마음에 와닿는다. 하루하루 깨지고 무너지고 코드도 마음도 박살나가며 '언제면 이런 날이 끝날까' 하면서도, 지금이 아니라면 이렇게 깨질 수 있는 시간도 없을 것이라는 생각도 든다. 또한 꽤나 오랜 시간과 노력을 들여 반드시 이 과정을 겪어야 하는 것도 알고 있다. 너무 싫은데 한편으로는 너무도 이런 시간을 원하는, 양가적인 감정이 하루에도 몇 번씩 서로를 오가는 것 같다.

큰 노력없이도 원래 잘하는 일, 돈 되는 일 말고 "내가 하고 싶은 일"을 하고 싶어 스스로를 사지(死地)에 몰아넣은 건 나다. 내가 선택했으니 책임을 져야한다. 꼭, 잘 해내고 싶다. 그리고 긍정적으로 보면, 먹고 사는 일 잠시 미뤄두고 내 계발만 생각할 수 있는 이런 시간이 모두에게 주어질 수 있는 시간이 아니라는 것을 알기에 감사하기도 하다.

하지만 현실은 everyday 잔혹 그 자체이므로, 그리고 이 역사는 계속되고 기록될 것이므로 굳이 잔혹사라고 표현하겠다.

잔혹1: 모델링 잔혹
칠판 붙잡고 써가며 모델링, 같은 팀 동료가 AQuery에 구현한 것 이해하면서 다시 한 번 복습, 그럼에도 이해 안되서 직접 손으로 쓴 게 세 차례. 아직도 일대일, 일대다, 다대다 관계가 한 번에 보이지는 않는다. 나름 생각해서 다대다구나? 해도 일대다. 일대다아닐까? 하면 다대다. 이런 경우가 많다. 그래도 이제는 클론하는 웹페이지 내 정보 간의 관계는 어느 정도 파악하고 일하고 있다. 과정은 다소 잔혹했지만 우선 다행.

잔혹2: 크롤링 잔혹
셀레니움과 뷰티풀숲을 오가며, 이 태그 저 태그 다 찍어가며 상품 리스트와 인물 사진 크롤링에 성공했다. 새벽 3시까지 붙잡고 드디어 url이 긁혔을 때의 그 기쁨을 기억하는데, 그 다음날 다시 위코드에서 살짝만 변형해서 시도하니 전혀.. 안되는 것이다. 정말 속상했다. 다른 팀에서 맹활약 중인 동료에게 도움을 요청했고, 나는 하루를 꼬박 쓰고도 잘 안됐건만 눈앞에서 10분도 안되어 정보를 긁어버리는 것을보고 2차 속상했다. 그 동료에게 셀레니움이 계속해서 창을 띄워야한다는 치명적 단점이 있어 나는 뷰리풀숩을 더 선호한다고 말하니, 그 동료는 셀레니움으로만 긁힐 수도 있는 정보도 있다고 귀띔해주었다.
같은 팀 동료는 지난 1차 프로젝트 때 본인의 피와 땀을 갈아 거의 일당백으로 프로젝트를하면서 실력이 무척 늘었는데, 보아하니 이 동료도 크롤링에 아주 능숙해졌다. 나도 1차때보다는 크롤링에 대해 감이 잡혔다. 이번 프로젝트가 끝나고 나의 크롤링 코드, 그리고 그들의 크롤링 코드를 모두 분석할 생각이다.

잔혹3: RDS 잔혹
같은 팀원과 함께 DB 구축 작업을 진행하며 CSV 파일을 이미지 관련 파일과 텍스트 파일 두 개로 나누었다. 어차피 함께 구축하여 쓸 것이라면 지금 AWS RDS로 DB를 공유하여 편히 쓰기로 합의했다. 첫 user DB를 내가 구축했기에 AWS RDS DB 업로드는 내 계정으로 진행했다. 1차 때 급하게 한 번 했었던 과정인데, 두번째로 해보니 조금 더 기억에 남는다. 터미널에서 mysql -u root -p로 들어가던 로컬 Mysql DB에 비해 RDS는 조금 더 속도가 느리고, 커넥션이 가끔 끊겨 있을 때도 있다. 하지만 뭔가 공유된 DB를 사용하니 조금 더 "데이터 베이스"라는 말이 와닿는 것 같았다. 나는 이미지 정보를, 팀원은 그 외 상세 페이지 텍스트를 각각 DB에 업로드하기로 했고 이 과정에서 mysql 제약 조건 관련 버벅임이 있었지만 팀원의 도움, 다른 팀원의 도움, 구글링으로 해결. models.py에서 not null 제약 조건과 default ="" 부분이 어쩔 때는 쓰면 갑자기 되었다가 어쩔 때는 지우면 갑자기 되었다가 그런다. 정말이지 기준을 모르겠다. 이 부분도 당연히 정리해야한다.

잔혹4: prefetch_related, List comprehension 잔혹
1차 프로젝트 때, select_related, prefetch_related, 정참조 역참조.... 등등을 옆에서 얘기할 때 리뷰 크롤링도 못해서 발만 굴렀던 나다. 정말 알고 싶었다.. 그게 뭘까 과연.. 언제 쓰는 것일까. 그리고 어제 드디어... 왜 쓰는지를 알았다! product에서 get 메소드를 이용하여 상품의 전체 정보를 보여줄 때, DB 히트를 적게 하기 위함이라는 말도 무슨 말인지 이해했다. 리스트 컴프리헨션도 같다. 이거 왜 써 그냥 원래대로 정석대로 쓰면 안될까.. 했는데 왜 쓰는지 알겠다. 자세한 설명 역시 프로젝트 끝나고 정리 예정.

잔혹5: Query String 잔혹(예상)
지금 이 시간부터 잔혹할 예정.

아직 모르는게 너무 많아 너무 힘들지만 그만큼 모든 것이 새롭고 기록할 가치가 있는 것들이어서 뿌듯하기도 하다. 오늘 목표한 바를 이루고 내일부터는 꼭 소셜 로그인에 들어가고 싶다.

오늘 하루도
나 화이팅.

profile
Backend 개발 학습 아카이빙 블로그입니다. (현재는 작성하지 않습니다.)

0개의 댓글