Nuke Olaf - Log Store

Apache - 동적공유객체 DSO 란? 본문

Language/[PHP]

Apache - 동적공유객체 DSO 란?

NukeOlaf 2020. 1. 20. 18:44

1. Dynamic Shared Objects 의 사전적 의미

dynamic : marked by usually continuous and productive activity or change, energetic, foceful

지속적으로 생산적인 활동이나 변화를 의미한다.

dynamic 은 영한사전적 의미로는 "역동적인"이라는 뜻으로 나오는데, 지속적으로 어떤 변화가 있는 공유할 수 있는 객체라는 의미로 해석할 수 있을 것 같다.

 

2. apache 에서 말하는 Dynamic Shared Objects

apache 공식 사이트에서 설명하는 DSO

아파치 웹서버는 관리자가 모듈들을 선택하여 서버에 포함할 기능을 결정할 수 있는 모듈화된 프로그램이다.

서버를 컴파일할때 httpd 실행파일에 정적으로 모듈을 컴파일할 수 있다. 모듈을 httpd 실행파일과 분리하여 동적 공유객체 (Dynamic Shared Objects, DSO)로 컴파일할 수 있다. DSO 모듈은 서버를 컴파일할때 컴파일하거나, Apache Extension Tool(apxt)을 사용하여 나중에 컴파일하여 추가할 수 있다.

 

설명을 읽다보니 아파치가 모듈화된 프로그램이라는 말이 잘 이해가 안된다.

관련내용을 찾아보자. : https://www.interserver.net/tips/kb/commonly-used-apache-modules/

더보기

Apache 는 세계에서 가장 널리 사용되는 웹서버이다. Apache HTTP Server 가 풀네임이다. Apache 는 유연성이 특징이다. 아파치는 모듈개념으로 구현되어 있는데, 모듈을 사용하면 Apache 추가 기능을 수행할 수 있다. 즉, 모듈을 사용하면 Apache 서버를 확장할 수 있다는 뜻이다. 개발자는 필요에 따라 Apache 의 모듈을 추가 및 제거하며 Apache 를 구성할 수 있다. 아파치를 설치할때 따로 모듈을 추가하거나 제거하지 않으면, 아파치는 사전에 설치된 모듈과 함께 제공된다.

Apache 를 깔기 위해서는 Apache 모듈에 무엇이 있고, 내가 원하는 요구사항이 무엇인지에 따라 어떤 모듈이 필요한지 이해하는 것이 중요하다는 생각이 들었다.

< 일반적으로 사용되는 Apache 모듈 >

1) Mod_security : 이름에서 알 수 있듯이, 서버의 보안을 처리하는 모듈

2) Mod_rewrite : URL 을 다시 작성하여 리디렉션을 수행하는데 사용되는 모듈

3) Mod_deflate : 클라이언트로 보내기 전에 웹 서버의 출력을 압축해주는 모듈

4) Mod_cache : 서버 성능을 향상시키기 위해 일반적으로 요청되는 컨텐츠를 캐싱하는 모듈

5) Mod_proxy : 아파치 서버용 프록시 게이트웨이를 구현, 일반적으로 사용되는 많은 프로토콜과 부하 분산 알고리즘을 지원한다. 이 모듈을 사용하기 위해서는 모듈세트를 로드해야한다.

6) Mod_ssl 

아파치 공식 사이트에서 볼 수 있는 모듈 목록 : https://httpd.apache.org/docs/2.4/ko/mod/

 

3. DSO 를 사용하는 이유

- 출처 : http://www.linuxlab.co.kr/docs/00-05-4.htm

DSO(Dynamic Shared Object)

아파치의 설치 방식은 두 가지가 있다. 하나는 DSO(Dynamic Shared Object) 동적 모듈적재 방식이고 하나는 Static Object라고 하는 방식이다. DSO방식은 아파치를 먼저 컴파일하고 다른 모듈들을 추가로 설치할 때는 아파치를 재 컴파일하지 않고 한번 설정되어 컴파일된 아파치를 계속 사용하는 것이다. 즉, DSO방식은 아파치를 단 한번만 컴파일한다는 것이다. 이점은 관리, 설치면에서 커다란 장점이다.
Static 방식은 설치면에서 추가로 모듈을 설치하려고 하면 설정하려는 모듈만 설정하고 컴파일하는 과정이 필요할 뿐만 아니라 아파치 또한 그에 따라 컴파일을 하여야 한다. 이는 관리면에서 단점이 될 수 있다. 시스템 측면에서 이 두 가지의 차이점이 있다.

먼저 DSO는 아파치에 설치된 모듈이 필요할 때 시스템에 적재된다. 이는 클라이언트의 요청에 응답하는 요청시간이 다소 느릴 수 있지만, 하드웨어의 속도가 뒷받침된다면 어느 정도 해결이 될 수 있는 부분이다. 여하튼 이런 방식(DSO)은 시스템의 리소스(메모리, CPU)들을 적절하게 효율적으로 사용한다고 볼 수 있다. 이 방식은 아파치의 1.3.x 버전의 후반 버전에 나온 실험적인 성격을 가졌지만, 이젠 거의 안정 수준에 올라온 것으로 보고 있다.

또 다른 방식인 Static 방식은 이전 방식(DSO)와는 다소 차이가 있다. 이 방식은 아파치에 추가된 모듈이 아파치의 기동과 함께 모든 모듈을 포함하여 시스템에 적재한다. 만약 아파치의 기동과 함께 적재된 어떤 모듈이 클라이언트에 의해 거의 쓰지 않는다면 쓸데없이 시스템 리소스를 점유하고 있으므로 이는 비효율적이라 볼 수 있다. 또한 아파치와 각 모듈들은 설치시 복잡하다. 각 모듈과 설정된 아파치에 또 다시 모듈을 추가하려 할 때 아파치와 모듈을 다시 컴파일하여야 한다.

Comments