곧 프로젝트의 중간 발표회가 있다.
맡은 부분이 많지는 않고, 고민할 요소도 생각보다 적었어서 기여도가 낮은 기분이 든다..
그리고 막상 보니 뭔가 겉으로는 보여지는게 많이 없어서 발표할 내용이 많지 않을까 싶다.
우선 된 것들을 나열해보자면
- docker를 활용하여 로컬 개발 환경 구축(docker-compose)
- 유저 CRUD (사실 없어도됨)
- 실시간 홈 PT를 위한 webRTC 구현 (여러명이 화상채팅이 가능한 정도)
- openAI를 활용한 이미지(식단) 확인 후 칼로리 분석
- PT 일정 관리 CRUD
- EFK 스택으로 로그 모니터링 및 시각화
- 리액트를 활용하여 기본적인 메인 페이지 구현
이정도 되는데 이래저래 써놓긴 했지만 아직 미완성 단계이긴 하다.
본인은 docker, 유저 crud, 일정관리 crud, efk스택
을 했다.
crud는 사실 많이 해봤으니 금방 넘어가졌는데, docker 환경 구축과 efk스택에서 시간이 좀 걸렸다.
docker같은 경우는 모두가 동일한 개발 환경을 갖기 위한 취지로 시작했는데,
초반에 이미지를 빌드하고 컨테이너로 실행시켰을 때, 뭔가 문제가 있어 코드를 살짝만 수정해도 다시 컨테이너를 종료하고 실행하는 작업을 수동으로 했어야 했다.
그래서 이 작업을 코드를 수정하면 자동으로 재실행 시켜주도록 하는 Hot-Reload를 세팅하는데 오래걸렸다.
또한, 이미지의 크기를 최대한 경량화하기위해 버전을 alpine로 시도하다가 일부 모듈이 호환이 되지 않아 일반적인 프로덕션 버전으로 사용하게 되어 크기가 커졌고,
추가적으로 elasticsearch와 fluentd, kibana를 도입하고, mysql, redis.. 등등을 한번에 빌드하게 된다면
메모리 부족으로 종료되는 경우가 빈번하게 발생할 수 있기 때문에 이에 대한 고민을 해야했다.
(물론 지금은 아니지만..)
대충 생각하는건 카테고리를 나눠서 따로따로 돌리려고 생각은 하고있다.
EFK 스택같은 경우는 처음이라 기반을 구축하는데 시간이 좀 걸렸고, 로그를 남겨서 시각화하는 방법을 몰라 해매기도 하였다.
애초에 로그도 typeorm의 기본으로 셋팅된 db쿼리문만 로그로 남아서 골치아팠는데,
logger를 사용해서 우리가 필요한 로그가 저장되도록 세팅해주었다.
예를들면 어떤 api에 요청이 제일 많이 들어오는지나, 어떠한 유저가 비정상적으로 반복되는 요청을 보낸다던지? 이런거를 알아야 한다 생각해서 이를 알 수 있도록 구현해두었다.
거의 트러블 슈팅 기록이 된 것 같은데 전부 다 기록하지도 못했지만 이렇게 남겨두면 좋을 듯 싶다.