Search

※ 아래 글은 정보통신기술진흥센터(IITP)가 발간하는 주간기술동향 1816호(2017. 9. 29. 발행)에 기고한 원고입니다.


▶ IITP에서 PDF 포맷으로 퍼블리싱한 파일을 첨부합니다. 가독성이 좋으니 참고하시기 바랍니다.

SW 개발 생산성이 기업 경쟁력 - 지속적 통합 도구 젠킨스 인기.pdf



ž 소프트웨어 개발 시 CI(지속적인 통합)를 제공하는 OSS(오픈소스 소프트웨어) 젠킨스(Jenkins)의 인기가 치솟고 있음


Ø 소프트웨어 공학에서 지속적 통합(continuous integration, CI)은 지속적으로 품질 관리를 적용하는 프로세스를 실행하는 것으로 소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데 초점을 맞추고 있음


Ø 일반적으로 개발자들이 기존 코드의 수정 작업을 시작할 때 현재 코드 베이스의 복사본을 받아서 작업을 하게 되는데, 만일 다른 개발자들이 자신들이 변경한 코드를 소스 코드 저장소에 제출하면, 코드 베이스로부터 받아온 복사본은 저장소의 코드와 점차 달라지게 됨


Ø 이런 상황이 반복되면 어느 시점에는 저장소가 개발자들의 베이스 라인과는 너무 많이 달라지게 되는 소위 통합의 지옥이라 불리는 상황에 빠지게 됨


Ø 통합의 지옥에 빠지게 되면 작업하는 시간보다 작업 내용을 통합하는데 걸리는 시간이 더 걸리게 되어, 최악의 경우 개발자들이 자신들의 변경 내용들을 취소하고 작업들을 완전히 처음부터 다시 하는 것이 나을 수도 있는 상황이 되어 버림


Ø 2011클라우드비즈(CloudBees)가 발표한 젠킨스(Jenkins)는 소프트웨어 개발 시 통합의 지옥 문제를 해결하기 위한 지속적 통합(CI) 서비스를 제공하는 도구의 하나로, 소스 코드의 컴파일과 빌드, 테스트 및 품질 검사, 서버에 배포 등을 자동화 해 줌


<자료> Jenkins


[그림 1] 지속적 통합 도구 젠킨스의 마스코트


Ø 젠킨스는 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 저장소에 빈번히 업로드 함으로써 지속적 통합이 가능하도록 해 주는데, MIT 라이선스를 따르는 오픈소스 소프트웨어임


Ø 젠킨스는 개발자들에게 지루한 작업을 대신 해주는 집사라는 이미지로 자리매김하고 있기 때문에, 마스코트 캐릭터는 영화에 나오는 집사처럼 나비 넥타이를 하고 있음


Ø 2011년 발표 이래 젠킨스는 꾸준히 개선되며 개발자들의 호응을 얻었고, 클라우드비즈가 지난 8월말에 개최한 젠킨스 월드 2017 컨퍼런스에는 800 명의 개발자가 참여하는 등 젠킨스의 인기가 심상치 않음을 보여 주었음


ž 클라우드비즈는 젠킨스의 인기에 대해 현재 메인 스트림 서비스 기업들이 소프트웨어 개발로 진검승부 하는 가운데 그 생산성 향상이 곧 사업의 관건이 됐기 때문으로 분석


Ø 글로벌 대형 서비스 기업들이 젠킨스를 대규모로 도입, 소프트웨어 개발의 자동화에 전사적으로 임하게 된 것은 서비스 경쟁력이 지속적 통합에 달려 있다고 보았기 때문이라는 것


Ø 젠킨스를 통해 소프트웨어 개발 자동화를 전사적으로 추진할 수 있게 된 것은 작년에 선보인 젠킨스 2.0에서 파이프 라인이라는 구조를 탑재했기 때문인데, 이는 젠킨스에 실행시키는 작업과 순서를 코드(프로그래밍)에 의해 기술하는 것임


Ø 젠킨스 1.0까지는 사용자가 젠킨스에 실행시키는 작업을 GUI로 설정했으나, 그 내용은 젠킨스의 독자 형식 설정 파일로 저장되므로 사용자가 나중에 설정 내용이 올바로 되었는지 검증하거나 설정 내용의 변경 이력을 추적하기가 어려웠음


Ø 이에 비해 젠킨스 2.0에서는 설정 내용을 코드로 관리 할 수 있게 되었으며, 깃허브(GitHub)와 같은 소스 코드 관리 도구를 이용하여 변경 이력을 관리하고 코드의 정확성을 다른 사용자가 체크하는 코드 리뷰를 실시할 수 있게 되었음


Ø 클라우드비즈에 따르면 파이프 라인을 도입하여 보다 복잡한 작업의 자동화를 젠킨스에서 실현할 수 있게 되었을 뿐만 아니라, 젠킨스에서 자동화된 작업의 재사용이 가능하게 되었음


Ø 과거 젠킨스를 이용한 소프트웨어 개발의 자동화는 개발자가 개인적으로 나선 것이며, 자동화 메커니즘을 다른 프로젝트에 적용하기가 어려웠음


Ø 그러나 젠킨스 2.0에서는 개발자가 만든 자동화 메커니즘이 코드화 되어 그 코드를 라이브러리로 전사 공유할 수 있게 되었으며, 따라서 젠킨스의 전사적 도입이 용이하게 된 것임


ž 젠킨스를 전사 차원에서 도입하고 있는 대표 사례는 결제 서비스 기업인 페이팔(PayPal)4천 명의 개발자가 이용하는 젠킨스 도입을 추진하고 있음


Ø 페이팔은 현재 개발자 익스피리언스 팀을 마련해 젠킨스 도입으로 4천명 이상의 사내 소프트웨어 개발자들의 개발 경험을 전사적으로 통일하고 개선해 나가고 있음


Ø 페이팔이 독자적으로 개발해 운영 중인 결제 시스템은 규모가 방대하고 게다가 수정도 빈번한데, 35,000 대의 가상 머신에서 돌아가는 이 시스템은 2,600개 이상의 서비스로 구성되어 소스 코드의 행수가 7천만 라인을 넘으며, 이중 매년 1천만 라인의 소스 코드가 수정되고 있음


Ø 이러한 거대 시스템 업데이트 작업을 젠킨스로 자동화하고 있는데, 페이팔이 이용 중인 젠킨스의 인스턴스는 5천 개를 넘고, 하루에 32,000 번의 빌드 작업과 1,000 번의 배포 작업을 실시하며, 테스트 회수 만도 하루 100만 회에 달함


Ø 페이팔 개발자 익스피리언스 팀의 책임자는 젠킨스가 소프트웨어 개발자에게 자유뿐만 아니라 소프트웨어 개발 프로세스의 시각화를 안겨 주었다고 말하는데, 소스 코드의 빌드, 테스트, 배포를 젠킨스가 수행하며 그 로그가 기록되기 때문


ž 클라우드비즈는 젠킨스 2.0의 파이프 라인 실행 상황을 시각화 해주는 블루 오션(Blue Ocean)이라는 도구도 OSS로 함께 공개하고 있음


Ø 젠킨스 사용자는 블루 오션 도구를 이용해 빌드 작업이 다양한 환경 별로 준비되어 있는 테스트 서버에 배포가 되었는지 여부를 GUI에서 확인할 수 있음


<자료> Jenkins


[그림 2] 젠킨스 프로세스 관리 툴 블루 오션


Ø 블루 오션은 사용자가 GUI에서 설정한 내용을 파이프 라인의 코드로 저장하는 기능도 갖추고 있는데, 젠킨스에 익숙하지 않은 초보 사용자도 파이프 라인의 코드를 작성할 수 있게 하였음


Ø 젠킨스를 전사적으로 확장하면 다양한 스킬 레벨의 사용자가 이용하게 되는데, 누구나 젠킨스를 활용할 수 있게 해주는 것이 바로 이 블루 오션의 역할임


Ø OSS로 공개된 젠킨스의 수익모델은 리눅스와 마찬가지로 교육 및 지원 서비스에 있는데, 이번 젠킨스 월드 2017 컨퍼런스에서 클라우드비즈는 젠킨스의 로그를 분석해 사용자 기업의 개발 프로세스의 문제점을 찾아 개선 사항을 제안하는 CloudBees DevOptics를 새로 발표하였음


ž 젠킨스의 도입은 주로 미국과 유럽 기업을 중심으로 활발히 진행 중이며, 소프트웨어 개발을 외부에 아웃소싱 하는 경향이 강한 아시아계 기업들은 상대적으로 저조하다고 함


Ø 클라우드비즈에 따르면 젠킨스의 도입은 페이팔 같은 미국 기업뿐 아니라 독일의 보쉬(Bosch) BMW 등 유럽 기업에서 대규모 도입이 추진되고 있음


Ø 반면 미국이나 유럽에 비해 소프트웨어 개발을 아웃소싱 하는 경향이 강한 아시아계 기업들은 소프트웨어 개발 프로세스를 자사에서 직접 관리하지 못하는 상황이기 때문에 젠킨스를 전사적으로 도입해 개발 프로세스를 개선하기 어려운 면이 있음


Ø 게다가 소프트웨어 개발을 위탁하는 시스템 통합(SI) 업체들 역시 사내 소프트웨어 개발 환경과 개발 프로세스가 고객 기업마다 제각각이기 때문에 SI 업체 내부의 독자적인 개발 프로세스를 표준화하기도 어려움


Ø 소프트웨어 개발의 생산성 향상이 곧 서비스 기업의 경쟁력으로 직결되는 상황에서, 소프트웨어를 자체 개발하는 미국과 유럽의 기업들이 젠킨스 도입을 위해 전사 차원의 노력을 기울이는 것에 비해 아시아계 기업들의 경쟁력이 더욱 뒤쳐질 가능성이 제기되는 것은 이런 이유 때문임


Ø 한국의 기업들도 자체 소프트웨어 개발 생산성이 기업의 경쟁력이라는 인식 하에, 현행 소프트웨어 개발 시스템을 점검하고 경쟁력 강화를 위한 시스템 개편 필요성을 점검할 필요가 있음