CI 를 위한 테스트 성공시키는 이야기

Sorbet·2021년 12월 20일
2

테스트가 이상하다

  • 분명히 로컬에서 테스트하면 잘 돌았는데.. 왜 서버에서 테스트를 돌리면 모든 테스트가 실패한다. 이상하다 이상하다~~

이상하다 왜 안될까 왜 안될까..

  • 쿼리DSL 컴파일 에러랑 섞여가지고 헛스윙 날려보기도 하고, 나름의 생각으로 가능성있는 부분들을 하나씩 시도해봤다
  • 결국 하루를 모두 갈아넣어서 찾았는데, 원인은 auth관련 properties 파일속 비밀키 정보때문에 gitignore에 등록해놓고 repo에 올리지 않았는데, Github-Action 입장에서는 이 auth관련 properties 파일 정보가 없어서 Spring Context 를 로드하지 못한것..!

문제는 해결하고 이제는 개선이다

  • Github-Action에서 이제 테스트는 잘 돌아가는데, 이렇게 된 이유를 되짚어봤다
  • 일단 프로퍼티 파일이 너무 난잡/복잡 하다. 개발 단계별 프로퍼티만 해도 test/local/staging 3단계에, 인증정보를 담고있는 oauth에, 무중단배포를 위한 real1,2 에.. 이 모든걸 switching 하기 위해 존재하는 <>. 파일까지
  • 이제는 프로퍼티 파일에 중복이 생기는걸 감수하고서라도 파일 갯수를 줄여서 심플하게 설정파일을 관리하는거에 초점을 맞춰야겠다
  • 또, Jasypt와 Shell ENV 를 활용해서 gitignore에 의존적인 시크릿 키를 관리하지 않는 방향으로 가야겠다.

난개발의 대가는 가혹했다

  • 막무가내로 기능 추가하는게 비용이 30 정도 든다면, 나중에 불필요한 기능과 코드를 도려내는데에는 100정도의 비용이 든다
  • 개인플젝 혼자 개발하는데 비용이 무슨소린가 싶겠지만, 시간과 에너지도 결국 비용으로 환산된다
  • 플젝에 코드가 덕지덕지 붙어서 덩치가 커지면서 테스트코드의 중요성도 같이 커지는데, 테스트가 있어서 CI 도 가능해지고, 리팩토링도 가능하고, 레거시 걷어내는것도 가능할꺼같다.

앞으로 탕감해야할 기술부채

  • 총 70개 정도 테스트코드가 있는데, 이중에서 20개가 @Ignored 처리 되어있다. 이걸 다 의미있는 테스트로 만들어야하고
  • build.gradle 파일의 90%는 인텔리제이 선생님께서 노란줄을 그어놓으셨다. 워닝을 없애야하고
  • 이슈가 대충 40개쯤 있는데 하나씩 해결해야하고 뭐 그렇습니다..

선생님 그거 다 빚이에요

  • 단기성과와는 상관없이, 챌린지나 대회 하는걸로 정해진 마감기한 안에 기능개발을 최대한 빨리 집어넣는건 마치 영끌해서 집사고, 전세놓은다음 또 집을 사는 갭투자 같은거다.
  • 돈빌려준 사람이 받을돈을 까먹지 않고 수금하러 오는거처럼 기술부채도 언젠간 상환해야 한다.

아 초록점 찍는거 너무 힘들었다.. ㅠㅠ

이제 다음글에서는 CD 를 위한 자동배포를 포스팅 해보겠습니다!

profile
Sorbet is good...!

0개의 댓글