https://github.com/sgdevcamp2022/recoder
주제
우리 팀은 화상회의 플랫폼이라는 주제를 가지고 구글 미트 클론 코딩을 목표로 선택하였습니다.
개인 목표
PMP 문서 작성을 통하여 내가 어떤 점을 목표로 삼아야 하는지, 무엇이 부족하고 무엇을 해야 하는지를 정확하게 파악할 수 있게 되어서 자기 객관화에 도움이 된 것 같습니다.
팀의 목표
위와 같이 팀의 목표를 정하였습니다.
따라서 항상 매일매일 아래와 같이 일간 보고를 작성하고, 매주 회의를 거쳐 회의록도 작성하며, 팀간의 소통 능력을 기를 수 있는 좋은 경험이었습니다.
아키텍처
저희 팀은 MediaSoup라는 미디어 서버 오픈소스를 통하여 SFU방식의 통신으로 팀 화상회의를 구현하고자 하였습니다.
사실 이전에는 위와같이 뚜렷한 계획 없이 일단 어떻게든 해보자라는 마인드로 성급하게 개발을 해왔었는데 위와 같은 과정을 통해 미리 계획을 설계하는 것이 얼마나 중요한 것인지 깨닫게 되었습니다.
왜냐하면 혼자서 개발하는 것이 아닌 팀 단위로 개발을 할 때는 예기치 못한 상황이 찾아오기 마련이며 이를 해결하기 위해서는 계획된 부분에서 차근차근 수정을 하거나 다른 개발자 분들과 소통하기가 훨씬 수월해졌습니다.
실제로 위 그림과 같이 모든 기능들을 구현하고자 계획했으나 시간과 러닝커브 등의 문제로 구현하지 못한 부분이 많았습니다.
그렇다면 화상회의 플랫폼에서 가장 중요한 부분은 무엇인가? 꼭 이루어져야할 기능은 무엇인가라고 생각해 봤을 때 위 그림과 같이 중요한 부분들만 체크하여 일정의 우선순위 및 일정산정이 더욱 수월해졌습니다.
성공한 부분과 부족했던 부분
위와 같이 처음에 목표로 삼았던 부분과 실제로 구현된 부분이 다른 점이 존재하여 어떻게 하면 더 높은 완성도를 가진 서비스를 개발할 수 있을지 고민했던 부분과 어려웠던 점입니다.
시연 화면
배운 점
- 협업을 위해 서버 API의 요청, 응답 값을 JSON으로 통일
- 기본적인 이론을 충분히 습득해야겠다고 느낌
- 안될 때를 대비하여 세부적으로 계획을 세우자.
- WebRTC, 소켓 통신에 대한 이해
아쉬웠던 점
- 이론 지식이 부족하여 소통에서 어려움을 겪음
- 코드에 대해 이해한다고 생각했지만 막상 자세하게 설명을 하지 못하여 제대로 된 이해 부족
느낀 점
사실 위 캠프 활동을 통해 많은 점을 배운 것 같습니다.
이전에는 데이터 분석가라는 목표를 가지고 개발을 해왔지만 백엔드에 흥미를 느껴 진로 방향을 수정한지 막 얼마 안 되었던 시점이기에 지금 돌이켜보면 많은 점들이 부족했었던 것 같습니다.
예를 들어 초기 개발 단계에서 Git에 익숙하지 않아서 제 개인 레포에 resource에 대한 개발은 다 했지만 어떻게 이를 Github flow(당시 저희 컨벤션)에 맞게 푸시를 하지 못하여 같은 팀원 분이 제 레포 클론해주셔서 Git에 올려주셨던 경험이 있습니다.
이때 너무 무지함을 느껴, 이렇게는 안 되겠다 생각했습니다. 따라서 협업에서 가장 중요한 Git에 대해 많이 공부하고 Jira 또한 처음 경험해 보아 많은 협업 툴에 대해 배운 것 같습니다.
또한 기존에는 mlops때나 데이터 분석을 할 때 Python으로만 개발을 해왔었는데 이번 캠프에서는 javascript(node.js)로 개발을 하게 되어 많은 점이 부족했던 것 같습니다.
이때 경험하고 학습한 점을 바탕으로 지금은 NestJS(typescript) 프레임워크로 개발을 하고 있어서 많은 도움이 되지 않았나 생각됩니다.