- 작성자: Peter Schneider
- 작성일: 2022년 5월 10일
- 원문: https://www.qt.io/blog/is-open-source-really-free
- 번역: https://j2doll.tistory.com/715
기성 소프트웨어를 사용하면 개발 속도가 빨라집니다. 그러나 오픈 소스 소프트웨어(OSS)의 사용은 무료가 아닙니다. 오픈 소스를 사용하는 것은 비용을 수반하는 의무와 위험을 수반합니다.
이 가이드는 공개 정보와 나의 15년 경험을 기반으로 전문 소프트웨어 개발을 위해 오픈 소스 소프트웨어를 사용하는 비용을 요약합니다.
배경: 저는 오픈 소스 원칙에 기반한 많은 소프트웨어를 사용해 왔습니다. 저는 Nokia Networks의 캐리어급 블레이드 서버용으로 Solaris OS에서 JBoss OS(Red Hat이 인수하기 전)로 전환했습니다. Nokia에서 저는 모바일 장치용 오픈 소스 운영 체제인 maemo.org를 홍보하고 기여했습니다. 저는 엔터프라이즈 서비스 관리 플랫폼의 제품 관리를 이끌 때 Angular, Docker, Log4J 및 Fullcalendar.io와 같은 많은 오픈 소스 라이브러리를 사용해 왔습니다.
작성자 참고: 저는 오픈 소스 소프트웨어의 가치를 굳게 믿습니다. 오픈 소스 사용 비용을 분석하는 것은 오픈 소스 소프트웨어의 가치를 높이거나 무시하기 위한 수단이 아닙니다. 저는 항상 공통의 이익이 있을 때 지적 재산을 공유하는 것이 소프트웨어 개발의 미래라고 믿어왔습니다. 그럼에도 불구하고 나는 항상 오픈 소스 사용에 대한 대가를 기꺼이 지불할 용의가 있었다. 그것이 JBoss에 대한 지원 비용이든, Maemo 커뮤니티 의 후원이든, 서비스 관리 플랫폼 에서 수년간의 오픈 소스 관리 비용을 지불 하든, 또는 오픈 소스 제품과 연결된 프리미엄 기능 획득( fullcalendar.io ).저는 항상 특히 상용 제품 개발에서 오픈 소스 소프트웨어를 중요하게 여겼습니다. 이 가이드의 목적은 더 나은 결정을 위한 투명성을 제공하는 것입니다.
오픈 소스 소프트웨어의 취득 비용은 거의 0에 가깝습니다. 그러나 오픈 소스 소프트웨어에는 관리 비용과 위험이 따릅니다. 아래 그림은 오픈 소스 소프트웨어 기반 개발과 관련된 총 소유 비용에 대한 일반적인 오해를 보여줍니다.
오픈 소스 소프트웨어 라이브러리를 사용할 때 첫인상에는 총 소프트웨어 개발 비용이 직원 및 개발 도구에 대한 직접 개발 비용으로만 구성됩니다. 상업적으로 지원되는 소프트웨어 라이브러리에는 소프트웨어 라이선스 및 잠재적인 배포 로열티에 대한 추가 요금이 부과됩니다. 이 비교를 보면 어떤 접근 방식을 선택할지 결정하는 것이 간단해 보입니다. 그러나 모든 진실은 표면 아래에 있습니다.
상용 소프트웨어의 사용에는 제품 수명 동안 숨겨진 비용이 거의 포함되지 않지만 오픈 소스 라이브러리를 사용할 때는 몇 가지 추가 비용을 고려해야 합니다. 여기에는 다음이 포함됩니다.
-
상업적 유지 관리자가 사용자를 대신하여 버그를 수정하는 대신 직접 수정 합니다. (또는 커뮤니티의 누군가가 무료로 빠르게 수정해주기를 바랍니다)
-
감사를 위해 사용된 오픈 소스 구성 요소 문서화, 사람들이 소스 코드를 다운로드할 수 있는 저장소 관리, 제품에 사용된 오픈 소스 라이브러리를 표시하는 사용자 인터페이스 생성과 같은 오픈 소스 의무 구현
-
새로운 오픈 소스 요소를 도입하거나 오픈 소스 라이선스 조건이 변경된 경우 법적 확인 및 위험 평가 구현
-
기업 정보 보안, 기업 오픈소스 정책, 오픈소스 라이선스 조건에 따른 정기 라이선스 준수 점검 수행
이 가이드에서는 연간 보안 감사 및 간접 일회성 비용과 같은 기타 직접 비용을 제외했습니다. 두 경우 모두 침투 테스트를 포함한 보안 감사를 수행해야 합니다. 공개적 명예훼손으로 인한 제품 유통권 상실, 특허 소송, 브랜드 훼손 등 오픈 소스 약관 위반과 관련된 일회성 비용이 워낙 커서 제외했습니다. 이것들은 위험으로 간주되어야 합니다.
가이드는 예제를 기반으로 오픈 소스의 총 비용을 보여주는 형식으로 작성되었습니다. 입력 값으로 TCO 계산을 쉽게 조정할 수 있습니다. 이 가이드의 초점은 개별 결과가 아니라 비용 구성 요소를 설명하는 데 있습니다.
버그 수정에는 시간이 걸립니다. 오픈 소스를 사용하든 사용하지 않든 모든 소프트웨어에는 버그가 있습니다. 문제는 버그를 수정한 사람일 뿐입니다. 상업적으로 지원되는 소프트웨어 라이브러리를 구입하면 코드 관리자가 버그 수정을 수행합니다. 오픈 소스를 사용하는 경우 다른 사람이 오픈 소스 커뮤니티에서 버그를 수정하기를 바랄 수 있습니다. 그러나 오픈 소스 커뮤니티에는 SLA(서비스 수준 계약)가 없습니다. 또는 오픈 소스의 버그를 스스로 수정하고 오픈 소스 유지 관리자에게 업스트림 코드 라이브러리, 즉 코드 마스터의 버그 수정을 병합하도록 요청할 수 있습니다. 이러한 물류 또한 추가 노력이며 오픈 소스 프로젝트 관리자가 승인할 것이라는 보장이 없습니다. 오픈 소스 프로젝트가 자체 제작한 버그 수정을 수락하지 않으면 모든 새 버전으로 오픈 소스 라이브러리를 수동으로 패치해야 합니다.
버그 수정 노력을 계산하기 위해 모든 소프트웨어 코드에서 찾을 것으로 예상되는 평균 버그 양으로 버그를 수정하는 데 걸리는 평균 시간을 추정할 수 있습니다. 인터넷을 검색하면 상용 제품의 버그를 수정하는 데 소프트웨어 개발자의 평균 반나절에서 하루가 걸린다는 진술을 여러 개 찾을 수 있습니다. 20명의 개발자로 구성된 R&D 팀을 운영한 경험에 따르면 하루 만에 버그가 수정되는 것을 본 적이 없습니다. 코드를 실제로 수정하는 데 30분이 채 걸리지 않는다는 데 동의하지만 버그를 수정하는 데 걸리는 시간은 극히 일부에 불과합니다. 버그를 수정하는 데 걸리는 개발자 일의 범위를 0.5일에서 2일로 설정합니다.
개발자가 소프트웨어 버그를 수정하는 데 0.5 ~ 2일이 걸립니다.
비용 계산을 위한 두 번째 매개변수는 오픈 소스 소프트웨어의 버그 수입니다. 오픈 소스 소프트웨어의 수명 주기 동안 다른 소프트웨어만큼 많은 버그가 있다고 가정합니다. 이 경우 우리는 널리 사용되는 가정을 사용합니다. Carnegie Mellon University의 CyLab Sustainable Computing Consortium 에 따르면 상용 소프트웨어에는 일반적으로 코드 1000줄당 20~30개의 버그가 있습니다. 오픈 소스 소프트웨어가 개별적으로 개발된 소프트웨어보다 버그가 더 적 다고 가정해 봅시다 (더 많은 참가자가 동일한 소프트웨어에 기여하고 사용하기 때문에). 그러면 우리는 그 스펙트럼의 하단에서 가치를 취할 수 있습니다.
오픈 소스 소프트웨어에는 코드 1000 줄 당 평균 20개의 버그가 있습니다.
이는 애플리케이션에 몇 줄의 코드가 있고 그 중 얼마나 오픈 소스인지에 대한 질문을 남깁니다. 앱에는 다양한 코드 라인이 있습니다. 평균적인 iPhone 앱은 50,000줄 , Über 앱은 428,000줄, TikTok은 1,500만 줄의 코드를 가지고 있습니다. 이 복잡성을 단순화하기 위해 그리고 저는 Qt에서 일하기 때문에 우리 모델 애플리케이션이 이중 라이선스(상업적으로 지원되고 오픈 소스)에서 사용 가능한 Qt Framework Essential 오픈 소스 라이브러리를 사용한다고 가정합니다. Qt Framework Essentials 소프트웨어 라이브러리는 고성능 모바일 앱, 데스크탑 애플리케이션 및 임베디드 장치에서 자주 사용됩니다. Qt 6.3 릴리스의 Qt Framework Essentials(qtbase 및 qtdeclarative 리포지토리)에는 SLOCCount가 있는 측정값에 따라 2.936.523줄의 코드(LOC)가 포함되어 있습니다.
Qt Framework Essentials 라이브러리에는 약 3백만 줄의 코드가 포함되어 있습니다.
마지막으로 소프트웨어 개발자의 하루 평균 비용을 추정해야 합니다. glassdoor.com을 기준으로 2022년 미국 소프트웨어 개발자의 평균 급여를 555 USD/day로 사용하겠습니다. 간접 직원 비용에 1.25 승수를 추가하면(EU 자금 지원 프로그램에 사용된 것과 동일한 비율 사용) 평균 소프트웨어 개발자 하루에 688 USD 비용이 발생합니다. 예상되는 버그의 수를 소프트웨어가 리팩토링되거나 다시 실행되는 일반적인 기간인 10년 동안 배포할 것입니다. 따라서 Qt Framework Essentials 오픈 소스 라이브러리를 자체적으로 유지 관리한다면 다음을 의미합니다.
3,000,000 LOC
/ 10 년
x 20 버그
/ 1,000 LOC
x 0.5 일
x 688 USD
-------------------
2,064,000 USD
(26억 3261만 1,360 원, 1 USD = 1260 KRW, 2022년 5월)
오픈 소스 커뮤니티에서 대부분의 버그를 수정할 것으로 예상할 수 있지만 전체 버그 중 1% 만 수정하면 된다고 가정하더라도 여전히 매년 20,640 USD 의 비용이 듭니다.
오픈 소스 소프트웨어의 사용에는 의무적 의무와 자발적 의무가 모두 따릅니다. 의무적 책임의 범위는 코드에 부여된 라이선스 조건의 유형에 따라 다릅니다. GPL, MIT 및 BSD와 같은 약어 뒤에 숨어 있는 다양한 오픈 소스 라이선스 유형이 있지만 오픈 소스 소프트웨어 사용자의 일반적인 책임은 다음과 같습니다.
i. 어떤 오픈 소스 소프트웨어가 활용되었는지 표시하는 사용자 인터페이스(UI)를 제품에 개발해야 합니다. 여러 오픈 소스 소프트웨어로 소프트웨어를 만들면 이 UI를 개발하는 노력이 각 오픈 소스 구성 요소 간에 공유됩니다.
일반적으로 더 많은 오픈 소스를 사용할수록 모든 콘텐츠를 통합하는 데 더 많은 시간이 필요합니다. 소프트웨어 제품에서 이 UI의 초기 개발은 내가 참여한 두 번의 백로그 개선 회의를 기반으로 5-10 개발자 일(DEVELOPER DAY)이 소요됩니다. 콘텐츠의 유지 관리에는 1년에 하루 개발자가 소요될 것으로 예상합니다.
ii. 제품과 함께 또는 별도로 소스 코드를 사용할 수 있도록 해야 합니다. 즉, 오픈 소스 라이선스에 따라 때로는 자신의 코드도 사람들이 오픈 소스 코드를 검사하고 다운로드할 수 있는 저장소를 관리해야 합니다. 사람들이 오픈 소스 소프트웨어를 요청하고, 관련 소스 코드를 사용할 수 있는 소프트웨어 저장소를 생성 및 유지 관리하고, 이에 대한 책임을 지는 사람을 지정할 수 있는 워크플로를 만드는 것이 가장 좋습니다.
해당 UI의 개발은 개발자 2~3일 정도 소요됩니다. 워크플로를 설정하는 데 개발자 2일이 더 걸립니다. 소프트웨어 리포지토리를 만들고 유지 관리하려면 Github와 같은 기존 인프라를 사용하여 하루가 필요할 수 있습니다.
iii. 특히 비즈니스 소프트웨어를 구축하는 경우 고객이나 잠재 고객의 잠재적인 요청에 대한 모든 오픈 소스 소프트웨어 라이선스와 라이선스 조건을 나열하는 내부 문서를 관리하려고 합니다. 이 문서를 유지 관리하는 것은 로켓 과학이 아니지만 처음에는 개발자의 하루를 만들고 이 목록을 관리하기 위해 매년 다른 하루를 따로 둡니다(UI에 게시된 것과 동일한 원시 형식일 수 있음).
iv. 제품 사용자는 장치에서 오픈 소스 라이브러리를 수정할 수 있어야 합니다. 하드웨어 제품을 구축하는 경우 장치 소프트웨어를 플래시하는 수단을 제공해야 합니다. 어쨌든 서비스 목적으로 깜박이는 인터페이스가 필요할 수 있지만 문서를 포함하여 사용자를 위한 도구 체인을 제공하려면 상당한 노력이 필요할 수 있습니다. 도구 체인을 만들고 유지 관리하는 데 5일의 개발자 일을 할당할 것이지만 그 숫자는 적어도 초기에는 작업을 완료하기에는 너무 적습니다.
의무적 책임 비용을 합산하면 다음 비용이 발생합니다.
일회성 비용:
5 개발자 일 (OSS 목록 UI)
+ 2 개발자 일 (OSS 요청 UI)
+ 2 개발자 일 (OSS 요청 워크플로)
+ 1 개발자 일 (소프트웨어 저장소)
+ .1 개발자 일 (OSS PDF 문서)
+ 5 개발자 일 (소프트웨어 플래싱 툴체인)
-----------------------------------------
16 일
x 688 USD (개발자 일일 요금)
---------------------------------------
11,008 USD (1,403만 1,016원, 2022년 5월)
연간 비용:
1 개발자 일 (OSS UI 업데이트)
+ 0,5 개발자 일 (OSS 저장소 업데이트)
+ 0,5 개발자 일 (OSS 요청 처리)
+ 0,5 개발자 일 (OSS PDF 유지 관리)
-------------------------------------------
2.5 개발자 일
x 688 USD(개발자 일일 요금)
------------------------------------------
1,720 USD (219만 3,189원, 2022년 5월)
오픈 소스 커뮤니티에 대한 자발적인 활동에는 버그 수정 기여, 원본 코드에 대한 기능 향상 공유, 오픈 소스 커뮤니티 이벤트 참여 및 후원, 오픈 소스 승인자 또는 유지 관리자와 같은보다 적극적인 역할 수행이 포함됩니다. - 소스 구성 요소. 자원봉사 활동과 관련된 비용은 모두가 선택할 수 있으므로 이 안내서에는 포함하지 않겠습니다. 그러나 오픈 소스 커뮤니티는 사회의 한 형태이며 대부분의 후원자가 프로젝트에 다시 기여할 때만 작동한다는 점을 기억하는 것이 좋습니다.
대부분의 회사는 새로운 오픈 소스 소프트웨어가 제품에 추가될 때마다 법적 확인을 실행합니다. 법적 평가는 주로 현재의 오픈 소스 정책을 준수하는지 확인하는 역할을 합니다. 오픈 소스 라이선스 유형은 한정되어 있기 때문에 이러한 법적 확인에는 많은 시간이 걸리지 않습니다. 오픈 소스 라이선스 정책의 변경이 필요한 경우 이러한 법적 확인에는 상당한 시간이 소요됩니다. 그런 변호사들이 게이트키퍼 역할을 하는 경우가 많으며, 관련 비용은 주로 한 번만 발생한다.
제 생각에 변호사는 위험 관리, 사용자에 대한 다운스트림 규정 준수, 다른 당사자가 소유한 산업 특허 및 IPR 준수, 자체 IPR 보호에 관한 오픈 소스 라이선스 사용을 지속적으로 모니터링해야 합니다. 이러한 활동 중 일부는 쉽게 수량화할 수 없으며 일부는 전체 비즈니스를 위태롭게 하는 위험을 초래할 수 있습니다.
하지만 대부분의 기업은 현실이 다르고 법적 점검은 단 한 번만 이뤄진다. 온라인으로 라이선스 조건을 확인하고 위험을 감수할 가치가 있는지에 대한 조사를 수행하는 법적 확인은 하루 이상 걸리지 않을 수 있습니다. 이러한 확인 중 하나는 매년 수행해야 할 것으로 예상됩니다.
1 선임 변호사 일 (SENIOR ATTORNEY DAY)
x 1,038 USD
--------------------------------
1,038 USD (132만 3,564원, 2022년 5월)
Glassdoor.com에 따르면 미국 선임 변호사의 평균 연봉: 148.000 USD. 간접 비용: 207.000 USD, 일일 요금: 1.038 USD
규정 준수 관리에는 다음을 확인하는 기업의 모든 활동이 포함됩니다.
- 회사의 제품에는 내부 IPR 및 오픈 소스 정책에 따라 오픈 소스 소프트웨어만 포함됩니다.
- 회사는 오픈 소스 의무를 준수합니다.
Synopsys 의 2019년 백서에 따르면 감사 대상 코드베이스의 85% 에 라이선스 준수 문제가 포함되어 있습니다. 오픈 소스 정책의 명확성과 소프트웨어 개발자 교육을 통해 사전에 준수를 달성하는 것이 바람직합니다. 앞서 언급한 법적 확인도 준수 달성의 일부입니다. 또한 많은 회사에서 자동 소프트웨어 스캔 및 라이선스 관리 도구와 같은 개발 후 규정 준수 방식을 적용하고 있습니다.
Snyk 또는 Debricked와 같은 자동화된 소프트웨어 스캐닝 제품은 개발자당 가격이 책정되는 클라우드 솔루션인 경우가 많습니다. 개발자당 가격은 월 25달러에서 139달러 사이입니다(적어도 공개적으로 볼 수 있는 가격일 경우). 5명의 소프트웨어 개발자에게 이 기능에 대한 라이선스가 필요하다고 가정하겠습니다. 이러한 제품은 GPL3 라이선스 코드와 같은 회사 정책을 준수하지 않을 수 있는 오픈 소스 소프트웨어가 제품에 포함되어 있는지 확인하는 데 도움이 됩니다. 오늘날 애플리케이션에는 수백만 줄의 코드가 포함되어 있으므로 자동화된 스캔은 규정 준수 문제를 방지하는 효과적인 방법이 될 수 있습니다.
5 소프트웨어 개발자 기여 (CONTRIBUTING SOFTWARE DEVELOPERS)
x 25 USD / 월
x 12 개월
-----------------------------------------------
1,500 USD (191만 2,665원, 2022년 5월)
오픈 소스 소프트웨어의 총 소유 비용(TCO)은 자동차 구입에 비유할 수 있습니다. 자동차에는 특정 구입 비용이 있습니다. 그러나 자동차 대리점에 지불하는 가격 외에도 등록, 보험 및 지원 비용과 같은 추가 비용을 고려해야 합니다. 오픈 소스 소프트웨어의 구입 비용은 0 이지만 제품 수명 기간 동안 알아야 할 다른 비용이 있습니다.
이 가이드에서는 상용 소프트웨어 수명의 최소값일 수 있는 5년 기간의 TCO를 계산합니다. TCO를 초기 비용과 연간 반복 비용으로 나눕니다. 앞서 말씀드린 것처럼 소송비나 사회공헌비 등 가능성이 희박하거나 자발적인 비용은 제외하도록 하겠습니다.
일회성 비용:
오픈 소스 의무: (16 DEV DAYS x 688 USD) = 11,008 USD (1,403 만 1,016원, 2022년 5월)
연간 비용:
버그 수정(3M LOC / 20 BUG / LOC / 10년 x 0,5 DEV DAYS x 688 USD x 소유 1%) = 20,640 USD (2,630만 5,680원, 2022년 5월)
오픈 소스 의무: (2,5 DEV DAYS x 688 USD) = 1,720 USD (21만 9,318원, 2022년 5월)
법적 수표: (변호사 1일 x 1.038 USD) = 1,038 USD
규정 준수 검사(5 DEVS x 25 USD/월 X 12 개월): 1,500 USD
----------------------------------------------------------
24,898 USD (3,173만 6,733원)
x 5년
----------------------------------------------------------
124,490 USD (1억 5,868만 3,668원)
+ 11,008 USD (오픈 소스 의무)
----------------------------------------------------------
135,498 USD (1억 7,276만 5,369원, 2022년 5월)
크게 보면 135,000 USD는 소프트웨어 제품을 개발할 때 그리 많지 않습니다. 오픈 소스 비용에 대한 대안은 상업적으로 지원되는 소프트웨어 비용으로, 종종 SaaS 구독 모델로 제공됩니다.
의도적으로 저는 오픈 소스 또는 상용 소프트웨어 중에서 어느 쪽으로 갈 것인지 신중하게 권고했습니다. 결정은 항상 많은 요인에 따라 달라집니다. TCO도 그 중 하나입니다. 개인적으로 저는 Qt Company에서 일하기 때문에 편향되어 있습니다. 두 가지를 모두 수행하는 것이 좋습니다. 즉, 오픈 소스를 기반으로 하는 상업적으로 지원되는 소프트웨어를 사용하고 오픈 소스 프로젝트에 업스트림에 기여하는 것입니다. 왜요? 오픈 소스의 취득 비용은 매우 매력적이며 관련 비용의 많은 부분을 여러 오픈 소스 구성 요소에서 공유할 수 있지만, 고객의 주요 고객이 에스컬레이션하여 해결하기 어렵다고 생각하는 하나의 중요한 버그만 있으면 됩니다. 당신을 지지해 줄 누군가가 있는 것을 좋아했습니다. 오픈 소스의 이점과 이에 대한 기여는 소프트웨어의 더 나은 품질에 있습니다. 따라서 내가 추천하는 것은 커뮤니티에서 활동하는 것입니다.
이 가이드가 유용했습니까? Qt Company에서 의뢰한 Forrester 의 Smarter Products Need Smarter Development 가이드 와 같은 소프트웨어 개발에 대한 Qt 가이드를 확인하십시오.
'Qt' 카테고리의 다른 글
Qt 최대 확장성 – 동일한 라이선스로 MCU 및 MPU 개발 (0) | 2022.07.09 |
---|---|
상용 애드온: Qt VNC 서버 (0) | 2022.07.09 |
Conan 패키지 관리자용 Qt 6.2.4 패키지 (0) | 2022.04.22 |
[Qt Blog] 당신의 앱을 더 오래 살게 하기 (0) | 2022.04.15 |
qmake2cmake 소개 (1) | 2022.04.14 |