공부용 블로그

Open Source SW와 License란? 본문

설계/WebServer

Open Source SW와 License란?

tomato212 2018. 8. 2. 05:50

Q. Web server가 open source인데 유료인 경우도 있을까?


=> 있음


Q. 라이센스마다 소스 공개 범위가 다르다면 내 서비스는 어디까지 공개하는게 좋을까?


=> 생각해봐야 함 

=> 아래 소스 코드 공개여부에 관한 규정을 보고난 뒤 소스 코드 공개안할 수 있는 라이센스가 많다는 걸 알게됨. 

     즉 소스코드 공개 안해도 되는 라이센스 쓰면 됨.


-----------------------------------------------------------------------------------------------------------------------------


Q. Open Source SoftWare 란 무엇인가?

소스코드가 공개되어 있는 소프트웨어.

일반적으로 자유롭게 사용, 복제, 배포, 수정할 수 있다. 

오픈소스 소프트웨어의 대표적인 예로는 Linux 커널, 아파치 웹서버, FireFox 웹 브라우저, MySQL 등이 있다.


Q. Open Source SoftWare License 란 무엇인가?


-> 1980년대에 소프트웨어 시장이 커짐 

-> 지적재산권 및 라이센스 계약을 통해 소프트웨어의 사용, 복제, 배포, 수정을제한을 하려는 움직임이 나타남

   (소프트웨어 시장이 커지니까 지적재산권, 라이센스 등으로 돈벌려고..?)

-> 이러한 움직임에 반대한 리처드 스톨만(Richard Matthew Stallman)은 

    FSF(Free SoftWare Foundation) 설립 -> 자유 소프트웨어 운동 시작

-> '자유'라는 단어가 사용자들에게 '무료'로 인식, 엄격한 조항때문에 기업들의 참여도 꺼려짐

-> '오픈 소스'라는 새로운 용어 사용하게 됨

-> 그 후 1998년, OSI(Open Source Initiative)가 결성되고 오픈소스 소프트웨어 활성화 

-> 현재까지 오픈소스 라이센스가 사용되고 있음


Q. 오픈소스 소프트웨어 라이센스 종류는?


* GNU General Public License(GPL) 2.0

-> GPL은 현재 가장 많은 오픈소스 소프트웨어(Linux 커널, 아파치 웹서버, FireFox 웹 브라우저, MySQL 등)가        채택하고 있는 라이센스

-> 오픈소스 라이센스 중 가장 많이 알려져있고, 의무사항들도 타 라이센스에 비해 엄격한 편


* GNU Lesser GPL(LGPL) 2.1

* Berkeley SoftWare Distribution(BSD) License

* Apache License 

* Mozilla Public License(MPL)

* MIT License


Q. '소스 코드를 공개해야 한다'는 것은 내가 개발한 어플리케이션 소스 공개해야 한다는 건가?

    (만약 내가 사용한 웹서버가 GPL 라이센스를 채택한 경우) 


=> 의미로는 맞음. 그러나 아래 관련 규정을 보면 공개하지 않을 수 있다.


(규정 참고) http://www.gnu.org/licenses/gpl-faq.ko.html#WhyUseGPL


 

'GPL 프로그램을 개작한 뒤에 개인적인 목적으로 사용하고 있다면 개작된 소스 코드를 공개하지 않아도 무방합니다.'


=> 즉, 오픈 소스를 내가 수정해서 썼어도 개인적인 목적으로 사용한다면 내 소스 코드를 공개하지 않아도 된다.


Q. 오픈 소스(웹서버의 소스)를 수정해서 쓴 뒤에 내 어플리케이션을 상업적인 목적 혹은 무료 서비스로 사용하는 경우는?


'만약 어떠한 방식으로든지 개작된 버전을 공표하고 있다면, 사용자들이 개작된 버전의 소스 코드를 GPL에 따라 이용할 수 있도록 해야만 합니다.'


=> 수정한 부분만 공개하면 된다. (확인필요)



*개작 : 작품이나 원고 따위를 고쳐 다시 지음. 또는 그렇게 한 작품



=> GNU 홈페이지에 자세한 내용이 나와있으나 다 이해하기에는 어려움이 있음. 

     현재 내가 이해해야하는 오픈소스 소프트웨어의 라이센스에 대한 정의소스코드 공개에 대한 의미를 파악했으므로 

     일단 공부는 여기까지. 나중에 더 깊은 이해가 필요할때 참고사이트 다시 찾아보자.


--------------------------------------------------------------------------------------------------------------------------------

Q. apache server는 왜 동시연결에 비효율적일까?


웹 브라우저는 웹 서버에 대한 여러 개의 TCP 연결을 열어 각 사용자 세션의 페이지 렌더링 시간을 줄여 자원을 즉시 병렬로 다운로드 할 수 있도록합니다. 브라우저는 사용자가 세션 중에 요청할 수 있는 지연 시간을 줄이기 위해 일정 기간 동안 이러한 연결을 계속 유지합니다 (keep Alive)

각각의 열린 연결은 독점적으로 httpd 프로세스를 예약합니다. 이렇게 생성 된 많은 수의 httpd 프로세스로 인해 서버에 상당한 부하가 발생하여 성능이 저하되고 잦은 충돌이 발생할 수 있습니다. 연결 모델 당 프로세스에 따라 Apache는 많은 동시 연결을 처리하는 데 효율적이지 않습니다.


아파치는 공통 RAM, CPU 및 기타 자원을 놓고 경쟁하는 수많은 프로세스를 생성합니다.



Q. apache server에 여러가지 모듈이 있는데 모듈을 사용하는 것에 대한 장점은?




Q. 다중처리모듈(MPM)에 의해 수행되면 왜 처리가 빠를까?