필자의 회사에서 Service 형태의 모니터링 App 개발을 요청 받았다.
winform, wpf 가 아닌 service 로 개발을 해야 하는 이유가 뭐였을까.
그것은 service app 의 '특성'을 파악하면 정답이 나온다.
특성에 대해서 한번 살펴 보도록 하자.
목차
- Windows Service 는 무엇인가?
- Service App 장단점과 Desktop App과의 차이점
- Service App 활용
1. Windows Service 는 무엇인가?
간략하게 설명하자면 아래와 같다.
Windows Service는 OS가 구동되며 시스템에 의해 백그라운드에 자동으로 실행되는 프로그램이다. 일반적으로 콘솔이나 UI 프로그램과 달리, Session 0 이라고 불리는 백그라운드에서 실행되기 때문에 사용자가 UI 출력을 볼 수 없다.
말로만 하면 사실 이해가 쉽지 않다.
백문이 불여일견
뭐라도 직접 해보자.
윈도우 유저라면 윈도우 + R > services.msc 로 현재 등록된 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 Service | Desktop 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 |
|---|