15년 동안 나와 내 동료들은 SIGSoftware Improvement Group에서 고객들을 위해 코드, 아키텍처, 그리고 개발 관행의 품질을 평가하는 업무를 해왔다.
최근, 우리는 자체 평가 데이터로 2016년과 2017년을 비교하며 소프트웨어 개발의 트렌드를 찾고 이를 수치화 했다.
트렌드1: 배포를 자동화하지 않는 팀의 비율은 2016년 26%에서 2017년 11%로 줄어들었다.
우리는 팀들이 실질적으로 배포 자동화를 적용했는지 측정했다. 빠르고 반복 가능하며, 되도록이면 완전히 자동화된 배포 프로세스가 있는지 확인했다.
예를 들어, 어느 팀이 하나의 버튼만으로도 새로운 릴리즈를 배포할 수 있다면 이 부분에서 만점을 받고, 배포 자동화를 완전히 적용했다고 판단했다.
반면 체계적인 매뉴얼화 된 몇가지 단계들을 밟아가야 한다면 '배포 자동화 부분 적용'의 점수를 받게 된다.
[그림1] 배포 자동화를 완전히 적용한 팀의 비율이 증가하고,(2016년 30% → 2017년 43%로 상승) 배포 자동화를 적용하지 않는 팀의 비율은 감소했다. (2016년 26% → 2017년 11%로 감소). Image by Joost Visser.
트렌드 2: 지속적 통합(Continuous Integration)을 하는 팀은 하지 않는 팀보다 많아졌다.( 2016년: 33% vs 39%, 2017년 : 41% vs 32%)
지속적 통합(모든 변경사항마다 자동 컴파일과 테스팅을 하는 것)을 적용하는 팀은 배포 자동화 동향보다는 덜하지만 비슷한 증가 추세를 보인다.
[그림2] 완전히 혹은 부분적으로 지속적 통합을 적용하는 팀의 비율은 상당히 증가했지만(2017년 68%), 아직 배포 자동화 적용비율에는 미치지 못한다..(2017년 89%) Image by Joost Visser.
트렌드 3: 지속적인 배포(Continuous Deployment)를 적용하는 팀은 적지만 조금씩 증가하고 있다.(2016년 11% → 2017년 16%)
특히 지속적인 배포(모든 변경사항마다 배포 자동화를 하는 것)를 적용하는 것에 대해서 대다수의 팀들과 조직들은 아직 가야할 길이 멀다. 그래도 지속적인 배포를 적용하는 팀은 점점 늘고 있다.
[그림3] 대부분의 팀은 여전히 지속적인 배포를 적용하지 않고 있다. (완전 적용 : 2016년 11% → 2017년 16%로 증가), 부분 적용: 2016년 6% → 2017년 12%로 증가)를 적용하지 않고 있다. Image by Joost Visser.
트렌드 4: 더 많은 팀들이 코드 품질 관리를 시행하고 있다. (2016년 23% → 2017년 31%로 상승)
코드 품질 평가를 하기 위해서 우리는 각 팀이 명확한 코딩 표준이 있는지, 체계적으로 코드 리뷰를 하는지, 그리고 자동화된 코드 검사를 하는지 확인했다. 코드품질관리를 완전히 적용하는 경우는 2016년 23%에서 2017년 31%로 다소 증가했지만, 20% 가량의 팀은 아직도 적절한 코드품질관리를 하지 않고 코드를 작성하고 있었다.
[그림4] 일관된 코드품질관리를 하지 않는 팀이 적어졌다.(2016년 25% → 2017년 20%) Image by Joost Visser.
트렌드 5: 적절한 회귀테스트를 하지 않고 코드를 변경하는 팀은 줄었지만 아직도 2017년 41%나 되는 팀이 남아있다.(2016년 48%)
테스팅 작업을 평가하기 위해서 우리는 각 팀에게 모든 변동사항마다 실행하는 자동회귀테스트 과정이 있는지 확인했다. 이러한 테스팅을 완전히 적용한 팀의 비율은 29%에서 33%로 증가했다. 하지만 아직도 적절한 회귀 테스트 없이 코드를 변경하는 경우가 많다.
[그림5] 모든 커밋에 대해 테스트자동화를 사용하지 않는 팀이 비율은 감소했다.(2016년 48% → 2017년 41%로 감소) Image by Joost Visser.
위의 수치들이 보여주는 것은 소프트웨어 개발 프로세스에서 End-to-end 자동화는 트렌드가 되고 있다. 프로그래밍 작업(컴파일, 테스팅, 문서화 등)의 자동화는 우리 분야의 일부가 되었다. 그리고 기존의 소프트웨어 개발 팀들이 소프트웨어 개발 프로세스를 자동화하기 위해 노력함을 알 수 있다.
자동화는 개발 속도를 빠르게 하고 지식 소실(knowledge dissipation)을 제한하며 모든 단계에서 품질을 향상시키는 데 도움이 된다. 당신의 팀이 아직 자동화를 하지 않았다면, 지금부터 시작하라.
*****
원문 : 5 automation trends in software development, quantified
번역 : 임지윤
이전 글 : 사회조사분석사 필기 정기기사 1회를 대비한 족집게 강의 후기
다음 글 : 영어 공부하기 좋은 미드 추천 BEST 5
최신 콘텐츠