본문 바로가기

회고록/개발

개발일지 #1

 캡스톤을 한다는 게 이렇게까지 힘든 줄은 몰랐다. aws를 사용하는 것도 처음이고, 직접 데이터가 잘 나오도록 머신러닝 모델을 다루는 것도 처음이라 생각보다 시행착오가 참 많은 것 같다. 대신 그만큼 구르고 여러 이슈들을 다루는 것이 개발 실력에는 많이 향상되는 것 같다. 
 다만 지난 2달 동안 계속 주먹구구식으로만 에러를 다루었다. 그러다 보니 에러를 잡는 시기에는 머리에 개념이 확실히 박혀있었지만 시간이 조금만 지나도 바로 까먹기 일쑤였다. 그래서 개념이나 내용 정리는 확실하게 못 하더라도, 이슈 관리는 그때그때마다 빨리 기록하려고 한다. 
 
 사실 블로그를 개설한 지 8개월 만에 개발일지를 드디어 작성하는 이유가 있다. 11월 17일 14시에 캡스톤 데모 발표가 있었는데, 11월 17일 1시에 aws 서버가 아예 터져버렸다. 학습한 모델을 토대로 동물 사진을 예측하는 api를 탑재한 것이 그 원인인 듯했다. api를 한 두 번 요청할 때는 괜찮았는데, 여러 번 요청을 하니 서버가 전혀 작동을 하지 않았다. 모니터링 탭을 보니 평소 10% 내외로 겉돌던 cpu 사용량이 99.6%로 올라갔음을 확인할 수 있었다. 내 aws 인스턴스는 t2.nano를 사용하는데, keras model의 predict 함수를 수용하기란 어려웠던 것 같다. 그래서 나는 heroku로 서버를 재가동하려고 했는데, 각종 버전 이슈와 db 설정이 잘 안 맞아서 잘 되지 않았다. 고군분투하다 결국 이번 발표에 모델 예측 api는 버리기로 결정하고 다시 aws 인스턴스로 진행하기로 결정했다. 이 과정에서도 여러 버전 이슈나 헷갈리는 부분들이 있었지만 내가 예전에 정리해 놓은 내용들로 인해 다시 원상 복구할 수 있었다.


(다만...다들 안 좋게 본 것 같아서 안타까웠다..)

 

 

 


 
 위 사건들을 겪으면서 정리의 중요성을 정말 절실하게 느꼈다. 어떤 부분에서는 '아 이거 정리했으면 더 빨리 해결할 수 있었을텐데'라는 생각을 하기도 했고, 다른 부분에서는 '이렇게 정리해서 30분 걸릴 거를 5분 만에 해결했다..!' 정도로 정리할 수 있었다. 정리가 크게 중요한 지는 몰랐지만 막상 심장 쫄리는 상황이 닥치니 정리가 정말 중요하다는 생각이 들었다. 내 지식을 정리할 수 있는 계기가 되기도 하며, 똑같은 상황에 대한 급똥을 닦아줄 수 있으며, 추후 내 공부 기록을 증빙할 수 있는 자료가 되기 때문이다. 아무튼 서버가 터진 내 실수를 겨우 수습하고 나니, 앞으로 이런 식으로 정리해야겠단 생각이 저절로 들었다.
 

(과거의 나....사랑한다..!)

 
 

 


 오늘부터는 사소한 이슈여도 일단 노션에 기록해두고, 정확한 해결책을 찾으면 블로그에 기재해야겠다. 일단 남은 3주 간 내가 해야 할 일을 정리해 봐야겠다.
 
 
 
 
 

백엔드

  • 데이터베이스 sqlite에서 mysql로 이전
  • url 컨벤션 변경
    • 복수형은 단수형으로
    • 같은 url에서도 get과 post, delete 관련 정책 적극 활용
    • 의미 전달 확실하게 변경
  • 반려 동물 주인 목소리 담을 수 있는 DB와 API 구현

 
 
 
 

인프라

  • 서버에 keras 모델 사용할 수 있도록 설정 변경(아마 GPU 사용 관련 설정 다뤄야 할 듯)
  • heroku로 이전(희망사항)

 
 

AI

  • Object detection 적용; 현재로써는 yolo 생각 중
  • 정확도가 많이 낮다면 Resnet, VGG 모델로 변경
  • 그래도 많이 낮다면 Supervised contrastive learning도 고려(연구 결과가 적어서 잘 해낼 수 있을 지는 의문)

 
 
 

기타

  • API 명세표 정리
  • Flowchart 정리
  • README 정리
  • DB 스키마 정리