Wecode 2차 프로젝트 회고록 - Wanted 클론 프로젝트

문성호·2020년 10월 18일
0

1) 프로젝트 소개

  • 기간 : 2020.10.05 ~ 2020.10.16

2) 사용된 기술

  • python, Django
  • MySQL
  • Bcrypt, PyJWT
  • CORS headers
  • RESTful api
  • Boto3(AWS-S3 Bucket 연동 라이브러리)

3) 나의 주요 역할

  • Database Modeling 및 Data Crawling & DB 구축.
  • 채용 공고 리스트 페이지 기능 Endpoint 구현
    채용 상세 페이지 기능 Endpoint 구현.
    채용 공고 탐색 기능 Endpoint 구현.
  • '좋아요' 기능 Endpoint 구현.
  • AWS - S3 Bucket 연동, 이미지 파일 업로드 기능 Endpoint 구현.

4) 과정

(1) 모델링, DB 구축.

  • 1차 프로젝트 때보다는 모델링에 좀 더 익숙해졌다.
    그러나, 그럼에도 불구하고 아직 모델링은 더 많은 연습이 필요한 것이 사실이다.
  • 모델링에 대한 연습도 중요하지만, 무엇보다 중요한 것은 프로젝트의 기획 - Endpoint 구현 - 모델링 이 3가지를 구분짓는 것이 아닌 하나의 Flow 속에서 생각해야 한다는 것이다.
  • 1주차에 모델링을 짰지만, Endpoint를 구현하면서 데이터를 사용할 때마다 모델링의 구조에 대해서 다시금 생각해봐야했고, 그 과정에서 비공식적으로 수정하면서 다시금 모델링과 DB의 구조에 대해서 생각해볼 수 있는 계기가 됐다.

(2) 채용 관련 기능 Endpoint 구현.

  • 나는 채용 관련 리스트, 상세 페이지, 탐색 기능 Endpoint를 주력으로 구현하게 됐는데, 1차 때에는 Data를 불러오는데에만 급급했다면, 2차 때에는 Data들을 좀 더 효율적으로 불러오는데에 주력했던 것 같다.

  • 멘토님들도 기능의 구현에만 만족하지 않고, DB의 Query Caching에 좀 더 중점을 두고 지도해주셨던 것 같다. Select_related, Prefetch_related 등을 통해 참조하는 데이터들을 DB hit 수를 줄이면서 불러오도록 지도해주셨다.

  • 우리처럼 데이터가 Scalable하지 않은 경우에는 큰 차이가 나지 않지만, 규모가 큰 서비스는 약간의 차이도 서버에 매우 큰 Load가 걸리게 하고 그 모든 것이 서비스의 비용이기 때문에, 중요할 수 밖에 없다고 하셨다.

(3) AWS-S3 파일 업로드 기능 Endpoint 구현.

  • 원티드 이력서에는 파일 업로드 기능이 있다. Django의 Forms를 이용해서 구현하는 방법이 있지만, 멘토님은 AWS 서버에 개인 S3 Bucket을 만들고, 그 파일의 URL을 불러와서 DB에 저장하는 Flow로 구현해보라고 하셨다.

  • django와 AWS S3를 연결하는 boto3 라이브러리를 설치하고,
    AWS에 S3 bucket을 하나 생성한다.

  • 프론트엔드에서 파일을 FormData로 넘겨준다. formdata 형태로 FILES라는 딕셔너리에 file이라는 키 값에 value값으로 파일들이 넘어온다.

  • S3 Bucket을 생성하고 받은 Access_key_id와 Secret_access_key로 bucket에 접근한 후, 프론트엔드에서 request에 FormData로 넘겨받은 File들의 list를 하나하나 업로드하면서, 각 File마다 우리 DB에 File Table에 그 Title과 Url을 저장하는 과정까지가 하나의 Flow다.

  • 멘토님들의 Guide가 있었지만, 그럼에도 불구하고 주요기능들을 내가 직접 구글링하면서 구현해봤다는 것 자체가 이번 2차 프로젝트의 소기의 성과라고 볼 수 있다.

5) 느낀 점

(1) 처음 맡아본 PM(Project manager)

  • 이번에 본의 아니게 PM이라는 직책을 맡고, 팀의 Standup Meeting을 주재하는 역할을 맡게 되었는데, 간단한 프로젝트임에도 생각보다 판단력이 요구되는 자리가 리더라는 것을 새삼 깨닫게 되었다.

  • 2주짜리 프로젝트였지만, 하루하루 무엇을 할 지, 그리고 이번 주 어디까지 되어 있어야 하고 되지 않았을 때 어떤 방식으로 조정할지 예상해봐야 하고, 예상하지 못한 상황에 대해서도 충분히 생각해보아야 하는 자리였다.

  • 같이 진행한 팀원들이 다들 자기 역할을 잘 수행해주었기 때문에, 큰 돌발사항은 없었지만 만약 내가 아주 오랜 세월이 흘러 어떤 팀을 이끄는 리더가 되었을 때는 지금보다 훨씬 더 높은 수준의 순발력과 판단력이 요구될 것이라는 것을 알게 된 자리여서 그 Tutorial을 미리 진행해봤다는 데에서 큰 의의가 있었다.

(2) 중요한 것은 결국 소통.

  • 위코드에 오기 전에는, 개발을 배워서 취업할 생각만 했지 다른 것들을 깊게 생각해보지 않았다. 개발자도 결국은 직장인이니까 내 기술만 잘 쌓아서 잘 취업하고 스스로의 가치를 높여가면 그 뿐이라고 생각했다.

  • 그러나 위코드에 와서 느낀 것은, 개발보다 더 많이 배우게 되는 것이 사람에 대해서였다는 것이다. 개발은 혼자 하는 것이 아니라, 팀으로 모여서 톱니바퀴처럼 흘러가야 하기 때문에 개개인의 실력과 개성이 팀의 퍼포먼스에 다른 직종보다도 더 크게 영향을 미치는 직업이다.

  • 사람의 성향에 따라서 대화하는 방식도 달라야 하고, 내가 알고 있는 것을 상대가 모르기도 하고, 또는 더 많이 알기 때문에 당연한 이야기처럼 듣기도 하기 때문에 '동기화'를 하는 과정이 매우 쉽지 않았다.

  • 아직 개발자로써 1달밖에 되지 않았지만 사람에 대해 더더욱 많이 생각하고, 느끼고 또 그 커뮤니티에서 어떻게 어우러져야 하는지에 대해서 매우 많이 생각해야 한다는 것을 느낀 것도 지난 1달간의 소득이었다고 볼 수 있다.

profile
오늘을 모아 내일을

0개의 댓글