본문 바로가기
OS/Windows

Windows Service?

by 잘 까먹는 다람쥐 2025. 1. 28.

필자의 회사에서 Service 형태의 모니터링 App 개발을 요청 받았다.
 
winform, wpf 가 아닌 service 로 개발을 해야 하는 이유가 뭐였을까.
 
그것은 service app 의 '특성'을 파악하면 정답이 나온다.
 
특성에 대해서 한번 살펴 보도록 하자.


목차

  1. Windows Service 는 무엇인가?
  2. Service App 장단점과 Desktop App과의 차이점
  3. Service App 활용

1. Windows Service 는 무엇인가?

간략하게 설명하자면 아래와 같다.

Windows Service는 OS가 구동되며 시스템에 의해 백그라운드에 자동으로 실행되는 프로그램이다. 일반적으로 콘솔이나 UI 프로그램과 달리, Session 0 이라고 불리는 백그라운드에서 실행되기 때문에 사용자가 UI 출력을 볼 수 없다.

 
말로만 하면 사실 이해가 쉽지 않다.
 
백문이 불여일견
뭐라도 직접 해보자.
 
윈도우 유저라면 윈도우 + R  > services.msc 로 현재 등록된 Service App 들을 쉽게 확인 할 수 있다.

여기에 등록된 모든 것들이, 각각의 Service App인 것이다!

 
즉, Service App 은 간단히 말하면 메모장, Excel 과 같은 프로그램 과 다르게 GUI(화면)가 없는 프로그램이다.
 
GUI 도 없어 어떻게 실행되는 지 확인이 힘든 Service app 을 Windows 에서는 왜 별도로 구성한걸까?
 
그 이유를 GPT 한테 한번 물어보자. ㅋㅋ

GPT Said

백그라운드 작업의 안정성 및 지속성
> Service Application은 사용자의 개입 없이도 특정 작업(예: 로그 기록, 네트워크 모니터링, 데이터 백업 등)을 안정적으로 수행하도록 설계되었습니다.사용자가 로그아웃하거나 세션이 종료되어도 중단되지 않으며, 이는 Session 0에서 실행되기 때문에 가능합니다.

시스템 자원의 효율적 관리
> 백그라운드 작업은 사용자 애플리케이션보다 높은 권한과 자원 관리를 요구합니다.Windows Service는 운영 체제 부팅 시 초기화되며, 필요에 따라 자원을 효율적으로 할당하거나 종료 시에도 안전하게 정리됩니다.

보안 및 권한 관리
> Windows Service는 시스템 권한으로 실행되거나 특정 사용자 계정의 권한으로 실행될 수 있어, 보안 측면에서 더 강력합니다.사용자 세션에서 동작하는 데스크톱 애플리케이션과 달리, 서비스는 사용자와 독립적으로 설계되어 더욱 안전한 환경을 제공합니다.

사용자 환경 분리
> 데스크톱 애플리케이션은 사용자와의 상호작용을 기반으로 하지만, Windows Service는 UI 없이도 동작합니다.이로 인해 사용자 세션(Session 1 이상)에서 발생하는 충돌이나 문제가 Service Application(Session 0)에 영향을 미치지 않도록 설계되었습니다.

다양한 시나리오 지원
> Windows Service는 서버 환경(예: 데이터베이스 서버, 파일 서버)이나 대규모 시스템에서 지속적이고 신뢰할 수 있는 동작을 보장합니다.데스크톱 애플리케이션과 목적이 달라, 이 둘을 분리 설계함으로써 다양한 요구 사항을 충족할 수 있습니다.

 
모든 이유를 종합하면 윈도우는 세션을 분리해서 Desktop App 보다 더 안정적이고 신뢰성이 있는 프로그램을 운용하고자 한다는 내용이다.
 
GPT 의 도움으로, 이제는 Windows 의 프로그램이 Service App 와 Desktop App으로 나누어져 구성되어 있다는 사실을 알았다!


2. Service App 장단점과 Desktop App과의 차이점

이미 앞서 설명한 내용으로 Service App에 대해 전반적으로 파악이 되었겠지만,
다시 한 번 Service App 의 장단점과 Desktop App과의 차이점을 정리해보았다.

장단점

[장점]

  • 서비스 프로그램은 윈도우가 부팅 된 이후에로그인 되지 않은 상태에서도 구동이 가능하다.
  • 일반적으로 Local System Account로 구동되기 때문에 시스템을 제어하는데 필요한 강력한 권한을 가지게 됨으로 서비스를 설치할 때 혹은 특별하게 로그온에 필요한 사용자를 변경하지 않는 이상 지속적으로 권한을 행세할 수 있다.
  • 시스템 경로에 파일쓰기, 프로그램 파일 경로에 파일쓰기, 로컬 시스템 레지스트리 액세스, UAC와 같은 모든 작업에 영향을 받지 않는다.
[단점]
  • GUI 가 없다.
  • 데스크탑과의 연계가 어렵다.
    (로그온 되기 이전에 SYSTEM 계정으로 실행되기 때문에, 특정 로그온된 유저와 연계되어 작업을 수행해야 할 때 까다로운 절차를 거쳐야 한다)
  • 디버깅이 어렵다.
  • 파일 처리나 MMF의 생성 등과 같은 작업에 제약
    (서비스에서 파일을 생성하면, Users 그룹은 읽기와 수행 권한만 제공, 즉 수정이나 쓰기 권한은 배제)
    (MMF (Memory Mapped File)의 경우 서비스에서 생성하게 되면 User 권한에서는 읽기 전용으로 여는 것도 불가)

 

주요 차이점

구분Windows ServiceDesktop Application
실행 시점부팅 시 자동 시작 가능사용자가 수동으로 실행
실행 위치Session 0 (백그라운드)Session 1 이상 (사용자 환경)
사용자 인터페이스없음GUI 제공
종료 방법서비스 관리 도구 또는 명령어로 제어사용자가 직접 종료 가능
용도시스템 작업, 백그라운드 프로세스사용자 작업, 상호작용 중심

 


간략하게 나마 특성에 대해 알았으니, 우리는 개발 목적에 따라서 App의 형태를 선택할 수 있게 된다.
 
필자의 경우는 모니터링 App 에 대한 개발이 필요했고, 
모니터링 App은 서버가 재기동이 되어도 기능이 유지되어야 했기 때문에, Service 의 형태의 App 개발 고려한 것이다.
 
본 글을 읽은 독자는 Windows App을 개발할 때 목적에 맞게 선택하기를 바란다.
 
다음으로는, Service App 사용법에 대해서 알아보자


3. Service App 활용

3.1 시작 유형 설정

Service App 은 속성 에서 서비스의 시작 유형을 설정하여 Window 가 boot 될 때 자동적으로 실행 할 지 여부를 선택 할 수 있다.

 

  • 자동(지연된 시작) : Windows 가 시작 되면 Auto 로 실행된다. (우선순위 :2)
  • 자동 : Windows 가 시작 되면 Auto 로 실행된다. (우선 순위 :1)
  • 수동 : Windows 가 시작되어도 자동적으로 실행되지 않는다. (직접 수동 실행)
  • 사용 안함 : 미사용 시 설정

 

3.2 로그온

 
해당 서비스 프로그램 실행 시, 특정 로그온 계정을 지정할 수 있다.
기본적으로는 Local System 계정으로 실행된다.

'OS > Windows' 카테고리의 다른 글

Windows에서 대량의 파일 개수를 빠르게 세는 방법  (0) 2025.03.25