원티드(http://www.wanted.com) 클론 코딩 프로젝트입니다.
프로젝트 수행 기간 : 2020.10.05 ~ 2020.10.16
팀원 :
Front-end : 박남준, 김호균, 이연성, 장주희
Back-end : 홍성은, 문성호
Github Repository 주소 :
Frontend : https://github.com/wecode-bootcamp-korea/12-Cuted-Frontend
Backend : https://github.com/wecode-bootcamp-korea/12-Cuted-backend
나는 채용 관련 리스트, 상세 페이지, 탐색 기능 Endpoint를 주력으로 구현하게 됐는데, 1차 때에는 Data를 불러오는데에만 급급했다면, 2차 때에는 Data들을 좀 더 효율적으로 불러오는데에 주력했던 것 같다.
멘토님들도 기능의 구현에만 만족하지 않고, DB의 Query Caching에 좀 더 중점을 두고 지도해주셨던 것 같다. Select_related, Prefetch_related 등을 통해 참조하는 데이터들을 DB hit 수를 줄이면서 불러오도록 지도해주셨다.
우리처럼 데이터가 Scalable하지 않은 경우에는 큰 차이가 나지 않지만, 규모가 큰 서비스는 약간의 차이도 서버에 매우 큰 Load가 걸리게 하고 그 모든 것이 서비스의 비용이기 때문에, 중요할 수 밖에 없다고 하셨다.
원티드 이력서에는 파일 업로드 기능이 있다. 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차 프로젝트의 소기의 성과라고 볼 수 있다.
이번에 본의 아니게 PM이라는 직책을 맡고, 팀의 Standup Meeting을 주재하는 역할을 맡게 되었는데, 간단한 프로젝트임에도 생각보다 판단력이 요구되는 자리가 리더라는 것을 새삼 깨닫게 되었다.
2주짜리 프로젝트였지만, 하루하루 무엇을 할 지, 그리고 이번 주 어디까지 되어 있어야 하고 되지 않았을 때 어떤 방식으로 조정할지 예상해봐야 하고, 예상하지 못한 상황에 대해서도 충분히 생각해보아야 하는 자리였다.
같이 진행한 팀원들이 다들 자기 역할을 잘 수행해주었기 때문에, 큰 돌발사항은 없었지만 만약 내가 아주 오랜 세월이 흘러 어떤 팀을 이끄는 리더가 되었을 때는 지금보다 훨씬 더 높은 수준의 순발력과 판단력이 요구될 것이라는 것을 알게 된 자리여서 그 Tutorial을 미리 진행해봤다는 데에서 큰 의의가 있었다.
위코드에 오기 전에는, 개발을 배워서 취업할 생각만 했지 다른 것들을 깊게 생각해보지 않았다. 개발자도 결국은 직장인이니까 내 기술만 잘 쌓아서 잘 취업하고 스스로의 가치를 높여가면 그 뿐이라고 생각했다.
그러나 위코드에 와서 느낀 것은, 개발보다 더 많이 배우게 되는 것이 사람에 대해서였다는 것이다. 개발은 혼자 하는 것이 아니라, 팀으로 모여서 톱니바퀴처럼 흘러가야 하기 때문에 개개인의 실력과 개성이 팀의 퍼포먼스에 다른 직종보다도 더 크게 영향을 미치는 직업이다.
사람의 성향에 따라서 대화하는 방식도 달라야 하고, 내가 알고 있는 것을 상대가 모르기도 하고, 또는 더 많이 알기 때문에 당연한 이야기처럼 듣기도 하기 때문에 '동기화'를 하는 과정이 매우 쉽지 않았다.
아직 개발자로써 1달밖에 되지 않았지만 사람에 대해 더더욱 많이 생각하고, 느끼고 또 그 커뮤니티에서 어떻게 어우러져야 하는지에 대해서 매우 많이 생각해야 한다는 것을 느낀 것도 지난 1달간의 소득이었다고 볼 수 있다.