로그인 / 등록 Account

오픈소스

오픈소스 소프트웨어란?

Jump to section

오픈소스 소프트웨어는 최종 사용자가 소스 코드를 합법적으로 사용할 수 있도록 특별한 라이센스를 통해 릴리스됩니다. 이러한 라이센스는 여러 가지가 있지만, 일반적으로 다음과 같은 소프트웨어를 오픈소스 방식이라고 간주합니다.

  • 추가 비용 없이 소스 코드 형식으로 제공됩니다. 즉, 사용자는 소프트웨어를 구성하는 코드를 볼 수 있으며, 원하는 경우 얼마든지 변경할 수 있습니다.
  • 소스 코드를 새 소프트웨어에 다른 용도로 사용할 수 있습니다. 즉, 누구든 해당 소스 코드를 활용해 자신의 프로그램을 만들고 이를 배포할 수 있다는 뜻입니다.

오픈소스 소프트웨어는 무료인가요?

오픈소스 소프트웨어가 반드시 무료로 제공되는 실행 가능한 소프트웨어라는 의미는 아닙니다. 그러나 그 소스 코드는 무료로 제공되어야 합니다.

예를 들면, Red Hat® Enterprise Linux®의 소스 코드는 누구에게든 무료로 제공되지만(직접 확인하세요), 이러한 소스 코드를 실행 가능한 코드로 변환하는 데는 전문 지식과 시간, 서버가 필요합니다. 조직에서 소스 코드를 재구성하지 않고도 바로 사용할 수 있는 Red Hat Enterpirse Linux용 프로덕션 레디 코드를 원한다면 서브스크립션이 있어야 합니다.

오픈소스 소프트웨어는 가끔 프리 소프트웨어 운동과 혼동되어, 오픈소스 자체가 "무료"를 의미한다고 잘못 여겨지는 경우가 많습니다. 프리 소프트웨어 운동은 1970년대 해커 문화에서 발전해 나간 것으로, 공식적으로 Richard Stallman이 시작했으며 GNU Project와 비영리 조직인 Free Software Foundation의 일환으로 시작되었습니다. 일반적으로 "프리 소프트웨어"는 최종 사용자의 자유를 강조하기 위한 것이지만, "무료"를 의미한다고 잘못 여겨질 때도 있습니다.

사실은 프리 소프트웨어도, 오픈소스 소프트웨어도 비용에 대해 언급한 바는 없으므로 두 소프트웨어 모두 합법적으로 판매하거나 무료로 제공될 수 있습니다. 이 두 방식의 주요한 차이점은 바로 공유에 있습니다. 프리 소프트웨어의 경우 소스 코드를 변경하고, 변경한 소프트웨어를 공유하려면 원래 프로젝트에 해당 변경 사항을 다시 공유해야만 합니다. 오픈소스 소프트웨어의 경우 이러한 제약은 없습니다.

이렇게 실질적인 차이점이 있긴 하지만, 프리 소프트웨어와 오픈소스 소프트웨어는 동일한 가치를 공유하기 때문에 둘 모두를 합친 "프리 오픈소스 소프트웨어(Free and Open Source Software, FOSS)"라는 용어가 널리 사용되고 있습니다.

FOSS와 독점 소프트웨어 비교

독점 소프트웨어와 FOSS의 핵심적인 차이는 소스 코드의 가용성에 있습니다. Microsoft Windows나 Adobe Photoshop 같은 독점 또는 상용 소프트웨어는 최종 사용자에게 소스 코드로 제공되지 않습니다. 그러나 Linux 커널(Red Hat Enterprise Linux의 기반)과 같은 프리 소프트웨어나 Google Chromium(Chrome 웹 브라우저의 기반)과 같은 오픈소스 소프트웨어는 각각의 라이센스를 통해 소스 코드로 제공됩니다.

Linux는 프리 소프트웨어이기 때문에 Red Hat은 Red Hat Enterprise Linux를 구성하기 위해 변경한 사항을 오픈소스 커뮤니티에 공유합니다. 하지만 Chromium은 오픈소스 소프트웨어이므로, Google에는 Chrome을 구성하기 위해 변경한 사항을 커뮤니티에 공유할 필요가 없습니다.

오픈소스 라이센스의 유형도 다양합니다. 예를 들어, 누군가 다른 사람의 소스 코드를 사용해 새로운 소프트웨어를 만든 경우, 해당 개발자는 같은 라이센스를 통해 이를 릴리스해야 할까요(GNU GPL), 아니면 다른 라이센스로 릴리스할 수 있을까요(GNU LGPL)? 인터넷과 점점 인기가 높아지는 클라우드 컴퓨팅 모델은 오픈소스 소프트웨어를 기반으로 하지 않았다면 지금과 그 모습이 무척 달랐을 것입니다.

오픈소스 소프트웨어가 중요한 이유는 무엇인가요?

오픈소스 소프트웨어는 프로그래머만이 아니라, 모두에게 중요한 요소입니다. 폐쇄형 소스 모델에 비해 오픈소스 모델은 더 많은 사람들이 혁신을 실현할 수 있는 가능성을 열어주기 때문입니다. 예를 들어, 오픈소스 커뮤니티는 기술을 가진 사람은 누구든 참여해 코드에 기여할 수 있는 오픈소스 프로젝트를 기반으로 조직됩니다. 이러한 그룹은 독점 소프트웨어 팀과 마찬가지로 오픈소스 프로젝트에 기여하기 위한 표준을 유지하면서도, 기여하려는 모두에게 이러한 프로세스를 공개하고 있습니다.

이러한 오픈소스 개발 모델을 기반으로 오늘날 많은 사람들이 사용하는 중요한 애플리케이션과 클라우드 플랫폼이 탄생하게 되었습니다. 이중 가장 유명한 것은 대부분의 웹을 지원하는 서비스 스택 모델인 LAMP입니다. LAMP는 다음의 약자입니다.

  • Linux: 오픈소스 운영 체제(OS)이자 세계 최대 규모의 오픈소스 프로젝트
  • Apache: 초기 웹에서 핵심 역할을 한 오픈소스 크로스 플랫폼 웹 서버
  • MySQL: 대부분의 데이터베이스 기반 웹 애플리케이션에서 사용하는 오픈소스 관계형 데이터베이스 관리 시스템
  • PHP: 소프트웨어 개발에 사용되는 범용 스크립팅 언어(가끔 Perl 또는 Python 언어로 대체됨)

널리 사용되는 오픈소스 기술의 다른 예로는 Android 모바일 OS, Mozilla Firefox 웹 브라우저, 널리 사용되는 버전 제어 시스템인 Git과 관련 Office 제품군인 OpenOffice 및 LibreOffice가 있습니다. 광범위하게 봤을 때 클라우드 컴퓨팅, 빅데이터, 인공지능 분야에서의 혁신은 대부분 오픈소스 소프트웨어 프로젝트부터 시작되었습니다. 

오픈소스 소프트웨어는 초기 웹 및 오늘날 널리 사용되는 일부 애플리케이션에서 중요한 역할을 할 뿐만 아니라, 비즈니스 및 개인 프로그래머에게도 이점을 제공합니다. 소스 코드를 공개하면 누구든 보다 쉽게 연구하여, 새로운 프로그래밍 기술을 개발할 수 있습니다. 또한 학생은 오픈소스 라이센스를 통해 코드를 편집하고, 이를 친구 또는 보다 광범위한 오픈소스 커뮤니티와 공유하며, 기존 오픈소스 프로젝트를 수정해 실질적으로 커뮤니티에 기여하는 등 실습을 할 수 있습니다.

오픈소스 소프트웨어는 기업이 구체적인 요구 사항에 맞게 커스터마이징하거나, 원래 소스코드에는 포함되지 않았던 새로운 사용자 경험으로 혁신할 수 있도록 지원하기도 합니다. 소스 코드가 공개되며 이를 지원하는 활발한 커뮤니티가 있는 경우 더 많은 개발자가 보안 취약점을 찾아낼 수 있으므로 오픈소스 소프트웨어를 선호하는 이도 있습니다.

오픈소스 소프트웨어는 오픈소스 개발 모델의 결과입니다. 오픈소스 개발 모델은 분산형이며, 개방적인 협업과 피어 프로덕션을 권장합니다. 이는 소프트웨어 개발에 광범위한 영향을 미쳤으며, 그 핵심 원칙을 "오픈소스 방식"이라고 부르기도 합니다.

오픈소스 방식은 매우 효율적이어서 우수한 기술 인재를 모으기에 용이합니다. 기술 혁신의 상당수가 오픈소스 커뮤니티 내에서 일어나고 있으므로 전 세계가 오픈소스 소프트웨어를 사용하게 됩니다. 유명 웹사이트와 애플리케이션은 Linux, 쿠버네티스 및 Git 프로젝트에서 탄생한 경우가 많으며, 많은 사람들이 오픈소스 브라우저인 Firefox와 Chromium을 통해 인터넷에 액세스합니다.

필수 오픈소스 소프트웨어 제품

Red Hat Enterprise Linux logo

Red Hat Enterprise Linux는 베어메탈, 가상화, 컨테이너, 클라우드 환경 전반에서 애플리케이션을 확장하기 위한 오픈소스 OS입니다.

Red Hat OpenShift Logo

Red Hat OpenShift®는 Linux 컨테이너작업을 자동화하는 오픈소스 플랫폼인 쿠버네티스를 기반으로 하며, 하이브리드 클라우드 및 멀티클라우드 배포를 관리하기 위해 자동화된 풀스택 작업을 포함하고 있습니다.