오픈소스
오픈 소스(open source)란 소프트웨어의 소스 코드를 누구나 열람하고 수정할 수 있도록 공개한 것을 말한다. 대체로 무료로 배포된다. 오픈 소스 소프트웨어(Open Source Software, OSS)라고도 한다.
오픈 소스 기반의 운영체제(OS), 웹서버, DBMS, 플러그인, 프레임워크, 개발 툴, 웹 브라우저, 테스트 툴 등 다양한 오픈 소스 소프트웨어가 있다.
오픈 소스 소프트웨어의 경우 소스 코드가 공개되어 있고, 통째로 복사하는 것이 허용되는 라이선스를 따르기 때문에, 원저작자의 허가 없이 포크(fork)를 통한 새로운 소프트웨어 개발이 가능하다.
목차
종류
운영체제
- 유닉스(UNIX) : 1969년 미국 AT&T의 벨 연구소에 근무하던 켄 톰슨과 데니스 리치가 개발한 오픈 소스 기반의 운영체제이다. 유닉스를 기반으로 리눅스, AIX, BSD, 솔라리스, 안드로이드, iOS 등 다양한 운영체제가 개발되었다.
- GNU : 미국 리차드 스톨만이 유닉스 운영체제의 상용화에 반대하면서 만든 오픈 소스 기반의 무료 공개 운영체제이다. GNU 운영체제를 기반으로 GPL, LGPL, GFDL 등 다양한 저작권 유형을 만들었다.
- 안드로이드(Android) : 2003년 앤디 루빈이 만든 오픈 소스 운영체제이다. 2005년 구글이 인수하여 전 세계에 무료로 보급하였다. 삼성전자, LG, 화웨이, 샤오미 등 전 세계 스마트폰의 운영체제로 사용되고 있다.
- 타이젠(Tizen) : 삼성전자와 인텔 등이 주도하여 구글의 안드로이드와 애플의 iOS에 대항하기 위해 만든 오픈 소스 기반의 운영체제이다. 리눅스를 기반으로 개발했고, 삼성전자의 스마트폰, 스마트 카메라, 스마트워치, 스마트 TV 등에 사용되고 있다.
- 리눅스(Linux) : 기존의 유닉스(Unix) 운영체제를 소형화하여 PC와 서버컴퓨터 등에서 사용하기 위해 만든 운영체제이다. 오픈 소스 기반의 무료 소프트웨어이다.
- 페도라(Fedora) : 오픈 소스 기반의 리눅스 운영체제이다. 페도라를 기반으로 레드햇 리눅스가 개발되었다.
- 레드햇 리눅스(RHEL) : 미국 레드햇이 만든 기업용 리눅스 운영체제이다. 무료 오픈 소스이지만 기술지원은 유료로 제공되고 있다.
- 센트오에스(CentOS) : 레드햇 리눅스(RHEL)와 호환되는 오픈 소스 기반의 무료 운영체제이다. '센토스'라고 읽기도 한다. 레드햇 리눅스를 포크하여 Red Hat 상표만 삭제하고 다시 컴파일하여 만든 리눅스 제품으로서, 레드햇 리눅스와 사실상 동일하게 작동한다. 다만 미국 레드햇 회사의 유료 기술지원을 받을 수 없다.
- 데비안(Debian) : 이안 머독이 개발한 오픈 소스 기반의 리눅스 운영체제이다. 데비안을 기반으로 우분투가 개발되었다.
- 우분투(Ubuntu) : 남아프리카공화국 출신의 영국인인 마크 셔틀워스가 개발한 오픈 소스 기반의 리눅스 운영체제이다. 우분투는 남아프리카의 반투어로 "네가 있기에 내가 있다"는 뜻으로서 '다른 사람에 대한 인간적 배려'를 의미한다. 기존의 데비안을 포크하여 개발했다.
- BSD : 1977년 미국 버클리 대학교의 빌 조이가 주도하여 개발한 오픈 소스 기반의 운영체제이다. 유닉스를 기반으로 개발했다.
- FreeBSD : 미국 버클리 대학교에서 개발한 BSD 계열의 오픈 소스 운영체제이다.
웹서버
웹 애플리케이션 서버
- 톰캣(Tomcat) : 오픈 소스 기반의 웹 애플리케이션 서버(WAS) 소프트웨어이다. 아파치재단이 관리하고 있다. 영어로 'tomcat'이란 수고양이를 의미한다.
- 제이보스(JBoss) : 자바를 기반으로 하는 오픈 소스 웹 애플리케이션 서버(WAS) 소프트웨어이다. 미국 레드햇이 관리하고 있다. 2014년 11월 와일드플라이(WildFly)로 이름을 변경했다.
- 레진(Resin) : 미국 카우초(Caucho) 회사가 개발한 윈도용 오픈 소스 웹 애플리케이션 서버(WAS) 소프트웨어이다.
데이터베이스 관리 시스템
- 마이에스큐엘(MySQL) : 오픈 소스 기반의 관계형 데이터베이스 관리 시스템(RDBMS)이다. 1995년 몬티 와이드니어스가 개발했다. 'My'는 그의 큰 딸 이름이다.
- 마리아디비(MariaDB) : 기존의 MySQL 5 버전을 [[포크]하여 만든, 오픈 소스 기반의 관계형 데이터베이스 관리 시스템(RDBMS)이다. MySQL을 개발했던 몬티 와이드니어스가 개발했다. 'Maria'는 그의 어린 딸 이름이다.
- 큐브리드(Cubrid) : 한국의 ㈜큐브리드가 개발한 오픈 소스 기반의 관계형 데이터베이스 관리 시스템(RDBMS)이다. 2006년 ㈜큐브리드가 개발했고, 2008년 네이버㈜의 계열사로 편입되었다. 2010년 ㈜큐브리드가 분사하여 기술지원을 맡고 있다.
- 포스트그레스큐엘(PostgreSQL) : 오픈 소스 기반의 객체-관계형 데이터베이스 관리 시스템(RDBMS)이다. 포스트그레 에스큐엘이라고도 한다. 1982년 미국 버클리대학교 학생들이 개발한 인그레스(Ingres)를 개선한 제품이다.
- 파이어버드(Firebird) : 인터베이스(Interbase)를 기반으로 만들어진 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)이다. 파이어버드의 로고는 '불새'이다.
- 몽고디비(MongoDB) : 빅데이터와 같은 비정형 데이터를 분석하기 위해 사용하는 오픈 소스 기반의 데이터베이스 관리 시스템(DBMS)이다.
- 에이치베이스(HBase) : 하둡(Hadoop) 플랫폼을 위한 비관계형 분산 데이터베이스 관리 시스템(DBMS)이다. 구글의 빅테이블을 참고하여 자바로 개발했다. 아파치재단이 관리하고 있다.
- 카산드라(Cassandra) : 빅데이터 등 비정형 데이터를 처리하기 위한 비관계형 분산 데이터베이스 관리 시스템(DBMS)이다. 페이스북이 처음 개발했고, 아파치재단에서 관리하고 있다.
웹 브라우저
- 파이어폭스(FireFox) : 2002년 모질라재단이 개발한 오픈 소스 기반의 웹 브라우저이다. 마이크로소프트의 인터넷 익스플로러(Internet Explorer)에 대항하기 위해 기존의 넷스케이프 내비게이터를 계승하여 만들었다.
표준 프레임워크
- 스프링(Spring) : 자바 언어를 사용하여 응용 프로그램을 개발하기 위해 사용하는 오픈 소스 기반의 표준 프레임워크이다. 아파치재단이 관리하고 있다.
- 스트럿츠(Struts) : 자바 언어를 사용하여 응용 프로그램을 개발하기 위해 사용하는 오픈 소스 기반의 표준 프레임워크이다. 크레이그 맥클라나한(Craig McClanahan)이 처음 개발했고, 2000년 5월 아파치재단에 이관되었다.
- 전자정부 표준 프레임워크(eGovFrame) : 대한민국 정부가 공공기관 시스템 개발에 공동으로 사용할 목적으로 개발한 오픈 소스 기반의 표준 프레임워크이다. 기존의 스프링 프레임워크와 아이바티스(iBatis) 프레임워크를 활용하여 개발했다. 아파치 라이선스로 배포하고 있다.
- 아이바티스(iBatis) : 자바로 개발한 응용 프로그램을 SQL로 개발한 데이터베이스와 연결시켜 주는 역할을 하는 오픈 소스 기반의 표준 프레임워크이다. 아파치재단이 개발했다.
- 마이바티스(MyBatis) : 2010년 기존의 아이바티스(iBatis)를 포크하여 새로 업그레이드한 오픈 소스 기반의 표준 프레임워크이다. 아파치 라이선스를 따른다.
- 하이버네이트(Hibernate) : 객체 지향 언어인 자바의 클래스 파일을 관계형 데이터베이스의 테이블에 매핑해 주는 오픈 소스 기반의 표준 프레임워크이다. 2001년 개빈 킹(Gavin King)이 개발했다.
- 에이에스피닷넷(ASP.NET) : 동적 웹 페이지를 개발하기 위해 사용하는 오픈 소스 기반의 웹 프로그램 개발 표준 프레임워크이다. 미국 마이크로소프트가 기존 ASP 기술을 계승하여 개발했다.
- 노드제이에스(node.js) : 자바스크립트(JavaScript) 언어를 사용하여 서버 측 응용 프로그램을 개발할 수 있는 오픈 소스 기반의 I/O 프레임워크이다. 2009년 라이언 달(Ryan Dahl)이 개발했다. 기존의 자바스크립트는 프런트 엔드 개발에 주로 사용되었으나, node.js의 출현으로 자바스크립트를 이용하여 서버 측의 백 엔드까지 개발할 수 있게 되었다.
- 앵귤러제이에스(AngularJS) : 구글이 관리하는 오픈 소스 기반의 웹 어플리케이션 프레임워크이다.
- 하둡(Hadoop) : 여러 개의 저렴한 컴퓨터를 마치 하나인 것처럼 묶어 대용량 데이터를 처리하는 오픈 소스 소프트웨어 프레임워크이다. 주로 빅데이터 처리에 사용된다. 아파치재단에서 관리하고 있다.
- 스파크(Spark) : 오픈 소스 기반의 클러스터 컴퓨팅 프레임워크이다. 2009년 미국 UC 버클리대학교의 대학원생인 마테이 자하리아(Matei Zaharia)가 개발했다. 영어로 spark는 불꽃이 튀기는 것을 말하는데, 대용량 데이터를 마치 불꽃이 튀기는 것처럼 순식간에 처리한다는 것을 강조하기 위해 붙인 이름이다. 2010년 BSD 라이선스로 공개했고, 2013년 아파치재단에 넘겨서 아파치 라이선스로 변경되었다.
- 아두이노(Arduino) : 사물인터넷(IoT) 기기를 만들기 위하여 사용하는 오픈 소스 기반의 컴퓨팅 플랫폼을 말한다. C, C++ 등 다양한 언어를 사용하여 원하는 동작을 하도록 코딩을 한 후 기계어로 컴파일하여 마이크로컨트롤러(microcontroller) 보드에 업로드하면, 아두이노가 작동한다.
콘텐츠 관리 시스템
- 워드프레스(WordPress) : PHP 언어와 MySQL 기반의 오픈 소스 콘텐츠 관리 시스템(CMS)이다. 2003년 미국의 맷 멀런웨그(Matt Mullenweg)가 개발했다.
- 드루팔(Drupal) : PHP 언어로 개발된 오픈 소스 기반의 콘텐츠 관리 시스템(CMS)이다. 워드프레스가 사용자 중심으로 쉽고 편리한 기능을 빠르게 구현하는 것에 중점을 둔 반면, 드루팔은 개발자 중심으로 복잡한 기능을 모두 구현할 수 있다는 특징이 있다.
- 줌라(Joomla) : PHP와 MySQL로 만들어진 오픈 소스 기반의 콘텐츠 관리 시스템(CMS)이다.
- 무들(Moodle) : 오픈 소스 기반의 학습 관리 시스템(LMS)이다. 어떤 주제에 대한 웹 기반 강좌를 생성하고 학생을 초대할 수 있도록 하는 공개형 무료 LMS 솔루션이다.
개발 도구
- 이클립스(Eclipse) : 자바 컴파일러를 내장하고 있는 오픈 소스 편집기(editor) 겸 통합 개발 환경(IDE)이다. 2001년 IBM이 개발하였고, 2004년 이클립스재단이 설립되어 오픈 소스 프로젝트로 발전시켜 나가고 있다.
- 부트스트랩(Bootstrap) : 동적 웹사이트를 제작하기 위한 HTML 및 CSS 기반의 오픈 소스 라이브러리이다. 서버 측이 아니라 클라이언트 측에서 작동하는 프런트 엔드(front end) 웹 프레임워크이다. 2011년 트위터 개발자인 마크 오토(Mark Otto)와 제이콥 쏜튼(Jacob Thornton)이 처음 개발했다.
- 에밋(Emmet) : HTML, XML, XSL 문서 등을 편집할 때 빠른 코딩을 위해 사용하는 오픈 소스 플러그인이다. 원래 젠코딩(Zen Coding)으로 부르다가 에밋으로 이름을 변경했다. 매우 간단한 몇 가지 코드만 입력하면, 자동으로 완전한 HTML 코드를 생성해 준다. MIT 라이선스를 따른다.
- 루신(Lucene) : 1999년 더그 커팅(Doug Cutting)이 개발한 오픈 소스 기반의 정보 검색 소프트웨어 라이브러리이다. 2001년 아파치재단에 이관되었다.
- 피에이치피 마이 어드민(phpMyAdmin) : 웹 브라우저를 이용하여 MySQL이나 MariaDB를 관리하기 위해 사용하는 오픈 소스 기반의 데이터베이스 관리 도구이다.
- 탈렌드(Talend) : 미국 탈렌드(Talend) 회사가 개발한 오픈 소스 기반의 데이터 통합(DI) 및 ETL 솔루션이다. 2006년 개발되었고, 아파치 라이선스로 배포되고 있다. 주요 기능은 데이터 마이그레이션, ETL, 빅데이터 분석 등이다.
- 텐서플로(TensorFlow) : 구글이 개발한 오픈 소스 기반의 인공지능(AI) 개발 소프트웨어이다. C++ 언어로 개발되었고, Python 응용 프로그래밍 API를 제공한다. 2015년 아파치 라이선스로 공개되었다.
- 오픈스택(OpenStack) : 오픈 소스 기반의 클라우드 컴퓨팅 프로젝트이다. 일반적인 서버에서 클라우드 컴퓨팅 서비스를 생성하고 실행할 수 있게 해 준다. 아파치 라이선스로 배포되고 있다. 2010년 미국 항공우주국(NASA)과 랙스페이스 호스팅(Rackspace Hosting) 회사가 공동 개발했다. 2012년 오픈스택재단이 설립되어 관리하고 있다.
- 깃허브(GitHub) : 소프트웨어 분산 버전 관리(DVC) 툴인 깃(Git)을 사용하는 프로젝트를 지원하기 위한 웹호스팅 서비스이다. 깃허브는 전 세계 최대 규모의 오픈 소스 공유 사이트 겸 개발자 커뮤니티로 성장했다. 루비(Ruby) 언어를 사용하여 개발했다.
테스트 툴
- 제이미터(JMeter) : 아파치재단에서 만든 공개형 웹 서비스 부하 테스트 도구이다. 웹 애플리케이션 등 다양한 서비스의 성능을 분석하고 측정하기 위한 GUI 기반의 오픈 소스 테스트 도구이다.
- 버그질라(Bugzilla) : 1998년 테리 와이스만(Terry Weissman)이 개발한 오픈 소스 기반의 버그 추적 및 테스트 프로그램이다. 모질라재단에서 관리하고 있다.
- 소나큐브(SonarQube) : 프로그램 코드의 품질을 체크해 주는 오픈 소스 툴이다. 이클립스(Eclipse)에서 사용할 수 있는 SonarQube 플러그인이 무료로 제공되고 있다.
- 엔그라인더(nGrinder) : 2011년 네이버㈜가 개발한 오픈 소스 기반의 시스템 성능 테스트 툴이다.
웹 취약점 점검 툴
- 잽(ZAP) : Zed Attack Proxy의 약자로서, OWASP가 만든 오픈 소스 기반의 웹 취약점 점검 툴이다. 정식 이름은 OWASP ZAP이다. 자바 언어로 개발되었고, 리눅스, 윈도, 오에스텐 등 다양한 운영체제(OS)에서 작동한다. 플러그인 방식으로 다양한 기능을 추가할 수 있다. 전 세계 25개 언어로 번역되어 있다.
- 야스카(Yasca) : 웹 보안 취약점 점검을 위해 무료로 사용할 수 있는 소스 코드 진단 도구이다. Yasca는 Yet Another Source Code Analyzer의 약자이다. 2007년 마이클 스코베타(Michael Scovetta)가 개발했다.
- 파인드벅스(FindBugs) : 자바 프로그램의 버그를 찾아주는 오픈 소스 기반의 코드 분석기이다. 자바의 소스 코드가 아니라 바이트코드(bytecode)를 분석하여 버그 패턴을 탐지한다. 단독 실행형도 있고, 이클립스(Eclipse)나 젠킨스(Jenkins) 등에 플러그인 방식으로 삽입하여 사용하는 것도 있다.
- 피엠디(PMD) : 자바 프로그램의 오류나 비효율적인 코드를 찾아주는 소스 코드 분석기이다. 기본적으로 제공되는 탐색 규칙 이외에 사용자가 직접 원하는 규칙을 정하여 자바 소스 코드의 오류나 비효율적인 부분을 찾아낼 수 있다. 공식적으로는 어떤 것의 약자도 아니지만, 비공식적으로는 Programming Mistake Detector의 약자로 알려져 있다. 아파치 라이선스 등을 따르는 오픈 소스 무료 소프트웨어이다.
암호화폐
- 비트코인(bitcoin) : 2009년 사토시 나카모토가 개발한 세계 최초의 암호화폐이다. C++ 언어로 작성한 비트코인 프로그램 소스를 오픈했다.
- 이더리움(ethereum) : 2015년 비탈릭 부테린이 스마트 계약 및 탈중앙 플랫폼을 위해 오픈 소스로 개발한 암호화폐이다.