JDK/WEB/WAS 서버표준화와오픈소스거버넌스 Part 2 : 오픈소스거버넌스시스템구축 2014. 11. 28. [ 제 111 호 ] Ⅰ. 오픈소스 (Open Source) 소개 Ⅱ. 오픈소스라이센스 Ⅲ. 오픈소스라이센스관리 / 활용 Ⅳ. 결론
SW 공학트렌드 동향분석 Webzine Ⅰ. 오픈소스 (Open Source) 소개 1.1 상용소프트웨어와오픈소스 상용소프트웨어는사용자가비용을지불하고소프트웨어사용할수있는패키지를받거나웹또는이메일로패키지를다운로드해서사용한다. 소프트웨어는법적보호를받을수있기때문에, 개발자가소프트웨어를개발하면저작권이자동생성되며, 사용권리는개발자나회사에부여받는다. 저작권이있는저작물은저작권자의허락없이는저작물을복제, 배포, 수정등이불가능하다. 소프트웨어라이센스는소프트웨어자체에대한소유권과는별개로소프트웨어를사용할수있는권리를의미한다. 즉, 단순히라이센스를받음 ( 계약 ) 으로서저작권자로부터일정간조건을바탕으로소프트웨어사용권리를승인받음을의미한다. 따라서사용권만받은소프트웨어를복제나전송등저작권규정에위반한행위가발생하면저작권침해가일어날수있다. 상용소프트웨어의라이센스는허용기간, 사용기준, 공급형태에따라달라진다. 워낙다양한소프트웨어를쓰고, 직원들의이동이잦을수록라이센스계약을잘챙기지않아서어려움을많이겪기도한다. 이에따라관리포인트점검과교육이상당히요구되는상황이다. 상용소프트웨어에반발하여자유로운사용을위해서시작된프리소프트웨어 (Free Software) 가 Richard Stallman 과 FSF 1) 에의해시작되었다. 상용소프트웨어의한계를넘어서는프리소프트웨어운동은소프트웨어사용자에게실행, 복제, 배포의자유, 소스코드공유를통해학습, 수정, 개선할수있는자유를부여하자고주장했다. 프리소프트웨어진영의급격한운동은 GPL(General Public License) 로구체적으로발전되었고, Linux 가이라인센스로개발되었다. 그리고 OSI 2) 단체가설립되었다. 오픈소스소프트웨어로인정받을수있는라인센스조건을정의했다. 소프트웨어사용자에게배포, 수정의자유가있으며해당소스코드를제공할수있도록했다. 오픈소스라고해서완전히자유롭게쓸수있는것은아니다. 오픈소스의철학이있는데, 무료로쓸수있다고해서상용소프트웨어를개발할수는없다. 다만, 오픈소스 1) Free Software Foundation, http://www.fsf.org/ 2) Open Source Initiative, http://opensource.org/ 01 2014 October (No.111)
공학트렌드 를이용해개발하면서복제 / 설치 / 배포의자유에따라오픈소스를활용한소프트웨어를공개하는의무가있을수있다. 만약이부분을준수하지않을경우에는저작권분쟁으로이어질수있다. OSI(Open Source Initiative) 가인증한라이센스는다음과같다. Apache License 2.0 BSD 3-Clause "New" or "Revised" license BSD 2-Clause "Simplified" or "FreeBSD" license GNU General Public License (GPL) GNU Library or "Lesser" General Public License (LGPL) MIT license Mozilla Public License 2.0 Common Development and Distribution License Eclipse Public License 그림 1_Top 20 Open Source Licenses 출처 : https://www.blackducksoftware.com/resources/data/top-20-open-source-licenses 오픈소스는소스코드를대중들에게공개해서누구나자유롭게사용할수있고, 수정 02
SW 공학트렌드 동향분석 Webzine 이가능하다. 그러나수정과재배포에관련해서라이센스내용이각각달라조심스럽게사용할필요가있다. 라이센스마다특징이있기때문에기업에서일하는개발자는신중하게라이브러리선택을할필요가있다. 참고로오픈소스소프트웨어를검증하는한업체인 Black Duck의정보 3) 에따르면, GPL 라이센스가 37% 정도되며, MIT 라이센스가 18%, Apache 라이센스가 15% 정도된다고한다. 다음장에서주요라이센스에대해서간단히설명하고자한다. Ⅱ. 오픈소스라이센스 오 픈소스라이센스의자세한내용은참조를이용한다. 기업에서개발자가소스수정과소프트웨어 Linking 하는프로그래밍시주의해야하는중요한저작권, 소스공개관점에서접근한다. 필자는코드프로젝트라이센스 site 와 4) OSI 를 5) 바탕으로정리했다. GPL (General Public License) GPL 라이센스는다른오픈소스라이센스에비해서강하다. 소스를수정하거나새로운소프트웨어에 Linking 할때소스코드를모두공개해야한다. LGPL (Lesser General Pulbic License) GPL 2.0 보다는완화된형태이다. GPL 과비슷하게소스수정할때는소스코드를공개해야한다. 새로운소프트웨어를라이브러리 Linking 할때는소스코드를공개할필요는없다. BSD (Berkely Software Distribution) GPL, LGPL 처럼강한라이센스가아니다. 소스수정시소스코드공개의무가없다. 게다가특허권행사가가능하지않다. Apache License Apache Tomcat, Apache Httpd 서버와같이아파치재단 (Apache Foundation) 이지원하 3) https://www.blackducksoftware.com/resources/data/top-20-open-source-licenses 4) http://www.codeproject.com/info/licenses.aspx 5) http://opensource.org/licenses/alphabetical 03 2014 October (No.111)
공학트렌드 는모든소프트웨어에적용된다. 소스수정시소스코드공개의무가없다. 그러나 Apache 라는상표권을침해하지않아야한다는명시적인조항이들어가있으며, 저작권보호를하고있다. MPL (Mozilla Public License) Netscape 브라우저의소스코드를공개하기위해만들어졌다. 원래소스코드가아닌새로운파일을추가하는경우공개의의무는없다. 그러나소스코드를수정할경우에는공개해야한다. 특허권을주장할수없다는것이특징이다. Eclipse Public License Eclipse 재단이지원하고있으며, 소스코드를수정및 Linking 시해당모듈을공개해야한다. MIT License 저작권이보호되지만, 특허권을행사할수없다. 소스코드를수정해도소스코드공개의무가없다. CDDL (Common Development and Distribution License) 저작권이보호되며, 소스코드를수정해도소스공개의무가없다. AGPL (GNU Affero Generl Public License) Affero사의요청에의해만들어졌다. 기존 GPL 보다더강하여해당라이선스를수정또는배포하는경우컴퓨터네트워크를기반으로동작하는응용프로그램의리소스를사용하는모든사용자에게소스를공개해야한다. GPL, LGPL, MPL 라이센스를가진오픈소스를수정할경우수정한소스코드를공개해야한다. GPL 의경우는 Linking 을하면사용하고있는관련소스를모두공개해야하며라이센스전파의무를수행해야한다. GPL 라이센스경우에는어떻게사용하고있는지잘살펴봐야한다. 특히동영상코덱을사용하는클라이언트배포의경우에는소스공개의의무가있다. 예를들어 ffmpeg 는 GPL 또는 LGPL 라이선스 6) 라서서버쪽은링킹이슈가아니면쉽게쓸수있지만, 사용자 PC 에배포되는클라이언트 App 또는안드로이드 /IOS App 으로배포되는경우에는치명적인이슈를부를수있다. AGPL 라이센스는클라이언트뿐만아니라서버에도모두공개해야하는강한라이센스를가지고있다. 때문에수정또는배포하여통신하는경우, 통신하는부분의모든사 6) 참조 https://www.ffmpeg.org/legal.html 04
SW 공학트렌드 동향분석 Webzine 용자에게오픈소스로공개해야한다. 예를들어 Nosql 로유명한 neo4j, mongodb 의특정파트는 AGPL 로되어있다. 자칫실수로모든소스를공개하는상황이올수도있으므로정확하게파악하고사용해야한다. 만약포털기업이 AGPL 라이센스에해당하는오픈소스를수정, 배포한다면사실상모든고객에게소스를공유해야하므로완전한소스공개인것과다름없다. 오픈소스라이센스에대한자세한정보는한국소프트웨어포털의공개 SW 라이센스링크 7) 내부지면가이드 PDF 문서참고하기를추천한다. 그림 2_ 한국소프트웨어포털의공개 SW 라이센스지면 출처 : http://www.oss.kr 7) http://www.oss.kr/oss_intro06 05 2014 October (No.111)
공학트렌드 Ⅲ. 오픈소스라이센스관리 / 활용 3.1 클라이언트및서버관점에서접근 클라이언트와서버관점에서접근할수있다. 클라이언트인스마트폰, PC 소프트웨어로개발하는경우로서, 배포할버전을배포하 기전에오픈소스거버넌스부서에전달해오픈소스검증을받도록한다. 오픈소스거 버넌스의조직에서는두가지로분류된정보를저장한다. 하나는프로젝트에서쓰이는 라이브러리정보를수집하는정보이며나머지는수집된정보를바탕으로라이브러리 관점에서수집하는정보이다. 후자의경우는라이브러리단위로저장하기에신규프로 젝트에서쉽게라이브러리정보를이용할수있으며시간이지날수록빠른검증이가능 하다. 프로젝트관점에서오픈소스거버넌스 DB 에프로젝트이름, 개발플랫폼, 개발언어, 라이브러리이름, 라이브러리버전, 개발자 / 관리자정보를구분하여저장한다. 프로젝트이름 개발플랫폼 개발언어 라이브러리이름 라이브러리버전 개발자 / 관리자정보 rookie android java guava 2.1 nipa@gmail.com... 라이브러리관점에서저장하는정보는개발플랫폼, 개발언어, 라이브러리이름, 라이 브러리, 라이센스, 사용가능여부이다. 개발플랫폼 개발언어 라이브러리이름 라이브러리버전 라이센스 사용가능여부 android java guala 2.1 GPL X... 이두개의정보를바탕으로라이센스이슈 ( 위반 ) 이발생하면오픈소스거버넌스조 직은개발부서에관련내용을전달하고사용여부및개선가이드를전달한다. 클라이 언트는특성상한번배포되면영향력이크기때문에사람의매번체크하는매뉴얼방 식을채택할수있으나자동화할수있는부분은최대한높여야한다. 축적된오픈소스거버넌스데이터를볼수있는오픈소스관리툴을내부로공유한 06
SW 공학트렌드 동향분석 Webzine 후에클라이언트사내개발자들에게공유해오픈소스라이브러리를개발또는배포전에미를정보를쉽게이용할수있다. 클라이언트개발자관점의오픈소스거버넌스과정이 < 그림 3> 에담겨있다. 그림 3_ 클라이언트개발자관점에서의오픈소스거버넌스과정 클라이언트단말은고객에게주어지게되고배포하는과정이포함되기때문에라이센스이슈가매우중요하다. Skype 가운영하는 VoIP 클라이언트단말에 GPL 라이센스라이브러리 2개가포함되면서소스코드공개와벌금이처해지는사건이있었다. 8) 그외삼성전자에서도비슷한사례가발생했다. 따라서스마트폰과같은어플리케이션클라이언트는오픈소스라이센스정책을명확히알고사용할수있어야한다. 최근에는스마트폰제조회사에서탑재되는어플리케이션의오픈소스라이브러리의라이센스를검증해탑재여부를어플리케이션에통보하고위와같은이유로어플리케이션선탑재를하지않겠다는공문을보내고있다. 따라서오픈소스사용여부에대한세밀한검토가필요하다. 반면, 서버관점에서는오픈소스정보를받는시점이여러부분에서존재할수있다. 빌드하는시점, 배포하는시점상용서버군에서배포하는시점, 배포된상용서버에서오픈소스라이브러리정보를수집할수있다. 필자가소속해있던회사는다양한형상관리, 브랜치정책이존재해서배포가일어난후의상용서버정보를수집했다. 사용서버의 WEB/WAS 표준디렉터리에서실행하는프로세스의라이브러리정보수집을 8) http://www.oss.kr/index.php?mid=oss_license&sort_index=readed_count&order_type=desc&document _srl=66978 07 2014 October (No.111)
공학트렌드 하는방식을사용했다.( 원칙적으로접근하기위해서는상용서버에배포하기전에오픈 소스거버넌스가진행되도록하는것이좋다. 배포서버를통일한다면배포서버를활용 해지속적인데이터수집이가능하고, 배포전에문제를해결할수있을것이다. ) 클라이언트와비슷한관점으로프로젝트단위와라이브러리관점으로라이브러리를 수집할수있다. 프로젝트관점에서쓰이는라이브러리를프로젝트이름, 호스트명, 개 발언어, 라이브러리이름, 라이브러리버전, 개발자 / 관리자정보로분류해저장한다. 프로젝트이름 호스트이름 개발언어 라이브러리이름 라이브러리버전 개발자 / 관리자정보 google mail gm123 java guava 1.2 nipa@gmail.com... 라이브러리관점으로개발언어, 라이브러리이름, 라이브러리버전, 라이센스, 사용 가능여부를저장한다. 개발언어 라이브러리이름 라이브러리버전 라이센스 사용가능여부 java guava 1.2 MIT O... 언급한두개의정보를바탕으로라이센스사용에적합하지않은경우, 또는허락을 받지않은상용라이브러리를쓰는경우에 Error 메시지를전달한다. 그러나아주크리 티컬하지않는다면 Warn 메시지를전달한다. 매일마다서버를체크하고데이터를수집했다. 데이터수집정보는호스트의 JDK, WEB, WAS 의모든라이브러리와버전정보다. 프로젝트이름호스트이름분류버전 라이브러리이름 라이브러리버전 google mail gm123 JDK 1.7 rt.jar 1.7... 오픈소스거버넌스포털을만들어오픈소스거버넌스정보를모두에게공유하고개 발자가어떤라이브러리를적절하게잘사용했는지알린다. < 그림 4> 는서버관점에서 의오픈거버넌스과정을설명하고있다. 서버관점에서는오소스라이브러리이슈는그리크지않다. 특별히 GPL/LGPL/MPL 라이센스를가진라이브러리의소스를직접수정하지않을뿐더러일반사용자배포를 하지않기때문에그냥사용해도큰무리가없는것으로알려져있다. 08
SW 공학트렌드 동향분석 Webzine 그림 4_ 서버개발자관점에서의오픈소스거버넌스과정 클라이언트나서버에서개발할때오픈소스라이브러리의라이센스를잘모르는부분이존재한다. 이슈가되는오픈소스라이브러리를사용할때는법무팀을통해서확인해야한다. 이와같은도움을받을수없는경우에는공개소프트웨어포털에 9) 문의하도록한다. 현재정보통신산업진흥원공개소프트웨어포털에서국내중소기업및개발자개인, 학교및비영리연구기관을대상으로무료오픈소스라이센스검증서비스를하고있다. 오픈소스투자가가능하면, 오픈소스거버넌스를진행할수있는상용툴을구매해정확한데이터와생산성을높일수있다. 그리고클라이언트또는서버의운영체제에서도마찬가지로체크하는것도좋다. 리눅스배포판에서의 GPL 라이선스이슈가라이브러리를포함한운영체제를사용했다가소송이걸리는사례가있었으니, 운영체제선택에도신중할필요가있다. 수집서버에 JDK, WEB, WAS 뿐아니라운영체제와 DB 배포판의정보와라이브러리정보도취합해저장한다. 클라이언트와서버의오픈소스관리는비슷하므로함께저장하여중복작업이없게할수있다. 3.2 서버운영관점의오픈소스거버넌스 지금까지단순히오픈소스라이브러리의라이센스만체크하는형태를가졌다. 저작권, 특허권침해를방어또는방지할수있는여건들은모아졌다. 그러나이것이모든이슈를포함하지않는다. 보안이슈와성능이슈, 안정성 ( 크리티컬버그 ) 이슈등이발생할수있다. 개발자들의집단지성이모아이슈를해결할수있도록방안이필요하다. 9) http://www.oss.kr/oss_open1_3 09 2014 October (No.111)
공학트렌드 첫번째는보안이슈이다. 운영체제의 SSH 보안버그, Web, WAS, JDK 의자체적인보안버그도상당히많이발생하고있다. 만약데이터수집을하지않고있다면모든개발자들이체크를해야하는상황이다. 그러나오픈소스정보를수집한경우라면보안이슈가있는버전이설치된호스트이름을한번에찾을수있을뿐아니라관리하는개발자나운영자들에게관련정보를전달하여빠른패치를일어나게할수있다. 오픈소스관리툴에운영체제의보안이슈에해당되는운영체제라이브러리정보를수집 / 저장하도록했다. 두번째는성능이슈이다. WEB, WAS 오픈소스라이브러리들이쓰기에편한것을선택하여개발자들이사용하기도했으나, 업그레이드되면서특정버전에서는성능저하가발생하는경우가있다. 그리고비슷한기능을하는라이브러리중성능이안좋은라이브러리를사용하면서전체적인성능저하가발생하는경우도있다. 이런이슈로인해서업그레이드, 때로는다운그레이드를권장해성능안정적인버전을가이드까지하게된다. 예를들어 Apache 의 dbcp와 pool 라이브러리버전을적절한버전으로패치하기도했고안정적인버전이나오면테스트후적용할수있도록가이드할수있다. 각개발부서에서경험한좋은정보들을바탕으로안정적인버전을체크할수있다. 그렇다고해서무조건안정적인버전을쓰라고강요할수는없다. 새로운도전에따른성능저하는언제나생길수있고, 관련정보를모두받아전사에관련정보를전달할수있다. 세번째는안정성 ( 크리티컬버그 ) 이슈이다. 새로나온라이브러리를쓰다가크리티컬버그가발생해이슈가되는경우, 빠른전파를진행할수있다. 많은개발부서는크리티컬버그이슈를모르고있다가똑같은문제가재현되고나서문제해결을위해반복되는고생이없도록크리티컬버그버전은사용하지않도록할수있다. 예를들어새로나온 JDK 의버전을쓰다 GC 부분에서크리티컬버그가발견되었다. Oracle 에버그를공유함과동시에오픈소스거버넌스툴에서해당버전사용시개발자와운영자에게수정하라는관련메일을보내해당버전을쓰지않도록독려할수있다. 만약개발자나운영자가오픈소스및보안, 성능, 안정화를해결하지않아도오픈소 스거버넌스툴이매일체크하여트래킹이되도록한다. 서버의안정화는곧서비스의 안정화를의미하는것이기때문에작은이슈라도정리할수있도록지원한다. 10
SW 공학트렌드 동향분석 Webzine 개발언어 라이브러리이름 라이브러리버전 라이센스 사용가능여부 이슈 java common-dbcp 1.2.0 Apache X 안정성... 설명 메모리가어느정도커지면초기화되는버그 WEB, WAS 의오픈소스라이브러리정보, JDK 와같은주요언어툴, 운영체제에연관된보안과특정 License 를포함한오픈소스라이브러리정보를수집하고이정보를바탕으로이슈를핸들링하는프로세스와시스템이필요하게된다. 모든개발부서의개발자에게메일을통해서매번새로나온정보를전달하거나정책을계속전달하기가어려웠다. 그래서오픈소스포털을개발하여중요오픈소스라이브러리나오픈소스는아니지만중요한라이브러리의정보를모으고카테고리화하여개발자들이언제든지살펴볼수있도록한다. 오픈소스라이센스검증뿐아니라성능, 보안, 안정성등을잘이해할수있어야하므로오픈소스거버넌스조직은기술과법적리스크를고려할수있으며, 빠르고정확한피드백을줄수있는구성원으로조직화해야한다. 모든일을다할수없기때문에보안팀과개발팀과의긴밀한협조로시스템을성숙시켜야한다. < 그림 5> 는지금까지의내용을도식화한것이다. 오픈소스라이브러리검증, 보안검증, 성능검증, 안정성을검증하는역할을하는오픈소스거버넌스툴이다. 오픈소스거버넌스툴은오픈소스라이브러리에수집된정보가저장된오픈소스관리툴, 호스트에서동작하는수집 Agent, 개발자들에게정보를제공하고소통할수있는오픈소스포털을바탕으로오픈소스라이브러리사용을원칙적으로적용하고자했던필자의그림을소개한다. 그림 5_ 오픈소스거버넌스툴도식화 11 2014 October (No.111)
공학트렌드 Ⅳ. 결론 표 준화된 JDK/WEB/WAS 라이브러리에어떤버전의오픈소스라이센스를쓰는지검토할수있고, 그밖의라이브러리의성능, 안정성, 보안을검토하여지속적 으로 JDK/WEB/WAS 표준환경을계속보완할수있다. 또한클라이언트가사용하는라이브러리의오픈소스라이센스와서버에서사용하는라이브러리의라이센스정책을잘저장하면신규서비스나프로젝트에서개발초기또는중간에이슈가있는라이브러리를정리할수있다. 그리고개발하면서얻은오픈소스활용에대한성능, 보안, 시행착오의내용을오픈소스관리툴에내용을담아같이공유할수있다. 오픈소스는소스코드가공개되어빠른기술습득과개발을가능하게한다. 그래서개발원가를줄일수있는큰장점이있지만, 라이센스를위배하면법적책임뿐아니라모든소스를공개해야할책임을질수있다. 현실상개발자가프로그래밍하는부분에있어서오픈소스사용의권리와책임을다알고개발하는경우는흔치않다. 배포한후에나이슈가생길때에야비로소발견하는경우가많다. 따라서오픈소스거버넌스시스템구축을통해서빠른문제해결을처리함으로써회사가감내해야할리스크를줄일수있다. 본원고를통한필자의경험공유가오픈소스거버넌스를보다쉽게이해하고효과적이고효율적인시스템을구축하는데도움이되기를바란다. 참고자료 1. http://opensource.org 2. https://wiki.kldp.org/wiki.php/opensourcelicenseguide 3. http://www.oss.kr/ 12