레거시 파악.
- ts인데 타입 선언이 안되있다. (ts파일에 js로 작성한 코드다.)
- DI가 두가지다 (awilix 와 typeDI)
- 의존성들이 너무 엉켜있다. 테스트때 여러가지 설치했던 의존성들이 지워져있지 않고, 몇군데는 잘못된 의존성들이 주입되어있다.
- controller에 비지니스 로직이 섞여있다. (req,res,validation만 해야한다.)
- transaction이 제대로 안걸려있다.
- 인풋 데이터 체크가 제대로 안됨.
- CICD가 없다. 직접 EC2 콘솔로 다 처리한다.
- 모든 인프라가 오토스케일링이 없다.
- pub/sub을 쓰기도 하고 직접 함수를 호출하기도 하고 중구난방이다.
현재 제일 큰 문제 2가지.
- 코드가 바뀔때마다 잔버그가 생긴다. [테스트코드 부재]
- 수동 작업이 너무 많다. [CICD 필요]
1에 대한 방안 : E2E TEST
테스트 코드를 짜야하는데 지금의 레거시에서 할수 있는 최선은? "E2E TEST"
한번에 싹 코드 새로짜면서(새로 라고 할수는 없고, 코드 복붙하면서 하나하나 수정) 유닛테스트까지 작성하고 싶다. 하지만, 코드 리펙토링만 한달동안 집중해서 할수가 없는 상황이다. 그래서 결정한건 일단 E2E 테스트부터 짜는 것이다. 나중에 대대적인 리펙토링/코드 이사를 한다고 해도 api명과 return 값은 바뀌지 않을거니깐 E2E 테스트는 해도 거의 영향이 없을 거라고 본다.
2에 대한 방안 : Github Action
지금 상황에서 CI는 테스트 코드보다 우선순위가 떨어진다고 판단된다. CD는 금방하니 배포 자동화만 구현해두기로 선택.
다른 코드적인 문제들.
나머지 코드적인 문제는 2개의 큰 문제부터 해결한 뒤 진행해야하는데, 시간이 있을까 걱정된다..