캡스톤을 한다는 게 이렇게까지 힘든 줄은 몰랐다. 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 스키마 정리
'회고록 > 개발' 카테고리의 다른 글
1. 간단한 레이아웃, 그리고 네이버와 카카오 지도 API의 한계 (1) | 2025.02.02 |
---|---|
0. 토이 프로젝트 구상 (2) | 2025.01.26 |
2025년 상반기 계획 (상시 수정 예정) (0) | 2025.01.18 |