인프라를 넘어서, Web, DB, Middle-Tier까지 클라우드 기반의 유연성을… SAV(Server Application Virtualization) 패키지 생성!

Microsoft System Center Virtual Machine Manager(SCVMM) 2012는 서버에 설치된 응용 프로그램 및 서비스도 분리해봅시다~! Server App-V in SCVMM 2012에서 언급드린 것처럼, 서버용 응용 프로그램에 대한 가상화를 제공합니다. Server App-V라고 부르는 모듈이 SCVMM 2012 베타 릴리즈에 함께 포함되어져 있습니다.

보통 응용 프로그램 가상화(App-V)라고 하는 요소는 데스크톱에서 사용하는 기술이었습니다. 응용 프로그램 가상화를 위한 응용 프로그램 패키지를 시퀀싱(Sequencing)을 통해 패키지로 생성해놓고, 사용자가 연결된 파일 확장자를 더블 클릭(FTA, File Type Association)하거나, 관련 응용 프로그램의 단축 아이콘을 클릭하여 실행(DSC, Dynamic Suite Composition)할 때, App-V 서버에 저장된 패키지가 사용자 환경으로 스트리밍(Streaming)되어 마치 프로그램이 설치된 것처럼 실행해주는 기술입니다. 관련된 자세한 내용은 Microsoft Virtualization 101를 참고하시면 더욱 이해가 빠르실 것으로 보입니다.

서버용 App-V도 클라이언트와 같은 형태로 서버용으로 제공되는 것이 아닌가? 라는 생각을 하실 수 있지만, 서버용 App-V는 클라이언트용 App-V와 다소 다른 형태로 동작합니다. 서버용 App-V는 데이터센터에서 표준화된 새 서버에 표준화된 응용 프로그램을 빠르고, 안정적인 형태로 배포할 수 있음을 주 목적으로 하고 있습니다. 정리하면 다음의 몇가지 사항이 클라이언트용 App-V와 다른 형태입니다.

  • 응용 프로그램은 스트리밍되지 않습니다. 대신 응용 프로그램은 복사되어, App-V 캐시로 로딩된 후, App-V 에이전트(PowerShell 기반)에 등록됩니다. 이러한 형태이기에 별도의 App-V 관리 서버를 필요로 하지는 않습니다. SCVMM이나 Windows Azure는 현재 PowerShell로 관리될 수 있기에, 서버용 App-V 역시 손쉽게 관리가 가능합니다. 응용 프로그램은 스트리밍되는 형태가 아니기에, 클라이언트용 App-V의 FB1(Feature Block 1)과 같은 기능은 지원되지 않습니다.
  • 응용 프로그램 설정은 OS와 분리됩니다. XML, INI, 그리고 레지스트리 설정은 구성 프로파일(XML 파일)내에 저장되며, 서버 유형에 따라 다르게 배포할 수 있습니다.
  • 파일은 특정한 파일내(Bubble이라 부릅니다. SFT 형태의 확장자를 가지고 있죠)에 저장되며, 클라이언트 App-V와 비슷하게 별도의 특정 드라이브에서 해당 Bubble을 해제하나, 클라이언트와 다르게 콘텐츠에 대한 수정 및 보기가 가능합니다.(앞서 첫번째 특징에서 복사된다고 언급)
  • 추가적인 서브 시스템, 예를 들어, IIS, SQL Server 리포팅 서비스(SSRS), COM+, 그리고 DCOM을 지원합니다. 이는 서버용 App-V에서 IIS용 웹 응용 프로그램 또는 SSRS 보고서를 호스팅할 수 있다는 것입니다. (현재 v1은 여기까지가 서버용 App-V의 대상입니다.)

서버용 App-V는 SCVMM 2012 베타 버전 설치 폴더의 SAV 폴더내에 배치되어져 있습니다.

image

x64(64비트), x86(32비트)의 폴더내에는 AgentSetup.exe, sva_cmdlets.msi, SeqSetup.exe가 있습니다. AgentSetup은 서버용 App-V 클라이언트 에이전트, sva_cmdlets는 App-V PowerShell 모듈, SeqSetup은 서버용 App-V로 제공할 응용 프로그램 패키지를 시퀀싱할 수 있는 모듈이 들어있습니다.

자, 이제 대략적인 정리가 되었습니다. 이제 그럼 IIS용 웹 응용 프로그램이나 SSRS 보고서를 어떻게 서버용 App-V를 통해 제공할지 살펴보죠. 당연히 클라이언트용처럼 응용 프로그램을 시퀀싱하는 작업이 선행되어져야 합니다. 시퀀싱이란 간단히 말해 응용 프로그램의 설치 작업 및 구성을 저장하는 일을 이야기합니다. 응용 프로그램이 설치될 때, 각종 레지스트리나 서비스, 그리고 파일 변경, 구성시 IIS 웹 사이트 생성과 같은 일들이 일어날 것인데요. 시퀀싱은 이러한 작업들을 모니터링하여, 차후 서버용 App-V 클라이언트에 동일하게 구성하는 일을 담당하게 됩니다. 이번 포스팅에서 사용할 예제 응용 프로그램을 테스트해보시려면 대상 머신에 약간의 사전 설치 절차가 필요합니다. (SCVMM 2012는 현재 베타 버전으로 아직까지 다국어를 지원하지 않습니다. 영문판에서 정상 동작하며, 한글판 OS 활용시 차후에 에러가 발생할 수도 있습니다.)

IIS 역할 설치(응용 프로그램 개발, 기본 인증, 관리 스크립트 및 도구 포함), 기능 추가를 통한 .NET 프레임워크 3.5.1, .NET 프레임워크 4.0, 그리고 IIS내 설정을 손쉽게 패키지로 만들 수 있는 WebDeploy 2.0이 필요합니다.

SeqSetup.exe를 응용 프로그램의 시퀀싱을 담당할 서버에 설치합니다. 해당 서버는 별도의 구성이 얽혀들어가지 않도록, 새롭게 설치된 머신을 사용하는 것을 권장합니다. (가상 머신을 활용하시면 좋겠죠.)

image

해당 모듈을 설치하시면, 클라이언트용처럼 응용 프로그램 설치 패키지의 파일이나 변경을 모니터링할 Q 드라이브가 생성됩니다. 설치를 완료하고, 이제 시퀀서를 실행합니다. 실행했을 경우, 새롭게 패키지를 만들 것인지, 기존 패키지를 수정할지를 결정하게 됩니다.

image

새롭게 패키지를 생성할 경우, 현재 머신의 사전 설정 체크 여부를 확인합니다. 업데이트나 설정이 시퀀서를 동작시키기에 부족할 경우, 해당 오류나 경고를 보여주어, 관리자의 수정을 요구합니다.

image

사전 체크를 통과했다면, 이제 실제 설치 패키지를 설치할 순서가 되었습니다. 해당 패키지에 파일에 대한 설치가 존재한다면, 이는 시퀀싱한 패키지를 모니터링하는 Q 드라이브를 설치 드라이브로 지정하여야 합니다. 현재 서버용 App-V를 테스트해보실 수 있는 가장 좋은 패키지는 Microsoft .NET용 웹 응용 프로그램인 PetShop 4를 이용하는 것입니다. (다운로드 링크, x64와 x86 모두 지원) 해당 패키지의 경로를 지정합니다.

image

잠시 후, PetShop 4의 설치 응용 프로그램이 시작됩니다. 데이터베이스는 차후 설정할 수 있으므로, Source Code만 Q 드라이브를 대상으로 설치합니다.

image image

설치가 완료되면, PetShop 4의 설치 화면이 종료됩니다. 만약 별도의 응용 프로그램을 사용하셨을 경우, 이후 진행해야할 설정이 없다면, “I am finished installing.” 체크 박스를 체크하신 후, 다음을 진행하면 됩니다만, PetShop 4의 경우 별도의 설정을 추가로 해야 하므로, 아직 해당 체크 박스를 체크하지 않습니다.

image

명령어 프롬프트를 하나 엽니다. PetShop 4의 소스 코드를 이용하여 ASP.NET 응용 프로그램을 생성하기 위해 Build.bat를 실행합니다.

image

웹 설정에 대한 암호화를 해제하기 위해, DecryptWebConfig.Bat를 실행합니다.

image

마지막으로, 해당 웹 응용 프로그램을 서비스할 웹 서버내 웹 사이트를 생성합니다. 앞서 2개의 배치 파일과 현재 IIS 관리 도구내에서 구성되는 작업은 모두 시퀀서에 의해서 모니터링되고 설정으로 저장됩니다. 역시나 대상 드라이브는 Q 드라이브를 활용합니다.

image

자.. PetShop 4의 기본 설정은 여기까지입니다. 이제 시퀀싱 작업시 해야할 일은 다 끝난 거죠. 다시 시퀀서로 돌아가 “I’m finished installing.” 체크 박스를 체크하고 다음을 클릭합니다. 시퀀서가 모든 작업을 다 수집하고 패키지로 만들어주는 작업을 진행합니다.

image

패키지 배포시, 반드시 실행해야 할 프로그램이나 문서가 있을 경우, 진행하게 할 수 있습니다. 이러한 경우, “Run each program to manage first use tasks”에서 관련 응용 프로그램이나 문서를 선택합니다. (PetShop의 경우엔 없음)

image

이제 시퀀싱이 완료된 응용 프로그램의 패키지를 볼 수 있으며, 배포 설정에 대한 XML 파일의 각종 설정 값을 확인할 수 있습니다. 만약 DB가 별도로 있는 경우나, 추가적인 미들 티어 등에 대한 설정등을 추가할 수 있습니다. (차후 deploymentconfig.xml 수정으로도 가능) 꼬알라의 경우엔 별도의 DB를 사용했기에 deplomentconfig.xml내 Data Source 값과 관련 DB에 인증하기 위한 User Id, Password 속성을 추가하였습니다.

image

만약 SQL DB를 로컬에 설치하고 사용하려면, Q 드라이브 PetShop 설치 폴더내 DatabaseScripts의 InstallDatabases.cmd를 실행하면 됩니다. (별도의 서버인 경우, 복사하여 구성) 추가적인 이야기를 조금 드리면, SCVMM 2012의 서비스 템플릿 배포 기능을 이용하시면 SQL 서버에 대한 구성도 DAC를 통해 만들 수 있긴 합니다. 추가적인 포스팅을 하겠습니다. 미소

완성된 패키지의 폴더 및 파일 형태입니다.

image

이제 이를 네트워크 공유를 통하거나, 복사를 통해 실제 패키징을 사용할 서버에 연결시킵니다.

image

패키징을 사용할 서버의 경우, 서버용 응용 프로그램을 시퀀싱했던 머신과 동일한 설정 상태여야 합니다. 기반이 동일해야 한다는 의미입니다. IIS 관련 설정, .NET 프레임워크 구성(3.5.1, 4.0), WebDeploy 등을 구성해야 합니다. SCVMM 2012를 이용한다면 손쉽게 할 수 있는 부분입니다. SCVMM 2012는 VM에 대한 프로비저닝시, 운영 체제의 역할이나 기능을 최초 구성(Sysprep) 단계에서 설치해줄 수 있는 기능이 추가되었습니다.

사전 준비가 완료되었다면, 대상 서버에 서버용 App-V용 클라이언트 에이전트(AgentSetup.exe)와 PowerShell Cmdlet(sav_cmdlets.msi)을 설치합니다.

image

설치가 완료되었다면, PowerShell을 실행하고, "Import-Module Microsoft.ApplicationVirtualization” cmdlet을 이용하여 관련된 cmdlet을 가져옵니다.

image

완료가 되면, IIS 관리 도구에 Q 드라이브를 가리키는 웹 사이트가 하나 생성되고, 관련된 웹 사이트 접속시 PetShop 4의 샘플 페이지를 보실 수 있습니다.

image

image

반대로 해당 패키지를 제거하신다면, Remove-AppvPackage cmdlet을 이용하면 되죠. 기존의 웹 서버의 경우 서비스를 제거하시려면, 복잡성 때문에 해당 머신부터 다시 생성하는 경우가 많았지만, 서버용 App-V를 활용하면 손쉽게 패키지 제거를 통해 예전 상태로 원복하고, 또다른 용도로 VM을 활용할 수 있습니다. 클라우드내 IaaS(Infrastructure as a Service)의 유연성이나 기민성이 매우 높아진거죠.

image

예상이 되시겠지만, 해당 App-V 패키지는 그 상태 그대로, SCVMM 2012의 라이브러리를 통해 제공할 수도 있고, 차후 Windows Azure를 통해서도 배포가 가능해질 예정입니다. 사설, 공용 클라우드를 구분없이 넘나들 수 있다는 것이죠.

image

어떠신가요? 보통 사설 클라우드(Private Cloud)를 제공하는 기술 벤더의 경우 아직까지는 IaaS에 대한 부분이 많습니다. 아무리 인프라만을 잘 구성한다 하더라도, 외부로 서비스할 무언가를 손쉽게 배포하거나, 수거할 수 없다면, 또다른 기민성 저하의 요소로 자리잡게 될 것입니다. Microsoft는 IaaS뿐만 아니라, PaaS(Platform as a Service), SaaS(Software as a Service)의 형태까지 사설 클라우드에서 유연한 관리가 가능하도록 System Center 기반의 관리 프레임워크를 강화하고 있습니다. SCVMM 2012가 그 가장 앞에 서있는 기술이기도 하고요. (여담입니다만, SCVMM 2012는 Hyper-V, VMWare, XEN 기반의 가상화를 모두 하나의 클라우드 인프라의 요소(Fabric)으로 구성할 수 있습니다.)

오늘 포스팅은 서버 구성부터 시작해서, 클라이언트대상 서버의 서비스 배포까지를 쉽게 설명드릴려고 노력하다보니, 매우 길어져 버렸네요. 시간이 되실 때, 하나하나 차분히 따라해보시면 아하~! 라고 고개가 절로 끄덕거려지시지 않을까 생각합니다. 미소