본문 바로가기

upco #6. 프로젝트 후기 본문

개발/프로젝트

upco #6. 프로젝트 후기

자전하는명왕성 2023. 4. 10. 01:14

1. 팀장으로서의 프로젝트 후기

2. 백엔드 개발자로서의 프로젝트 후기

3. 프로젝트 사용한 기술 스택

 

1. 팀장으로서의 프로젝트 후기

저는 캠프 내 프로젝트에서 팀장으로 팀을 이끌었습니다. 프로젝트 초반에는 대부분의 팀원이 초심자인 것에 비해, 상대적으로 큰 규모의 프로젝트를 기획하였습니다.

소속된 부트캠프에서 모든 기수를 통틀어 역사의 남을 만한 결과물을 만들고 싶다라는 욕심과, 다양한 리더 경험이 있었던 저로서는 무엇이든 해낼 수 있을 것이라는 자신감 때문이었습니다.

프로젝트 초중반까지는 모든 것이 순조로웠습니다. 모든 팀원들과 끊임 없이 소통과 피드백을 진행했고, 가끔은 기획의도와 크게 변하지 않는 선에서 조금씩 프로젝트 방향을 수정하기도 하며, 계획한대로 프로젝트를 만들어 나갔습니다.

하지만, 프로젝트 마감이 일주일 남았을 때부터 타이트한 일정 탓에 몇몇 팀원들의 건강이 악화되는 변수가 발생하였습니다. 팀원 각각의 역할이 구분되어 있던 터라, 프로젝트는 제동이 걸린 채 계획대로 진행되지 못했고 모바일 마켓 진출이나, 영상 통화와 같은 몇 가지 기능은 제대로 시도도 못하고 포기해야 했습니다. 모든 것이 순탄하게 이루어질 것이라고 안일하게 생각한 제 책임이었습니다.

결국 프로젝트의 마감과 발표까지는 성공적으로 마무리 지었으나, 저를 믿고 따라와준 팀원들에게 만족할 만한 성과를 안겨주지 못해 아쉬웠고 아직 부족한 제 그릇을 실감하게 되었습니다.

팀장으로서 프로젝트는 다소 아쉽게 마무리를 지었지만, 이를 양분삼아 다음 프로젝트에서는 목표와 팀원들을 번갈아 보며 임해야겠다고 생각했습니다.

2. 백엔드 개발자로서의 프로젝트 후기

저는 프로젝트 내의 핵심 기술인 유저들의 실시간 위치를 저장 및 조회하는 기능을 담당하여 구현했습니다. 처음에는 각 유저들이 가진 위치정보(위도, 경도)를 20초마다 관계형 데이터베이스인 MySQL에 저장 및 조회하는 방식으로 구현했었는데, 생각보다 조회 시간이 오래 걸리고 오류가 잦다는 문제점을 발견하게 되었습니다.

이를 해결하기 위해, MySQL 대신, 비관계형 데이터베이스이자 데이터를 캐싱할 수 있는 redis를 활용하게 되었습니다. 추가로 redis에 내장되어 있는 기능인 Geo API(위치정보를 저장하는 기능)을 활용하여, 프론트엔드에서 전달하는 지도 범위에 맞춰 범위 내에 존재하는 사용자들의 정보를 보다 빠르게 전달해줄 수 있게 되었으며, 로그아웃된 유저들을 보여주지 않게 로직을 구현하였습니다.

추가로 프로젝트 동안 GCP버킷에 이미지 업로드, 메일 전송, 문의 게시판 CRUD 기능도 함께 구현하였습니다.

 

3. 프로젝트 중 사용한 기술 스택

  • 자바스크립트 : 프로그래머스 알고리즘 문제를 200개 가량 풀었고, 자바스크립트가 동작하는 원리에 대해 이해하고 있습니다.
  • 타입스크립트 : 규모가 커질수록 등장하기 쉬운 각종 오류들에 대비하고자 사용하였습니다.
  • Nest.js : 프로젝트 전체의 코드 재사용성과 유지보수성을 향상시키기 위해 사용하였습니다.
  • graphQL : rest-API보다 빠른 데이터 처리속도와 오버패칭 & 언더패칭 문제를 최소화하고자 사용했습니다.
  • redis : 실시간 유저 위치 정보들을 빠르게 전달함과 동시에 로그아웃된 유저들을 보여주지 않기 위해 사용하였습니다.
  • MySQL : 필요에 따라 데이터를 정규화하여 저장 및 활용하기 위해 사용하였습니다. 
  • Google-Cloud-Platform : 유저 프로필 사진을 업로드하기 위해, GCP내 버킷 저장소를 사용하였습니다.
  • github : 팀원들과 협업을 하기 위해 사용하였습니다.

 

 

Comments