2019-07-30 멘토링
4월부터 진행 중인 한이음 프로젝트도 벌써 3번째 멘토님과의 만남을 가졌다.
이번 프로젝트는 간단하게 설명하면 아두이노와 라즈베리파이를 이용하여 공기청정기를 만드는 것인데
추가적으로 다음과 같은 기능들이 있다.
1. 안드로이드 앱을 이용하여 외부에서도 공기청정기 조작 및 실내환경 실시간 체크 가능
2. 실내환경이 좋지 않을 경우 자동으로 작동
3. 데이터베이스에 실내환경 데이터를 저장하여 비교분석
동작원리는 아두이노 센서들이 실내환경(온습도, 미세먼지 농도 등)을 측정하고 값을 라즈베리파이 서버로 전송하고
라즈베리파이 서버는 전송받은 데이터들을 처리하여 DB와 앱으로 전송한다.
현재 개발단계는 아두이노로부터 서버로 전송하고 서버에서 데이터를 처리하는 단계로
9월에 앱과 DB가 실질적으로 구현되면 서버에서는 두 장치에 데이터를 전송하는 역할까지 할 것이다.
이번 프로젝트에서 내가 맡은 부분은 소프트웨어, 그중에서 데이터베이스와 애플리케이션 개발이다.
컴퓨터공학과에 재학 중이지만 아직 데이터베이스나 앱을 깊게 다루어 본 적은 없다.
휴학 중 학원에서 데이터베이스를 잠깐 배우고 독학으로 안드로이드 스튜디오를 배우긴 했지만 수박 겉핥기였기
때문에 된 DB, 앱 모두 설계가 되지 않아 멘토님으로부터 좋은 피드백을 받았다.
우선 앱 설계에 대한 피드백은 회원등록에 대한 것이었다.
우리 팀은 공기청정기에 서로 다른 시리얼 넘버를 식별자로 사용하여 회원가입 시 보유 중인 공기청정기의 시리얼 번호를 입력하도록 하였다.
그러나 만약 한 사람이 여러 개의 공기청정기를 보유할 경우, 여러 아이디가 필요하다는 단점이 발생한다.
이에 대한 해결방안으로 로그인 후 추가적인 장치를 등록 가능하게 앱을 개발하는 것으로 결정하였다.
데이터베이스에 대한 피드백은 설계에 대한 전반적인 것들이었다.
내가 설계한 데이터베이스였다. 나는 기본키를 시리얼 번호로 사용하여 USER 릴레이션(위의 것)에 회원 가입한
사람들의 정보를 저장하고 시리얼 번호를 이름으로 가진 릴레이션을 매번 만들어 해당 시리얼 번호를 가진 장치에서
전송하는 데이터를 저장하는 방식으로 설계를 하였다.
그러나 이것은 매우 좋지 않은 방식이었다. 우선 회원등록을 할 때마다 새로운 릴레이션을 계속 만들어주어야 하는
큰 단점이 있고 데이터베이스를 효과적으로 관리할 수도 없었다.
그래서 추천받은 방식은
1. ID를 기본키로 갖는 USER 릴레이션
2. 시리얼 번호를 기본키로 갖고 ID를 외래 키로 갖는 DEVICE 릴레이션
3. 시리얼 번호를 외래키로 갖고 모든 장치로부터 전송된 데이터를 저장하는 SENSOR 릴레이션
이 세 릴레이션을 정의하여 서로 연관시키는 것이다.
이렇게 하면 앱에서 마주했던 문제인 한 사람이 여러 장치를 가졌을 경우도 해결할 수 있고
데이터를 관리하기도 매우 용이하다.
그리고 내가 멘토님께 발표한 것은 데이터베이스를 설계한 것이 아니라 릴레이션을 그려놓은 것뿐이라고 하셨다.
데이터베이스 설계는 내가 공부하고 포스팅했던 다이어그램을 통해 표현해야 한다고 하셨다.
-----------------------------------------------------------------------------------------------------------------------------------
한이음 프로젝트를 하면서 느끼는 것이 굉장히 많다. 특히 이번 멘토링은 내가 직접 설계한 앱과 DB에 대해 직접적인
피드백을 받아 매우 큰 도움이 되었다.
특히 데이터베이스 설계에 대한 부분은 난 나름 최선이라 생각하였지만 실제로는 굉장히 미흡했다는 점, 그리고
배운 다이어그램을 적절히 활용하지 못한 점 등을 반성할 수 있었다.
동시에 멘토님에 대한 존경심이 들었다. 기업 연구소의 수석으로 계시다는 얘기는 들었지만 직접 개발하는 나보다
프로젝트에 적용한 시스템에 대한 이해도가 훨씬 높으셨고 우리 프로젝트에 알맞은 방법을 제시해주셨다.
역시 IT업계에서 오래 일을 하셔서 그런지 배울 점이 굉장히 많았다. 프로젝트에 대한 얘기도 많이 해주시지만
요즘 IT기업들의 동향, 입사에 대한 팁 등도 매우 많이 알려주셔서 매우 도움이 되는 시간이었다.