Post

[지박령s] 개발 기획

보통 이런 개발일지는 개발을 진행하면서 그 때의 상황을 남기던데..
나는 남겨야지 하는 생각만 남고 개발하거나 뒹굴거리다가 벌써 프로젝트가 마무리 되는 시기가 되었다.
과거의 기억을 되살려 개발 일지를 작성해보기로 한다.


2021년 1학기 정보통신캡스톤디자인 과목으로 진행한 프로젝트다.
프로젝트 인원은 총 2명으로, 친구와 약간 놀러온 기분으로 프로젝트를 참여한 내가 구성인원이다.

주제 정하기

주제의 경우 프로젝트의 주체가 되는 친구가 원하는 주제로 하고싶었고, 친구가 생각해온 주제 중 하나를 상의해서 결정하였다.

  • 블루투스 통신을 이용한 모션인식
  • 온도센서를 이용해 냉장고 내부의 온도를 측정하고, 정해진 범위에서 벗어나면 알림 전송(푸시/핸드폰/카톡/문자 등)

의논을 통해 2번째 주제로 결정하였다.

사용할 기술 결정하기

주제를 정한 이후에 정확히 어떤 기술을 사용하면 좋을지 의논하기 시작했다.

하드웨어 : 라즈베리파이 vs 아두이노

라즈베리파이를 이용할 경우 라즈베리파이를 API서버로 활용하여 카카오톡으로 알림톡을 보내는 시스템도 적용하면 좋을 것 같다고 생각했다.
개인적으로는 아두이노 프로젝트는 여러번 진행해봤고, 이번에는 라즈베리파이 프로젝트를 진행해보고 싶었다. 또한 아두이노보다는 라즈베리파이 경험이 더 취업 시 도움이 되는 포트폴리오가 될 것 같아 친구에게도 좋을 것 같다고 판단했다. 물론 라즈베리파이를 사용하면 프로젝트에 비해 오버스펙이 될 듯 하긴 하지만, 라즈베리파이 자체를 서버로 활용하면 스펙에 대한 정당성을 어느정도 입증할 수 있을 것이라 판단했다.
주변 지인에게 물어보고 친구와 의논한 결과 새로운 도전으로 라즈베리파이를 사용하는 것으로 하고, 혹시 모르니 교수님께 의견을 여쭙기로 했다.
교수님께서도 역시 새로 기술을 접해보고 싶은 것이라면 라즈베리파이가 나을 것이라고 말씀하셔서, 라즈베리파이로 결정!
또한 다음 글에 나오겠지만, 프로젝트 주제를 알림 + 재고관리 시스템으로 확장하게 되어 어플리케이션도 함께 개발하게 되었고, 알림 방식은 어플리케이션 푸시알림으로 결정되었다.

어플리케이션 : 안드로이드 웹앱 vs 크로스 플랫폼

네이티브 어플리케이션을 개발한다면 확실히 빠르고 간편하겠지만, 안드로이드 스튜디오는 18년도 초에 만졌던 것이 마지막으로 간단한 소켓통신도 실패하고 퍼블리싱 하는것에도 고생고생해가며 만들었던 기억이 있다. 그에 반해 웹앱 구조를 사용한다면 바로 직전에 다루었던 Vue.js를 이용해 프론트를 빠르게 구현하여 생산성이 획기적으로 늘어난다는 장점이 있었다.
결국 한학기라는 짧은 시간 안에 완성해야 하는 프로젝트라 가장 중요시 하는 것이 바로 생산성이었고, 웹앱 혹은 크로스 플랫폼 중에 무엇을 택해야 할지 고민하다가 결국 안드로이드 스튜디오에 웹앱을 적용하기로 결정해 제안서를 작성했다.
그런데 개발을 시작하기 이전 친구가 그럴바에는 그냥 Vue.js로 전체 페이지를 작성하고, 이것을 코르도바로 앱 형태로 변환하라는 이야기를 해주었다.
같은 코드를 작성해도 웹페이지/안드로이드/ios 모두 가능하게 되는 것이니 확실히 생산성 면에서는 비교도 되지 않을 정도다.
여기 저기 찾아보며 고민해보다 토이프로젝트여서 확실히 스케일이 작고, 크게 퍼포먼스가 중요하지 않다고 판단하여 cordova를 이용해 개발하기로 한다.

서버 : flask vs Django

우선 서버 언어는 거의 고민 하지 않고 결정할 수 있었다. 프론트의 기술을 결정하고 나니 프론트 개발을 내가 맡는 것으로 거의 확정이 났기 때문이다. 그렇다면 서버는 친구가 다뤄본 언어를 사용하는 것이 관건이었는데, 친구는 javascript를 다뤄본 경험이 없기 때문에 무조건 python을 이용해서 개발해야 하는 상황이었다.
처음에는 이전 프로젝트에서 사용했던 Django를 선택해 제안서를 작성했는데, 이것 역시 친구가 Django는 기본 기능이 많은 대신 제약도 많기 때문에 단순히 API서버로만 이용할 것이라면 flask를 추천한다고 해줬다. 이 이야기를 듣고 다시 서치해보니 정말 똑같은 이야기가 줄줄이 써있었다.. 왜 내가 이전에 검색했을때는 Django의 좋은얘기만 써져있었을까..?
여튼 이런 연유로 백엔드는 flask로 개발하기로 결정!

DB

DB는 많이 사용하는 MySQL을 사용하기로 했다. mongoDB등의 noSQL은 이 프로젝트에 적합하지 않다.

역할 분배하기

역할은 단순하게 HW+백엔드 : 친구, 프론트엔드 : 나로 결정되었다.
다시 보니 굉장히 불공평한 역할분배인데, 내가 프론트엔드를 최대한 빨리 완성하고 백엔드로 넘어가 기능별로 나눠서 백엔드를 개발하기로 했다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.