오픈 소스
오픈 소스란?
오픈 소스는 여러 팀과 개발자가 지속적인 개발 및 업데이트를 위해 새로운 기능이나 수정 사항을 자유롭게 개선하여 기여할 수 있도록 만들어져 배포되는 소프트웨어입니다.
오픈 소스가 다른 모델과 다른 점
개발자들이 오픈 소스 소프트웨어를 만들고 릴리스하며 업데이트할 때의 설계 의도는 개발자 커뮤니티가 전반적으로 진행 중인 프로세스에 기여할 수 있도록 하는 것입니다. 소프트웨어의 소스 코드는 컴파일되지 않은 형태로 자유롭게 이용할 수 있으며, 이를 발전시키거나 수정하는 데 자신의 전문 지식을 더하고자 하는 사람들이 자신이 생성한 것을 공유할 수 있습니다.
오픈 소스의 전망
오픈 소스의 또 다른 특징은 사용자들이 다른 운영 체제나 온라인 환경에서 실행될 버전을 만들 수 있다는 것입니다. 오픈 소스 소프트웨어에서 유일하게 예상할 수 있는 점은 소프트웨어 생성에 기여하는 사람들이 다른 사람들에게도 자신의 업데이트를 제공한다는 것입니다.
오픈 소스의 역사
오픈 소스 소프트웨어는 실제로 상업적으로 출시된 타이틀보다 수십 년 앞서 1953년 A-2 컴파일러 시스템으로 거슬러 올라갑니다. 1970년대까지만 해도 컴퓨터 하드웨어 자체는 프로그램들이 만들어지고 로드되는 것이 아니라 상품이라는 철학이 지배적이었습니다. 상용 소프트웨어가 출시되면서(종종 우편 주문을 통해 텍스트의 인쇄된 줄로 구매) 오픈 소스는 상업용, 학술용, 취미용 컴퓨터의 일반적인 사고방식이었습니다.
1970년대 초에 AT&T가 처음 배포한 UNIX 운영 체제는 오픈 소스의 유명한 예입니다. 1983년에 만들어진 GNU 프로젝트에 따라 UNIX용 소프트웨어가 만들어지고 배포되었고, 상업용으로 소유하는 폐쇄형 소스 버전의 UNIX는 나중에 출시되었습니다. 1991년에 개발자인 Linus Torvalds의 이름을 딴 새로운 프리 및 오픈 소스 커널인 LINUX는 빠르게 범용 표준으로 자리매김했고 이는 오늘날까지 이어지고 있습니다.
Open Software Foundation은 UNIX 개발 표준을 만들고 유지하기 위해 1988년 비영리 단체로 설립되었습니다. 이후 X/Open과 합병되어 The Open Group이 되었습니다. 하드웨어 제조업체와 소프트웨어 개발자의 부문을 대표하는 1,000명 정도의 회원을 보유한 The Open Group은 전문 인증을 제공하고 SUS(Single UNIX Specification) 및 Open Agile Architecture Standard와 같은 수많은 표준을 유지하고 있습니다.
오픈 소스 모델의 이점
엔터프라이즈 수준에서 오픈 소스 개발은 IT 전문가와 사용자는 물론 개발자에게도 무수한 이점을 제공합니다. 요청 기능의 구현 속도와 민첩성, 쉽게 확장할 수 있는 역량, 비용 효율성 모두 엄청난 이점을 제공합니다.
오픈 소스 개발 모델은 클라우드 그 자체와 매우 비슷합니다. 수정 및 기능은 여러 개발자 또는 팀에 배포한 후 다른 개발자가 검증하고 컴파일할 수 있습니다. 전담 리소스 양은 유연하며 필요한 곳에 더 많은 팀을 추가할 수 있습니다. 대부분의 오픈 소스 소프트웨어는 소규모 그룹에서 시작되는데, 이 그룹은 진행 중인 개발 작업에 커뮤니티가 기여할 때까지 점점 진화합니다.
이는 또한 개발 중 나타난 과제를 해결하는 다양하고 새로운 솔루션을 만들 수 있는 더 뛰어난 역량을 가진 인재들을 끌어들입니다. 오픈 소스 소프트웨어의 유지 보수를 위해 작업하는 그룹은 벤더가 수정 사항이나 새로운 기능을 제공할 때까지 기다릴 필요 없이 자체적으로 소프트웨어를 만들 수 있습니다.
오픈 소스 소프트웨어는 또한 상당한 비용 효율성과 이점을 제공합니다. 대부분의 소프트웨어는 무료로 배포됩니다. 오픈 소스의 지속적인 개발에 필요한 시간과 비용에 대한 투자는 전체 커뮤니티에 공유됩니다. 사용자가 제3자에 계약적으로 종속되지 않아 공급업체 고정은 더 이상 문제가 되지 않습니다.
엔터프라이즈가 진정으로 혁신의 속도에 발맞춰 움직일 수 있다는 것이야말로 가장 중요한 이점입니다. 더 나은 비용 관리, 더 빠른 개발과 구현, 그리고 지속적인 유지 보수를 효과적으로 크라우드소싱할 수 있는 역량 등 오픈 소스 소프트웨어의 이점은 자명합니다.
프리 소프트웨어, 클로즈드 소스 소프트웨어, 오픈 소스 소프트웨어의 비교
상업적으로 릴리스되든 퍼블릭 도메인에서 릴리스되든 오늘날 사용 가능한 거의 모든 소프트웨어는 세 가지 정의 중 하나에 해당됩니다. “클로즈드 소스” 소프트웨어는 이해하기에 가장 쉬운 정의인 반면, “프리 소스” 및 “오픈 소스”는 몇 가지 근본적인 차이에도 불구하고 때때로 같은 의미로 사용됩니다. 둘 사이의 많은 크로스오버 때문에 FOSS라는 용어가 프리 소스인 동시에 오픈 소스인 소프트웨어를 설명할 때 자주 사용됩니다.
클로즈드 소스 소프트웨어
클로즈드 소스 소프트웨어는 일반적으로 보호된 형식으로 암호화되고 컴파일됩니다. 명시적 허가 없이 소스 코드를 디컴파일, 수정, 재컴파일, 재배포할 수 없다는 구체적인 동의와 함께 제공됩니다. 클로즈드 소스 소프트웨어의 예로 Microsoft의 Windows 또는 Apple의 Mac OS와 같은 상용 컴퓨터 운영 체제를 들 수 있습니다. 이 운영 체제는 개발자의 지적 재산으로 여겨지며, 두 회사 모두 자산의 제품을 보호하기 위해 상당한 노력을 기울이고 있습니다.
프리 소프트웨어
프리 소프트웨어는 비영리 Free Software Foundation이 정의한 “네 가지 본질적인 자유”를 누린다는 정의하에 배포됩니다. 목적에 따라 소프트웨어를 실행하고 소스 코드를 학습 또는 변경하며 원본 소프트웨어를 재배포하고 수정된 버전을 재배포할 수 있습니다. “프리”는 가격이 아니라 이 네 가지 자유를 나타냅니다. 상업적으로 릴리스된 프리 소스 소프트웨어 타이틀은 실로 다양합니다.
오픈 소스 소프트웨어
오픈 소스 소프트웨어는 개발자 커뮤니티가 프리 소스 소프트웨어의 한계라고 생각한 점을 해결하기 위해 1990년대 후반에 만들어진 Open Source Initiative로 규정된 정의에 속합니다. 위에서 언급한 바와 같이 오픈 소스에는 다른 사용자에게 부여하는 라이선스만큼이나 개발자의 철학이 담겨 있습니다. Open Source Initiative는 소프트웨어를 무료로 재배포할 수 있고 소스 코드를 공개할 수 있으며 수정하여 다른 형식으로 배포할 수 있고 개인이나 그룹을 차별하지 않으며 다른 소프트웨어의 사용을 제한하지 않는다고 명시하고 있습니다.
오픈 소스 개발 모델이란?
오픈 소스 개발 모델은 기존의 개발 조직이 오픈 소스 모델을 점점 더 많이 도입하고 있음에도 불구하고 기존 모델과 차별화되는 프로세스와 가치로 정의됩니다. 오픈 소스 개발에서 강조되는 점은 협업, 피어 검토, 그리고 업데이트를 더 자주 할 수 있는 “초기에, 자주 릴리스하라”는 철학입니다.
오픈 소스 개발의 기능 요청 프로세스는 일관됩니다. 기능, 수정, 업데이트를 제안하면 오픈 소스 모델의 기능 요청 프로세스에서는 설계 및 구현 전에 제안 사항을 그룹별로 의논하고 검증합니다. 새 버전이 컴파일되면 테스트, 피드백, 추가 입력을 위한 알파 릴리스로 커뮤니티에서 공유됩니다.
오픈 소스 모델의 핵심은 여러 개인 또는 소규모 그룹이 소스 코드의 생성과 유지의 책임을 공동으로 진다는 것입니다. 이러한 업데이트는 팀 전체에 걸쳐 완전히 투명하게 코드를 테스트하고 검증하기 위해 여러 그룹 간에 공유됩니다. 프로젝트를 구현할 준비가 되면 코드는 소프트웨어의 유지 보수 또는 관리자에게 전달되며, 관리자는 새로 제출된 모든 코드가 프로젝트 표준을 충족하는지 책임지고 확인해야 합니다.
오픈 소스 소프트웨어 솔루션이 적용되는 방식
IT 기업의 95%가 인프라 모더나이제이션, 애플리케이션 개발 및 DevOps용으로 오픈 소스를 사용하면서 오픈 소스 소프트웨어를 도입하여 대규모 마이그레이션을 도모하고 있습니다.
예를 들어, LINUX 운영 체제는 오픈 소스 모델, 즉 환경 자체뿐만 아니라 그 안에서 실행되도록 설계된 수백 개의 오픈 소스 애플리케이션을 완벽하게 설명합니다. 이는 인프라의 유일한 예가 아닙니다. Xen, KVM 및 OpenStack도 모두 오픈 소스입니다.
빅 데이터의 경우 Apache의 Hadoop 플랫폼과 Spark 데이터 분석, MongoDB의 Atlas Database 모두 오픈 소스 모델에서 개발된 소프트웨어의 대표적인 예입니다. 기계 학습 애플리케이션으로는 Apache MXNet, PyTorch 및 TensorFlow 등이 있습니다.
오늘날 거의 유비쿼터스로 사용되는 오픈 소스 소프트웨어의 다른 예로는 WordPress, PHP, jQuery, Angular, Ruby on Rails와 같은 웹 개발 툴과 프레임워크가 있습니다. 모바일 애플리케이션의 경우 Google의 안드로이드 OS가 널리 채택된 반면 Apache Cordova는 크로스 플랫폼 모바일 애플리케이션 개발을 위한 대중적인 오픈 소스 프레임워크입니다.
오픈 소스와 HPE
개방적인 협업은 HPE의 DNA에 내재되어 있습니다. HPE는 오픈 소스 기술과 커뮤니티를 기반으로 혁신적인 솔루션을 규모에 따라 안전하게 제공할 수 있다고 생각합니다. HPE는 다양한 엔터프라이즈 수준 애플리케이션에 걸쳐 수많은 오픈 소스 소프트웨어 솔루션을 제공합니다. 이에 몇 가지 오픈 소스 프로젝트를 지원 및 사용하고, 이에 기여할 수 있음을 자랑스럽게 여기고 있습니다.
Chapel은 확장형 컴퓨팅을 목표로 하는 병렬 프로그래밍 언어로 데스크톱과 노트북에서 최고 수준의 고성능 컴퓨팅 애플리케이션으로 이동할 수 있습니다.
SmartSim은 기존의 고성능 컴퓨팅 애플리케이션에서 ML(기계 학습) 및 AI(인공 지능)를 지원하여 연구자에게 온라인 분석, 모델 조정, 시각화와 같은 시뮬레이션용 추가 기능을 제공합니다.
KubeDirector는 표준 Kubernetes 클러스터에 스테이트풀 애플리케이션을 쉽게 구축할 수 있는 오픈 소스 Kubernetes 사용자 지정 컨트롤러입니다. 메타 데이터와 구성 아티팩트를 기준으로 애플리케이션 특성을 정의하기 때문에 애플리케이션을 더 쉽게 배포하고 업데이트할 수 있습니다.
SPIFFE는 Cloud Native Computing Foundation의 일부인 범용 ID 컨트롤 플레인입니다. 즉, 다양한 플랫폼을 지원하는 암호화 ID를 사용하여 동적 및 이기종 환경에서 서비스를 인증하기 위한 표준 세트입니다. SPIRE는 다양한 환경에 SPIFFE를 구현하는 오픈 소스 시스템입니다.