TS, Nest -> JS, Express 로 롤백
오늘은 결정을 해야 되는 날이었다. 새로운 스택에 대한 도전으로 타입스크립트와 nest 를 쓰고 있었는데, AWS 배포에서 문제가 발생했다. 서버 배포 자동화 과정에서 npm install
이 안되는 것이었다. 자꾸 권한이 없다는 에러가 떴는데, 권한설정을 바꿔도 똑같은 에러가 발생했다.
이리 보고 저리 봐도 문제의 원인이 뭔지 파악하기가 힘들었다. 우리는 잠정적으로 무거운 여러 라이브러리 (TS, nest, passport 등) 으로 인한 EC2 의 CPU 메모리 부족으로 결론지었다. (물론 이게 진짜 원인인지는 잘 모르겠다)
최소한의 근거는 AWS Cloudwatch 의 EC2 CPU 사용률 그래프가 100% 를 찍는다는 것...?
어쨌든 자꾸 배포에 문제가 생겨서 프로젝트 진행이 어려웠다. 안될 때마다 EC2 를 계속 삭제하고 다시 만들기에는 너무 비효율적이고 시간이 많이 걸렸다.
결국 우리는 JS, Express 로 프로젝트를 롤백하기로 결정했다. 일단 프로젝트를 완성하는 데 주어진 시간은 한정적이기 때문에 익숙한 스택으로 프로젝트를 완성하고, 기간이 끝나면 4명이서 모여서 추가적으로 리팩토링을 하기로 결정했다.
오늘 코드스테이츠 엔지니어님에게 간단한 중간 점검을 받았는데, 프로젝트 긱나 종료 후에 새로운 스택을 적용해보라는 조언을 얻었다. 요즘 IT 회사들 면접에서 프로젝트도 중요하지만 프로젝트를 끝낸 후에 무엇을 했는지 물어본다고 한다. 이유는? 코딩에 "진심"인지를 보기 위해서라고 한다.
롤백을 결정하면서 새로운 스택 적용의 리스크를 알게 된것 같다. 새로운 스택을 적용하면 일단 그 스택 자체를 배우는 시간이 소요되고, 기존의 것들을 새로운 스택 프레임워크에 적용하는 것을 배우는 데도 상당한 시간이 소요된다. 그리고 전혀 예상치 못한 곳에서 문제가 터져나오기도 한다.(예를 들어 배포라던지)
또한 최신 스택일수록 인터넷에 자료가 많이 없다. 이것도 최신 스택을 적용할 때의 리스크중 하나이다. 또한 공식 문서를 보고 그대로 따라해도 오류가 나서 매우 당황스러운 경험을 했는데, 이 역시 아직 오래되지 않아서 안정화되지 않은건가? 하는 의구심이 들었다. 물론 그 문서를 제대로 소화하지 못하는 우리의 문제도 있었겠지만.
어찌됐든 간에 결정 사항에 대해 팀원들과 충분히 고민하고 토의했고, 다들 프로젝트를 잘 만들고 싶은 마음이 간절했다. 어려움을 겪은 하루였지만 대신에 팀원들과의 소통이 많아져서 서로 신뢰가 조금 더 쌓인것 같은? 하루였다.