우선 이전 4화의 링크는
https://oflofty.tistory.com/66
원격의료상담 툴 개발일기 4화
oflofty.tistory.com
오늘 마지막 대회인 ICT COC 피우다 프로젝트 발표를 와서 개발일기를 다시 쓰고 있다. 거의 한달정도 개발일기를 쓰지 않았는데 어찌보면 바빠서 개발일기 쓰는 게 소홀했던 것 같다.
그 기간동안 개발을 마무리하고 참가한 대회들을 착실하게 준비하고 발표와 데모까지 모두 마무리를 지었다. 결과적으로 2021 국방과학기술을 활용한 창업경진대회 - 금상을 받았고 대학원생도 참여할 수 있는 대회였는데 학부생 2명이서 금상을 받았다는 포인트에서 만족스럽다.
ICT COC 피우다 프로젝트 발표 - 본선 진출, 근데 기업단위도 출전이 가능해서 상을 받기 힘들것이라고 생각했고 그대로 결과가 나왔다. 다만 그렇다고 하더라도 투자를 유치하려는 기업들 사이에서 학생 2인팀으로 본선에 진출해서 분전을 했다는 것에 나름대로의 의미가 있었다고 생각한다. 이렇게 전역하자마자 창업에 뛰어들면서 좋은 경험들을 많이 했고 간만에 심장이 뛴다는 느낌이 들었다. 창업을 하는 사람들이 예전엔 이해가 안됐는데 이제는 내 시야가 훨씬 넓어졌다는 생각이 든다.
그리고 개발외적으로 참 많은 일들이 있었는데 이건 나중에 개발일기가 아니라 다른 일기에서 풀어야겠다. 안그래도 이번 개발일기에서는 개발 외적인 이야기를 참 많이 했는데 더 하면 너무 주객전도되는 느낌이라서 여기에 쓰기는 힘들 것 같아서 나중에 따로 써볼려고 한다. 불규칙적으로 일기를 쓰기도 하고 의식의 흐름대로 쓰지만 꾸준히 쓰고 내가 나름대로 개발자로 느꼈던 점에 대해서 이야기를 정리해서 글로 쓸 예정이다.
그러면 이제는 개발이야기를 좀 해봐야지?
비록 발표준비 때문에 기간에 비해서 별로 구현한 게 많지는 않다.
추가한 기능들을 우선 하나씩 살펴보자.
미션체크 표시 :
칸을 하나 더 만들고 DB에서 미션을 완주했는지 여부를 boolean으로 매겼다. 그 후 미션을 완수했다면 DB에 있는 success를 True로 바꾸었고, 그 정보를 가져와서 화면에 체크표시를 하게끔 했다.
의사-환자 관리페이지 : 의사가 미션을 남긴 기록이 있는 환자를 자신이 관리하는 환자로 취급하는 매커니즘을 채택했다. 그래서 의사는 자신이 관리하는 환자의 이번달의 미션수행도 등을 확인해서 잘 하고 있는지 확인할 수 있도록 했다.
그리고 환자 개별 관리페이지에 접근할 때 인덱스 불러올 때 /:idx를 쓰는 대신 /:id를 사용해서 구분했다. 그런데 사실 엄밀하게 말하자면 환자의 id로 url을 쓰고 있는게 좋다고는 생각하지 않는다. 그렇기에 시간이 있었더라면 해시맵을 거친다던가 암호화를 해서 넘겨주는 방식으로 바꾸는 것이 훨씬 더 좋을것이라는 생각이 든다. MVP가 완성이 된다면 가장 먼저 개선해야 할 것 같다. ID가 그렇게 중요하지 않다면 모르겠지만, 지금 쿼리 중에서 상당 부분을 user id를 통해서 조회를 하고 있으므로 SQL Injection 등의 공격에 취약할 수 있기에 이에 대한 보호가 필요하다.
환자 개별 페이지는 사실 상담내역을 개발했을 때와 비슷하게 게시판 형태로 만들었다. DB에 select, insert, update를 이용해서 미션을 의사가 환자에게 편하게 설정해줄 수 있도록 만들었다.
의사가 보는 환자페이지
chart.js 데이터 추가를 했다. 의료데이터를 넣으려고 했는데 사실 의료 데이터를 데모에서 사용해도 되는지에 대해서 허락을 아직 받지 못한 상태이다. 실제로 의료 데이터가 보안에 상당히 민감하기 때문에 받아오는 것도 쉽지 않기에 성환이형한테 혹시 세브란스에서 의료 데이터 샘플이라도 받아올 수 있냐고 문의를 한 상태이다. 그래서 해당 데이터를 사용할 수 있게 된다면 환자가 자신의 신체적인 변화를 한눈에 알기 쉽게 확인할 수 있을 것이기에 중요한 기능이라는 생각이 들었다.
그리고 지금은 환자가 직접 데이터를 입력하는 방식으로 구현을 하긴 했지만 추후에 만약 실서비스로 전환이 된다면 병원과 연계하여 환자가 실제 검사를 받을 때 해당 데이터가 의료 DB와 연동되어 자동으로 업데이트가 된다면 더욱 좋을 것 같다.
웹 페이지 문서도 기존의 영어에서 전부 한글로 변경했다. 내가 잘 모르는 수도 있긴 한데 구글에서 지원하는 한글 폰트가 너무 적어서 디자인에 애먹었던 기억이 난다.
그리고 가장 중요한 것 중 하나가 남아있다. 바로 개발한 서비스를 호스팅해서 일반 유저들이 접근할 수 있도록 URL을 바인딩하는 과정이 필요하다.
이때까지 토이 프로젝트를 몇번 하긴 했지만 실제로 다른 유저들에게 공개를 염두해야 하기에 이 점이 이번 프로젝트를 하면서 가장 어려웠다. 시작부터 난관이었는데 우선 원래는 HIPAA 보안규정을 지키는 AWS S3를 이용해서 호스팅을 하려고 했는데 대회지원금이 세금계산서를 발급을 받아야 했다. 근데 AWS에 연락을 한 결과 AWS는 원칙적으로 세금계산서를 발급하지 않는다고 해서 마찬가지로 사용할 수 없었다. 그래서 원래는 AWS 결제 대행으로 이용할려고 했던 가비아에서 node.js 호스팅을 지원하기에 호스팅을 하기로 했다.
그렇지만 호스팅을 한 이후에 직접 바인딩한 URL로 들어가니 내가 생각한 것과는 다르게 작동했다. 우선 mysql을 local하게 사용했는데 서버에서 돌리기에는 적합하지 않아서 DB를 한번 갈아엎었다. heidisql로 바꾸고 나서 medilogue.net에 회원데이터와 의료데이터들을 관리하게끔 연동을 시켰다. 그리고 FileZilla를 이용해서 medilogue.net을 개발한 것들을 올려두고 putty를 통해서 실행했다. 처음에는 터미널로 ssh medilogue@medilogue.net을 통해서 했는데 왜인지는 모르겠는데 되다가 끊기더라... 그래서 putty를 사용했다.
그렇게 medilogue.net에 들어가자 드디어 우리가 개발한 화면이 뜨는 걸 확인하고 어느정도 프로젝트를 마무리를 지었다고 생각할 참에 연락하고 있던 과동기에게 사용자 테스트를 시켜봤다. 근데 문제가 생겼다. 로그인을 할 수 없다는 거다. 로그인을 시도하면 서버가 죽어버린다는 거다. 근데 또 항상 실패하는 건 아니라서 로그인이 될 때도 있어서 왜 안되는지 모르는 상태에 빠졌다. 나중에 알고보니까 db를 connect하는 게 여러개가 있어서 그게 꼬여서 생겼던 문제였다.
그 외에도 일정 시간동안 쿼리를 서버에 보내지 않으면 DB연결이 끊겨버리는 문제도 있었다. 처음에는 Enable TCP keepalives 옵션에 체크하고 keepalives - 5seconds로 설정하면 해결이 된다고 해서 그렇게 해봤다. 근데 그래도 연결이 끊기는 걸 확인하고 다른 방식으로 해결해야겠다... 싶었다. 그래서 결국은 windows에서 지원하는 Open ssh 서버를 이용해서 연결이 끊기는 문제를 해결했다.
원격의료상담 툴 개발일기 4화 (0) | 2021.11.11 |
---|---|
원격의료상담 툴 개발일기 3화 (0) | 2021.10.27 |
원격의료상담 툴 개발일기 2화 (0) | 2021.10.15 |
원격의료상담 툴 개발일기 1화 (0) | 2021.10.05 |