본문 바로가기

project/홍보 사이트

프로젝트 개선하기

이런저런 기술을 배우고 습득해서 연습을 하고 싶지만 새로운 프로젝트를 기획하는 것보다는 기존의 프로젝트에 개선점을 적용하면서 발전시키는 것이 좋겠다는 생각에 프로젝트에 부족한 부분을 개선하고 기능을 추가하려고 한다.

 

개선 1 : In memory h2 database 테스트 단계 적용하여 빌드 단계에 테스트 실행

기존의 프로젝트는 CI/CD 과정에서 테스트가 무시되어서 실행이 되어왔다. 이렇게 진행한 이유는 프로젝트를 진행할 때는 테스트 코드 작성을 하지 않았고 기능 구현에 집중했기 때문이다. 또한 외부 시스템(DB)과 연계된 테스트를 어떻게 작성해야 하는지에 대한 방법을 전혀 몰랐기 때문에 작성된 테스트를 빌드 단계에서 검증이 되는지 확신할 수 없었기 때문이다. 

이러한 이유로 기존에는 배포 전에 개발 환경에서 테스트를 실행하고 배포를 진행했다.

 

개선 2 : 복잡한 배포 절차 단순화하기 (도커 컴포즈 적용)

기존에는 docker cli와 shell script를 이용해서 배포 파이프라인을 구축하였다. 또한 배포 전에 도커라이징된 애플리케이션이 잘 동작하는지 테스트하기 위해서 환경을 구성하는 것 역시 동일한 방법을 사용하였다. 이러한 방법으로 애플리케이션을 구축하니 느낀 단점은 구축까지 고려해야 할 사항을 할 때마다 고려해야 하고 잘못된 요소를 파악하기가 너무 힘들고 시간 역시 많이 소요되었다.

 

도커라이징 환경을 손쉽게 구성하고 필요한 환경을 문서화시킬 수 있는 대안으로 도커컴포즈를 적용하였다. 그리고 로컬 환경에서도 컴포즈 명령으로 한 번에 빌드부터 배포까지 실행할 수 있도록 도커 파일에 빌드 컨테이너를 적용하여 빌드 과정 역시 자동화를 적용하여 손쉽게 애플리케이션을 구동할 수 있도록 개선하였다.

 

개선 3 : API 명세서 작성

컨트롤러 코드를 보고 API 요청 로직을 작성하는 것은 힘들었다. 협업을 위해서는 API 명세서가 필요하다는 생각을 가지고 API 명세서를 작성을 해보자 결정하여 적용을 해보았다. API 명세서를 작성하여 사용자가 쉽게 서비스를 이용할 수 있도록 개선하였다. Spring Rest docs를 이용해서 문서를 자동 생성하는 기능을 구현하였다.

 

개선 4: 단위 테스트 작성 및 리펙토링

테스트에 대해서는 부족했기 때문에 테스트 도구들과 테스트 기법(TDD)를 공부하고 리팩토링을 도전했다.

유연한 코드를 작성하는데 도움이 되고 코드 변경 시 사이드이펙트를 가시적으로 확인하고 빠르게 수정할 수 있었다. 이전에 개발할 때는 이런저런 추가적인 기능을 적용할 때, 사이드이펙트를 확인하기 힘들어서 테스트 과정이 너무 길었다는 것을 이번에 리팩토링을 진행하면서 느낄 수 있었다.

 

 

 

'project > 홍보 사이트' 카테고리의 다른 글

HTTPS 적용하기  (0) 2023.02.13
[Docker file] RUN CMD ENTRYPOINT 실행 방식  (0) 2023.02.13
CI/CD 환경구축시에 도움 받은 자료 정리  (0) 2023.02.01
Kong API gateway 사용기  (0) 2023.01.17