캡스톤디자인 3월달을 돌이켜 보며…

두번째 졸업작품에 대한 이야기를 적어보려고 한다. 좀 자주 적으면 좋겠지만 현재 프로젝트도 3개를 동시에 진행중이라 적을 시간이 그렇게 많지가 않다. 졸업작품은 2학기까지 진행하고 지금은 아직 초입단계라 볼 수 있다.

주제 선정

제일 먼저 주제를 선정하는 것이다. 무엇을 만들지 정하는 것인데 여러 아이디어가 나왔지만 이미 대부분 국내에 서비스가 되고 있는 것들이었고 별다른게 없었다. 첫번째 졸업작품을 했을 때 제일 중요했던게 기존 서비스와의 차별화였는데 이번에도 또한 정하는데 시간이 좀 걸렸다.

image

그렇게 정한 주제는 에어소프트 서바이벌이다. 에어소프트는 BB탄 총을 의미하며 서바이벌은 BB탄 총을 이용하여 전쟁놀이를 하는 레저스포츠이다. 그래서 이 에어소프트 서바이벌 게임을할 때 팀원과의 협동을 증진시키고자 이 주제로 정하게 되었다. 이 서비스는 국내에는 존재하지 않고 해외에서는 유사서비스가 있었다. 그러나 나온지가 오래되었고 오랜기간 업데이트가 되지 않아 최신 기종 디바이스에 대한 지원이 불안정했다. 따라서 우리 조에서는 국내에 초점을 맞춰 서비스를 개발하기로 하였다.

역할 분담

조원은 총 4명으로 구성되어 있다. 2명씩 나누어서 프론트엔드/백엔드를 분리하여 개발하기로 결정했다. 지금 나를 제외한 조원들이 모두 비동일계 편입생이고 프로젝트 경험은 물론 개발 지식에 대해 전무하다. 그래서 최대한 생산성을 높이는 방향으로 리액트 네이티브 앱을 만들기로 결정하였다.

협업 환경 만들기

d

겨울방학때 인턴을 한 회사에서 사내 프로젝트에 참가하게 되면서 배운 것도 상당히 많았고 느낀점도 많았다. 그 중에 하나가 카톡 같은 메신저로 협업하지 않는 것이다. 카톡은 그냥 단순한 이야기를 할 때 사용하고 프로젝트에 관련한 내용들에 대해서는 Notion에서 관리하기로 하였다.

추후 개발이 본격적으로 시작되면 개발에 대한 내용은 Slack을 사용하게 될것 같다. 그리고 코드 관리는 Github를 사용하기로 하였다. 나도 그렇게 깃허브를 엄청 잘 다루는 편은 아니지만 자주 사용하려고 한다. 나머지 팀원들은 당연히.. 깃허브를 사용해본적이 없다. Notion도 나만 사용해봐서 이렇게 활용을 하게 된것인데.. Notion은 이제 시간이 꽤 흘렀으니 사용법을 다들 아는 것 같고, 깃허브를 이제 알려줘야겠지..?

기술 스택 선정

다운로드

어플을 개발하기로 했지만 네이티브 어플을 개발하려면 스위프트, 자바 언어를 알아야 했다. 그러나 우리한테는 그럴 시간이 없다. 생산성을 극대화 시키기 위해 자바스크립트를 사용하는 리액트 네이티브를 사용하기로 했다. 리액트 네이티브를 사용하면 IOS와 안드로이드 앱을 동시에 개발할 수 있어 생산성에 있어서 우위를 점할 수 있다. 그래서 프론트에서는 React-Native를 사용하기로 하였다.

image

백엔드도 물론 팀원들의 능력을 고려해 프로젝트를 진행도중 내가 최대한 도움을 줄 수 있는 방향으로 프레임워크를 선정하였다. 파이썬을 사용하는 Django를 사용하기로 하였다. 일단 파이썬 자체가 익히기 쉽고 라이브러리가 풍부하다. 그리고 무엇보다 내가 Django를 사용해봤다는 것이다. 겨울방학 인턴을 하면서 사내 프로젝트에서 백엔드를 Django를 사용하여 개발하고 있었다. 나도 물론 참여했으니 거의 1달 반이상은 Django를 써서 개발을 했다는 것이다. 거기서 내가 개발한 기능은 3개 정도가 되겠다.

image

그리고 WAS는 Nginx를 사용하기로 했다. 기존에 이미 tomcat과 xampp를 써보았지만 요즘 현업에서 많이 사용되고 있는 Nginx를 써보기로 하였다. 이역시도 물론 인턴 때 사내프로젝트에서 WAS로 Nginx를 사용하고 있었다. 그러나 이미 다 구축을 해놓은 상태라 딱히 내가 건드릴일은 없었다. 그래서 이번엔 직접 Nginx를 이용하여 서버구축을 해보려고 한다.

image

그리고 서버는 학교와 현재 제휴가 맺어져 있는 NHN의 ToastCloud를 사용하려고 한다.

DevOps

이번 프로젝트에서 데브옵스를 도입해보려고 한다.

image

통합 개발환경 구축에는 Docker를 사용할 예정이고, CI/CD에는 Github Action를 사용하려고 한다. 이와 같이 환경을 구성해놓으면 팀원들은 개발에만 집중할 수 있게 된다. 물론 Docker와 CI/CD도 인턴 때 처음 사용을 해보면서 상당히 좋았다는 것을 느낀다. 그래서 이번 기회에 도입을 해서 직접 환경을 구성해보려고 한다.

다른 팀에서는 이러한 환경 구축을 하고 프로젝트를 진행하는지는 알 수가 없다. 현재 비대면으로 진행되기도 해서 다른 팀들이 어떻게, 얼마나 진행되고 있는지 알 수가 없다..

코딩 컨벤션

이 프로젝트는 나 개인이 혼자서 하는 것이 아니다. 다른 사람들과 협업을 하여 진행을 하는 것이기 때문에 코드를 작성하는데 있어서 통일감이 있어야 한다. 왜냐? 다른 사람의 코드를 보고 이해를 할 수 있어야 하기 때문이다. 최대한 빠른 시간내에..

image

프론트 쪽은 아직 알아보지 못했다. 백엔드의 Django에서는 PEP8 컨벤션을 채택하기로 하였다.

3월 회고를 마치며,

아직 개발을 시작하진 않았지만 아마 빠르면 2주내로 늦으면 한달 내로 개발이 시작될 것이라 예상하고 있다. 두번째로 진행하는 졸업작품이라 좋은 결과물을 만들고 싶다. 대학교 졸업 작품인데 뭐 이렇게까지 하냐고 생각할 수도 있는데 이게 결국엔 포트폴리오다. 나의 실력을 증명할 수 있는 것이다. 계획도 없이 마구잡이 식으로 하기는 싫었다. 할거면 제대로. 똑바로 해야한다는 게 내 생각이다.