posted by 방랑군 2009. 9. 8. 10:36

Richard Ersek 및 Ken Jones

2개의 UI를 하나로

Microsoft의 1998 Professional Developer's Conference에서 COM+의 초기 테스트 버전이 소개되던 날 저녁에 우리는 당황한 한 프로그래머를 만났습니다. "도대체 Microsoft는 무슨 일을 하고 있습니까?" 그가 질문했습니다. "우리 일을 못하게 할 작정입니까?" 특히 6000명이 넘는 개발자를 대상으로 하는 4일간의 컨퍼런스에서 이 질문은 기묘하게 생각되었습니다. 사실은 아직도 의아하게 생각하고 있습니다. "왜 그렇게 말합니까?" "글쎄요," 그는 계속 말했습니다. "새 COM+ UI의 경우만 봐도 그래요. 시스템 관리자가 모든 일을 할 수 있기 때문에 우리와 같은 사람은 더 이상 필요 없게 될 것입니다."

우리는 그 신사에게 그의 직업은 안전하다고 설득했습니다. 사실 그는 Windows DNA 개발자였으며 아마 이전보다 더 가치 있는 일을 하고 있을 것입니다. 우리는 여러분과 같은 시스템 관리자에게도 똑같은 확신을 심어주기 위해 이 기사를 쓰게 되었습니다. 새 COM+ UI, 더 공식적으로 말하자면 구성 요소 서비스 관리 도구는 처음 보면 압도감을 느낄 수 있습니다. 구성 요소 수준 이하나 구성 요소의 인터페이스 및 메서드 수준 이상의 특성 설정을 포함하여 할 수 있는 일이 너무 많습니다.

그러나 구성 요소 서비스 관리 도구는 이중 기능을 고려할 때 그다지 위협적이지 않으며 휠씬 다양합니다. 시스템 관리자와 응용 프로그램 개발자가 함께 사용할 수 있는 UI로 설계되었습니다. 여기에서는 이 도구의 관리 기능을 소개하고 시스템 관리자가 이 도구를 사용하면 얼마나 편리한지 간단히 보여 주겠습니다. 이 기사는 개요를 다루기 때문에 자세한 과정은 소개하지 않고 개념만 설명하겠습니다. (이 과정에 대한 자세한 내용은 구성 요소 서비스 관리 도움말을 참고하십시오.)


현재 브라우저에서 인라인 프레임을 지원하지 않을 경우 여기를 누르면 별도의 페이지에서 볼 수 있습니다.

먼저 MTS와 COM+의 몇 가지 주요 변경부터 살펴보겠습니다. 이어서 가장 일반적인 다음 세 가지 관리 작업에 구성 요소 서비스 관리 도구를 어떻게 사용하는지 설명하겠습니다.

  • 응용 프로그램 구축
  • 역할 기반 보안 설정 및 응용 프로그램의 보안 식별
  • 최적의 시스템 성능을 위한 개체 풀링 관리

MTS에서 COM+로

많은 IIS 사용자가 이미 MTS(Microsoft Transaction Server)와 MTS의 UI인 MTS Explorer에 익숙해 있습니다. COM+는 Windows 2000 시스템에서 전통적인 COM과 MTS를 결합하는 서비스로 생각할 수 있습니다. COM+의 도입과 더불어 MTS의 기능이 운영 체제로 통합되어 왔습니다. 나중에 설명하겠지만 COM+는 MTS와 함께 사용할 수 있는 서비스를 확장하고 개선합니다.

MTS와 MTS Explorer를 사용하고 있는 사람은 구성 요소 서비스 관리 도구를 시작할 때 몇 가지 중요한 변경 사실을 발견할 것입니다. 특히 MTS 패키지를 이제는 COM+ 응용 프로그램으로 부릅니다.

COM 응용 프로그램의 개념이 전혀 새로운 것은 아닙니다. 단순히 함께 작업할 수 있도록 개발된 COM 구성 요소 그룹을 언급할 때 사용되는 용어입니다. 전통적인 COM 응용 프로그램에서는 구성 요소가 실행되기 전에 레지스트리에 항목을 구성하여 설치해야 합니다. 이 작업에는 대개 Regsvr32 유틸리티가 사용됩니다. COM+에서는 구성 요소를 COM+ 응용 프로그램으로 구성하면 이 과정이 자동으로 수행됩니다. COM 구성 요소는 Windows 2000에서 여전히 Regsvr32 유틸리티를 사용하여 등록할 수 있으며 COM+ 환경에서 구성되지 않은 구성 요소로 존재할 것입니다. 구성되지 않은 구성 요소는 구성 요소 서비스 관리 도구에 표시되지 않으며 새 COM+ 서비스를 사용하지 않습니다. 그럼에도 불구하고 이 구성 요소는 실행될 때 분산 COM+ 응용 프로그램 실행을 위해 제공되는 COM+ 인프라의 일부를 사용합니다.

COM+ 응용 프로그램은 하나 이상의 COM 구성 요소로 구성되어 있습니다. COM 클래스는 이름이 지정된 하나 이상의 구체적인 인터페이스입니다. 이 클래스는 메서드라고 하는 관련 함수 집합을 제공하는 클래스의 인터페이스를 표시합니다. COM 개체는 COM 클래스의 인스턴스입니다. COM 구성 요소는 COM 개체를 생성하는 이진 단위 코드이며 패키지 작성 및 등록 코드를 포함하고 있습니다.

compl02

COM 클래스는 CLSID(때로는 ProgID)에 의해 식별됩니다. 인터페이스는 규칙을 지정하는 관련 함수들의 그룹입니다. 여기에는 이름, 인터페이스 서명, 인터페이스 의미 및 마샬링 버퍼 형식이 포함됩니다.

인터페이스는 IID에 의해 식별됩니다. 인터페이스 구문은 IDL 및/또는 형식 라이브러리에서 정의됩니다. 클래스의 인터페이스는 관리할 수 있는 관련 메서드 집합으로 구분되어야 합니다. 인터페이스는 변경할 수 없다는 점에 유의하십시오. COM 규칙에는 인터페이스를 수정할 수 없다고 나와 있습니다. 메서드 추가와 같은 모든 수정은 새 인터페이스 정의가 필요합니다.

COM+ 응용 프로그램 구축

응용 프로그램 프로그래머는 COM+를 사용하여 구성 요소를 작성하고 이 구성 요소들을 응용 프로그램으로 통합하지만, 시스템 관리자의 업무는 대개 COM+ 응용 프로그램과 구성 요소를 설치, 구축, 구성하는 일입니다. 개발자는 부분적으로 구성된 COM+ 응용 프로그램을 시스템 관리자에게 전달합니다. 또는 외부에서 응용 프로그램이 제공되는 경우도 있습니다. 예를 들어, ISV(독립 소프트웨어 공급업체)로부터 COM+ 응용 프로그램을 구입할 수 있습니다. 그런 다음 관리자는 응용 프로그램을 특정 환경에 적합하게 적용합니다(예를 들어, 역할에 사용자 계정 추가 및 응용 프로그램 클러스터에 서버 이름 추가). 일반적인 관리 작업은 다음과 같습니다.

  • 관리 시스템에 부분적으로 구성된 COM+ 응용 프로그램 설치
  • 역할 구성원 및 개체 풀 크기 등의 특정 환경에 맞는 특성 제공
  • COM+ 응용 프로그램이 실행되는 ID(Windows 2000 사용자 계정) 설정
  • 완전한 구성의 COM+ 응용 프로그램 다시 내보내기
  • 응용 프로그램 프록시 생성(응용 프로그램을 원격으로 액세스하는 경우)

응용 프로그램이 특정 환경에 맞게 완전히 구성되면 관리자는 테스트 및/또는 제작 시스템에서 응용 프로그램을 구축할 수 있습니다. 여기에는 한 대 이상의 시스템에 완전한 구성의 COM+ 응용 프로그램을 설치하는 작업이 포함됩니다.

구성 요소 서비스 관리 도구는 도구에 포함된 응용 프로그램 내보내기 마법사를 사용하여 여러 서버에서 COM+ 응용 프로그램 구축을 편리하게 합니다. 구성 요소 서비스 관리 도구를 사용하면 COM+ 응용 프로그램 및 응용 프로그램 프록시의 설치 패키지를 생성할 수 있습니다. COM+는 Windows Installer 호환 설치 패키지를 생성합니다. 이 패키지에는 다른 시스템에 COM+ 응용 프로그램을 설치하는 데 필요한 모든 기능이 하나의 파일에 들어 있습니다.

compl03

COM+ 응용 프로그램을 포함하고 있는 .msi 파일은 COM+ 1.0 Services를 지원하는 컴퓨터에서만 설치할 수 있습니다(현재는 Windows 2000에서만 가능). 추가적인 장점으로 Windows Installer를 사용하여 설치한 COM+ 응용 프로그램은 Windows Installer 저작 도구를 사용하여 .msi 파일을 수정하지 않아도 프로그램 추가/제거 제어판에 나타납니다.

구성 요소 서비스 관리 도구에 의해 생성된 .msi 파일에는 다음과 같은 항목들이 포함됩니다.

  • COM+ 등록 정보를 가진 Windows Installer 테이블
  • 응용 프로그램의 특성을 포함하고 있는 .apl 파일
  • COM+ 응용 프로그램의 클래스에 의해 구현된 인터페이스를 나타내는 DLL 및 형식 라이브러리

.msi 파일과는 별도로 구성 요소 서비스 관리 도구는 캐비닛 파일(.cab)을 생성합니다. 이 파일은 Internet Explorer를 통해 COM+ 응용 프로그램을 구축할 수 있도록 .msi 파일을 효과적으로 포장합니다.

COM+ 응용 프로그램 프록시 설치

다른 (클라이언트) 컴퓨터에서 COM+ 서버 응용 프로그램을 원격으로 액세스하기 위해서는 클라이언트 컴퓨터가 DCOM 인터페이스 원격화에 필요한 프록시/스텁 DLL 및 형식 라이브러리를 포함하여 서버 응용 프로그램 특성의 하위 집합이 설치되어 있어야 합니다. 이 하위 집합을 응용 프로그램 프록시라고 합니다.

구성 요소 서비스 관리 도구를 통해 쉽게 COM+ 서버 응용 프로그램을 응용 프로그램 프록시로 내보낼 수 있습니다. COM+에 의해 생성되는 응용 프로그램 프록시는 표준 Windows Installer 설치 패키지입니다. 설치 후에 클라이언트 컴퓨터의 프로그램 추가/제거 제어판에 응용 프로그램 프록시가 나타납니다.

응용 프로그램 프록시를 생성할 때 COM+는 자동으로 다음과 같은 정보를 제공합니다. 이 정보는 응용 프로그램 프록시가 COM+ 서버 응용 프로그램을 원격으로 액세스하는 데 필요합니다.

  • 클래스 ID 정보(CLSID 및 ProgID). 응용 프로그램 프록시는 2개까지의 ProgID를 지원합니다.
  • 응용 프로그램 ID 및 응용 프로그램과 클래스의 관계(AppID)
  • 각 응용 프로그램의 위치 정보(원격 서버 이름)
  • 응용 프로그램에 의해 표시되는 모든 인터페이스의 마샬링 정보(예: 형식 라이브러리 및 프록시/스텁)
  • MSMQ 대기열 이름 및 ID(응용 프로그램에서 대기 중인 구성 요소 서비스를 사용할 수 있는 경우)
  • 역할 정보를 제외한 클래스, 인터페이스 및 특성
  • 응용 프로그램 특성

COM+ 서버 응용 프로그램과 달리 응용 프로그램 프록시는 DCOM 및 Windows Installer를 지원하는 모든 시스템에 설치할 수 있습니다. 다른 Windows 플랫폼의 클라이언트에서도 Windows 2000 서버에서 실행되는 COM+ 응용 프로그램을 액세스할 수 있습니다. Windows 2000을 실행하지 않아서 COM+가 부족한 컴퓨터에서는 DCOM 원격화에 필요한 정보의 하위 집합만 설치됩니다. 이 정보는 Windows 레지스트리에 설치됩니다. Windows 2000을 실행하지 않는 컴퓨터에 응용 프로그램 프록시(.msi 파일)를 설치하려면 해당 시스템에서 Windows Installer가 실행되고 있어야 합니다. Windows Installer는 Platform SDK의 일부처럼 재배포가 가능합니다.

COM+ 보안 설정

보안 역할은 COM+ 응용 프로그램의 액세스 제어 정책 모델을 만들고 실행합니다. 역할은 응용 프로그램의 리소스에 대한 액세스 허용 권한을 판별하기 위해 응용 프로그램에 대해 정의되는 사용자의 범주입니다. 개발자는 구성 요소, 인터페이스, 메서드 또는 개별 응용 프로그램 리소스를 포함한 역할을 상징적인 사용자 범주로서 응용 프로그램 및 이 응용 프로그램 내의 보다 세밀한 구조에 지정합니다. 이 역할 지정은 응용 프로그램에서 항목에 대한 액세스 권한을 가진 사용자 범주를 판별하는 데 사용됩니다.

응용 프로그램이 역할 기반 보안을 사용하면 응용 프로그램을 호출할 때마다 호출 프로그램의 역할 구성원을 검사합니다. 호출 프로그램이 호출된 항목에 대한 액세스 권한을 가진 역할에 속하지 않은 경우 호출이 실패합니다. 호출 프로그램은 역할에 정의된 제약 조건에 따라 응용 프로그램 및 리소스에 대한 액세스 권한을 엄격하게 승인합니다.

시스템 관리자의 업무는 Windows 2000 사용자 계정 및 그룹을 사용하는 응용 프로그램에 대해 정의된 역할을 채우는 것입니다. 이것은 응용 프로그램의 보안 정책을 수행하는 핵심 단계입니다. 사용자는 응용 프로그램을 통해 액세스할 데이터와 리소스에 대한 관계를 올바로 나타내는 역할을 지정해야 합니다.

사용자에게 역할을 채울 때 우선적으로 사용되는 방법은 Windows 2000 그룹을 사용하는 것입니다. 먼저 사용자 계정을 적절한 그룹에 지정한 다음 그룹이 적절한 역할에 지정되었는지 확인합니다. Windows 2000 그룹을 사용하여 역할을 채우면 많은 사용자를 관리하기가 쉬워집니다.

기업 컴퓨팅 환경에서는 대개 각 사용자의 위치를 효과적으로 추적하고 이것을 어떻게 각 응용 프로그램에 대해 특정한 역할 기반 보안 정책으로 매핑할지 결정하기가 어렵습니다. 사용자와 관리자 및 응용 프로그램의 수가 많아지면 이 작업은 점점 복잡해집니다. 가장 확장성 있는 해결책은 사용자 그룹을 COM+ 응용 프로그램 역할에 지정하는 것입니다.

역할에 그룹을 지정하기 전에 응용 프로그램의 보안 정책에 대해 확실히 이해할 필요가 있습니다. 이상적으로는 "관리자"나 "출납원"과 같이 역할에 포함할 사람을 제안하는 이름을 전달해야 합니다. 또한 어떤 종류의 사용자가 역할에 포함되어야 하는지 알 수 있도록 구성 요소 서비스 관리 도구를 사용하여 액세스할 수 있는 각 역할에 대한 설명이 있어야 합니다. 그러나 어떤 사용자 그룹이 어떤 역할에 속해야 하는지 확실히 모르는 경우에는 응용 프로그램과 함께 제공되는 설명서를 참조하거나 개발자에게 확인하십시오.

compl04

구성 요소 서비스 관리 도구를 사용하여 응용 프로그램을 설치하는 동안 역할에 초기 지정을 할 수 있고 응용 프로그램이 실행되는 동안 역할 구성원에 필요한 변경을 할 수도 있습니다.

개체 풀링

개체 풀링은 COM+에서 제공되는 자동 서비스이며, 구성 요소의 인스턴스가 풀에서 계속 활성 상태를 유지하면서 모든 클라이언트에서 필요한 구성 요소를 사용할 수 있도록 구성할 수 있습니다. 풀 크기 및 생성 요청 시간 제한 값과 같은 특성을 지정하여 주어진 구성 요소에 대해 풀이 유지되도록 구성하고 모니터할 수 있습니다. 일단 응용 프로그램이 실행되면 COM+는 풀을 관리하고 개체 동작의 세부 사항을 처리하고 지정한 기준에 따라 재사용합니다.

compl05

이러한 방법으로 개체를 재사용하면 특히 개체가 재사용의 장점을 충분히 활용하도록 작성된 경우 성능이 상당히 향상되고 확장성을 높일 수 있습니다. 개체 풀링을 통해 사용 가능한 하드웨어 리소스를 충분히 활용하도록 풀링을 구성할 수 있습니다. 사용 가능한 하드웨어 리소스가 변경되면 풀 구성이 변경될 수 있습니다. 또한 풀 관리를 통해 리소스 사용을 통제할 수 있습니다.

구성 요소가 풀링되도록 구성하면 COM+는 풀에서 구성 요소의 인스턴스를 유지하면서 클라이언트에서 구성 요소를 요구하는 경우에 활성화될 수 있습니다. 모든 개체 생성 요구는 풀 관리자를 통해 처리됩니다.

응용 프로그램이 시작되면 개체 생성에 성공한 동안 지정한 최소 수준까지 풀이 채워집니다. 구성 요소에 대한 클라이언트 요청이 시작되면 먼저 요청된 순서대로 풀로부터 처리됩니다. 풀링된 개체를 사용할 수 없고 아직 지정된 최대 수준으로 풀이 지정되지 않은 경우 클라이언트에 대해 새 개체가 생성되고 활성화됩니다.

풀이 최대 수준에 도달하면 클라이언트 요청이 대기열로 들어갑니다. 각 요청에 대해 풀에서 가장 먼저 사용할 수 있는 개체가 수신됩니다. 활성 개체와 비활성 개체의 수는 모두 최대 풀 값을 초과할 수 없습니다. 개체 생성 요청은 지정된 기간이 지난 후에 만료되므로 클라이언트가 개체 생성을 기다리는 시간을 조정할 수 있습니다. COM+는 풀이 최대 수준에 도달할 때까지 가능하면 클라이언트가 릴리스한 개체를 재사용하려고 시도합니다.

최대 풀 크기를 통해 사용할 리소스의 양을 세밀하게 제어할 수 있습니다. 예를 들어, 일정 수의 데이터베이스 연결에 대한 라이센스를 받은 경우 언제든지 몇 개의 연결을 열 지 제어할 수 있습니다.

클라이언트 사용 패턴, 개체 사용 특성 및 메모리와 연결과 같은 물리적 리소스를 고려하면 성능을 조율할 때 최적의 균형을 찾을 수 있습니다. 개체 풀링은 일정 시점이 지난 후에 반환이 줄어듭니다. 필요한 성능 수준과 이 성능을 얻기 위해 필요한 리소스 사이에서 균형점을 찾을 수 있습니다. 풀링을 통해 리소스 사용을 제어할 수 있습니다.

보다 간편한 COM+ 관리

이 내용이 새 구성 요소 서비스 관리 도구의 개요를 이해하는 데 도움이 될 수 있기를 바랍니다. 또한 도구 설계를 통해 원격 컴퓨터에서 COM+ 응용 프로그램을 더 쉽게 관리할 수 있는 방법을 올바로 이해할 수 있기를 바랍니다. 많은 질문과 의견 및 다음 기사에서 원하는 내용을 보내주시기 바랍니다.

COM+에 대해 더 자세히 알고 싶은 분들을 위한 풍부한 자료가 있습니다. 특히 아래의 서적들을 추천합니다. 이 서적들은 주로 개발자를 대상으로 하고 있지만 시스템 관리자에게도 많은 도움이 됩니다.