자동화

잡동사니

자동화(automation)는 소프트웨어를 개발하는 과정에서 반복되는 부분을 자동으로 처리하도록 하는 행위다.

목차

필요성

여러 과정으로 이뤄진 작업을 반복할 경우 개발자가 직접 각 과정을 진행을 하게 되면 과정 일부를 빠뜨리거나 정해진 순서를 어기거나 옵션을 잘못 준 채 진행할 수 있다. 예를 들어 빌드의 경우 이전 결과물을 초기화 하지 않거나 필요한 라이브러리를 빠뜨리느는 등 실수를 할 수 있다. 이러한 문제를 해결하기 위해서 작업의 진행 시나리오를 수립하고 일괄 작업(batch)으로 만든 다음 자동으로 실행한다.

이클립스와 같은 IDE에서 이용자가 작성한 소스 파일을 버튼 하나로(때로는 변경을 자동으로 탐지하여 자동으로) 빌드를 수행할 수 있다. 그러나 이 경우는 개발자가 IDE를 기동하고 빌드 명령을 수동으로 호출하여야 한다. 즉 이 과정은 한 번에 빌드를 만들어 낼 수 없으며, 자동화의 효율을 높이기 위해 자동화된 작업을 처리한 서버를 준비하더라도 백그라운드에서 실행시킬 수 없으며, 특정 IDE에 대한 의존성이 생기게 된다. 따라서 이 작업은 자동화 된 것이 아니다.

대상

자동화의 대상은 궁극적으로 반복되는 모든 작업이다. 개발은 서로 연계된 여러 단계로 이뤄지기 때문에 작업의 일부만 자동화하면 모든 작업을 자동화할 때 부다 효율이 떨어지게 된다.

예를 들어 배포 작업을 자동화 하여 최종 결과물만 준비가 되면 이용자에게 자동으로 배포가 된다고 하자. 그러나 아직 빌드 과정이 자동화 되어 있지 않다면 개발자가 직접 빌드를 수행한 다음 결과물을 배포 형태로 만든 다음 배포 서버에 업로드 하여야 한다.

빌드

시험

배포

문서화

도구

  1. Ant
  2. CruiseControl
개인 도구