프로필사진
DevOps 부트캠프 기록일지
DevOps_04_김재환
05_Study(데몬과 서비스)
05_Study(데몬과 서비스)

2023. 3. 13. 13:56부트캠프/DevOps (TIL)

데몬과 서비스의 차이

 

서버 관리 등의 용도로 사용되는 backgroud process에 대해, Linux에서는 데몬, Windows에서는 서비스라고 부릅니다. 말그대로 백그라운드에서 동작하는 기능을 관리하며 사용자가 명시적으로 시작하지 않아도 자동으로 실행됩니다. 이러한 기능적 공통점 때문인지 Windows에서도 데몬이라는 용어가 자주 쓰이고, Linux에서는 포트/프로토콜 정보를 정의해놓은 /etc/services가 따로 존재하기 때문에 두 OS에서 데몬과 서비스는 혼용되어 쓰입니다.

 

하지만 데몬과 서비스는 동의어는 아닙니다.

 

Linux의 데몬

  • 데몬 == background process
  • 둘 이상의 데몬이 한 프로세스 밑에서 동작하는 경우는 없다.
  • 실행 파일만 데몬으로 구동된다.
  • 데몬 = 프로세스

Windows의 서비스

  • 프로세스와 서비스는 1:1관계가 아니다. 즉, 한 프로세스에서 둘 이상의 서비스를 실행할 수 있다.
  • 실행 파일 뿐만 아니다 dll도 서비스로 구동된다.
  • 서비스 < 프로세스

데몬은 보통 syslogd, httpd 처럼 프로그램 이름 끝에 d 가 붙습니다.이러한 데몬은 상시 실행되며 주로 다음과 같은 일을 합니다.

  • 하드웨어 장치 관리
  • 보조 기억장치와 디렉토리의 연결(마운트)
  • 네트워크를 통한 프로세스간 통신(소켓)
  • 애플리케이션 수준의 서비스 제공

이 중에서 “애플리케이션 수준의 서비스”를 보통 서비스라고 간략하게 줄여서 부릅니다. 같은 프로그램을 지칭할 때 때때로 서비스와 데몬이라는 용어가 서로 번갈아가면서 등장할 수 있어요. 운영체제의 관점에서는 “데몬”이며, 사용자의 관점에서는 “서비스”라고 불릴 따름입니다.

 

대표적인 데몬의 예: 웹 서버 (httpd)

 

사용자가 어떤 웹 페이지에 접근하고 원하는 결과를 얻으려면, 웹 페이지를 제공하는 프로세스가 상시 실행중이어야 할 것입니다. 이러한 프로그램을 “웹 서버” 라고 하며, 일반적으로 백그라운드에서 작동되므로, 이를 데몬이라고 부를 수 있습니다.

 

httpd 실습

다음 예제는 간단한 HTML 파일을 만들어 웹 서버에 띄운 후, curl 이라는 유틸리티를 이용해 해당 주소로 접속해보는 실습입니다. curl로 해당 주소에 접속할 때, 접속 여부에 따라 웹 서버가 데몬으로 작동되고 있는지 아닌지를 확인할 수 있습니다.

당장 아래의 모든 과정을 완벽하게 이해하지 못해도 좋습니다. 명령어를 그대로 따라서 쳐보는 것만으로도 충분합니다.

busybox는 각종 유틸리티를 담은 일종의 “스위스 군용 칼”과 같은 리눅스용 애플리케이션으로, 아주 단순한 기능을 가진 웹 서버(httpd)를 포함하고 있습니다.

httpd는 기본적으로 데몬으로 실행되며, 위의 실습처럼 백그라운드에서 돌면서, 목적에 맞는 기능(여기서는 웹 서버의 역할)을 수행합니다.